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

2024-05-16 14:06:36 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

我正在使用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,因此这些错误不应该发生(就像在本地计算机上运行测试时没有发生一样)

有人知道发生了什么事吗


Tags: 文件pycoreprojecttraviscisettingsmanage
1条回答
网友
1楼 · 发布于 2024-05-16 14:06:36

问题中没有足够的信息,所以我深入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 . .,它添加所有内容)可以解决此问题


我怀疑发生了什么:

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

无论如何,重建和添加COPY . .都应该解决这个问题

相关问题 更多 >