尽管flake8测试通过了本地开发环境,Travis CI未能通过flake8测试?

问题描述 投票:0回答:1

背景

我正在使用Django,Docker,Travis CI和Flake8构建项目。我的flake8文件:

[flake8]
max-line-length = 119
exclude =
    migrations,
    __pycache__,
    manage.py,
    settings.py,
    env

[当我使用以下命令运行本地flake8测试时:

docker-compose exec app python manage.py test && flake8

我收到一条正常消息,没有错误消息。我的代码很好!

问题

当我将代码推送到自动启动Travis CI的master时,由于以下错误,导致Travis构建失败:

./project/settings.py:94:80: E501 line too long (91 > 79 characters)
./project/settings.py:97:80: E501 line too long (81 > 79 characters)
./project/settings.py:100:80: E501 line too long (82 > 79 characters)
./project/settings.py:103:80: E501 line too long (83 > 79 characters)
./core/models.py:7:80: E501 line too long (93 > 79 characters)
./core/models.py:13:80: E501 line too long (104 > 79 characters)
./core/migrations/0001_initial.py:18:80: E501 line too long (126 > 79 characters)
The command "docker-compose run app sh -c "python manage.py test && flake8"" exited with 1.

我的flake8文件特别指出最大行长为119,因此不应发生这些错误(例如在本地计算机上运行测试时不会发生)。

有人知道发生了什么吗?

python docker travis-ci flake8
1个回答
1
投票

问题中没有足够的信息,所以我深入研究了OP的github

问问题时,这是他们的dockerfile:

FROM python:3.9.0a5-alpine3.10
MAINTAINER Tom Mac

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /requirements.txt
RUN apk add --update --no-cache postgresql-client
RUN apk add --update --no-cache --virtual .tmp-build-deps \
    gcc libc-dev linux-headers postgresql-dev
RUN pip install -r /requirements.txt
RUN apk del .tmp-build-deps

RUN mkdir /app
WORKDIR /app
COPY ./app /app

RUN adduser -D user
USER user

他们的flake8配置位于其存储库根目录中的.flake8处>

由于此文件不是其图像的一部分(没有COPY将其放入其中,因此在棉绒衬里时未被尊重)>

将此文件添加到图像中(最简单的方法是COPY . .添加everything

来修复此问题]

我怀疑发生了什么:

  • Exclude .env directory from flake8 tests?中,指出flake8配置在错误的位置
  • OP可能从app/.flake8中移走了配置(在上面的图像中为[[is)]
  • OP然后:(1)这样做之后没有重建图像,或者(2)具有某种类型的本地安装设置,其中.在运行时安装到了容器中
  • 无论哪种方式,重建并添加COPY . .都可以解决此问题
© www.soinside.com 2019 - 2024. All rights reserved.