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

Python Travis CI未能通过flake8测试,尽管本地开发环境通过了flake8测试? 背景,python,docker,travis-ci,flake8,Python,Docker,Travis Ci,Flake8,我正在使用Django、Docker、Travis CI和Flake 8构建一个项目。我的flake8文件: [flake8] max-line-length = 119 exclude = migrations, __pycache__, manage.py, settings.py, env 当我运行本地flake8测试时,使用: docker-compose exec app python manage.py test && fla

我正在使用Django、Docker、Travis CI和Flake 8构建一个项目。我的flake8文件:

[flake8]
max-line-length = 119
exclude =
    migrations,
    __pycache__,
    manage.py,
    settings.py,
    env
当我运行本地flake8测试时,使用:

docker-compose exec app python manage.py test && flake8
我收到一条确认消息,没有错误消息。我的代码很好

问题 当我将代码推送到master(自动启动Travis CI)时,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,因此这些错误不应该发生(就像在本地计算机上运行测试时没有发生一样)


有人知道发生了什么事吗?

问题中没有足够的信息,所以我去挖掘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

由于此文件不是其图像的一部分(没有任何内容将其复制),因此在进行linting时不尊重此文件

将此文件添加到图像中(最简单的方法是
COPY..
这将添加所有内容)可以修复此问题


我怀疑发生了什么:

  • 在报告中指出,flake8配置位于错误的位置
  • OP可能将配置从
    app/.flake8
    (如上图所示)
  • 然后,操作:(1)执行此操作后未重建映像,或者(2)具有某种类型的本地装载设置,其中运行时将
    装载到容器中

无论哪种方式,都可以重建和添加
COPY
应该会解决这个问题,因为问题中没有足够的信息,所以我深入研究了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

由于此文件不是其图像的一部分(没有任何内容将其复制),因此在进行linting时不尊重此文件

将此文件添加到图像中(最简单的方法是
COPY..
这将添加所有内容)可以修复此问题


我怀疑发生了什么:

  • 在报告中指出,flake8配置位于错误的位置
  • OP可能将配置从
    app/.flake8
    (如上图所示)
  • 然后,操作:(1)执行此操作后未重建映像,或者(2)具有某种类型的本地装载设置,其中运行时将
    装载到容器中

无论哪种方式,都可以重建和添加
COPY应解决此问题

此问题是否与其他问题相同?不,这是另一个问题吗?嗯,你能展示一下你的存储库的布局吗?如果它是开源的,也许还有一个指向它的链接吗?如果是这个,那是因为你从来没有将flake8配置复制到你的映像中:(如果你在本地重建,你应该会看到相同的问题)嗨,Anthony,很抱歉,我在你发表评论时没有收到通知!你是对的。我在本地没有遇到相同的问题,我想是因为我在flake8文件中设置了最大行长度=119,这个问题与您的其他问题相同吗?不,这是另一个问题吗?嗯,你能展示一下你的存储库的布局吗?如果它是开源的,也许还有一个指向它的链接吗?如果是这个,那是因为你从来没有将flake8配置复制到你的映像中:(如果你在本地重建,你应该会看到相同的问题)嗨,Anthony,很抱歉,我在你发表评论时没有收到通知!你是对的。我在本地没有遇到同样的问题,因为我在flake8文件中设置了maximum max line length=119