首页 > 解决方案 > 使用 flake8 的 Gitlab CI 退出代码 1

问题描述

我不明白为什么 Job 在 gitlab CI 中以退出代码 1 结束。如果我不使用 flake8(f.ex 运行脚本行echo "hello world" > $FOLDER_NAME/my_test.txt)一切都很好。但我看到 flake8 在目录中发现错误:

...
$ mkdir -p $FOLDER_NAME
$ flake8 --max-line-length=120 --ignore=W605,W504 --tee --output-file=$FOLDER_NAME/$LOG_NAME $CHECKING_FOLDER
./framework/tests/test_5_helper.py:30:30: W292 no newline at end of file
./framework/tests/test_1_start.py:2:1: F401 'pprint.pprint' imported but unused
Cleaning up file based variables
00:00
ERROR: Job failed: exit code 1

yml 文件:

stages:
  - check


pep8_check:
    stage: check
    image: python:3.8-alpine
    variables:
      FOLDER_NAME: 'logs'
      LOG_NAME: 'linter.log'
      CHECKING_FOLDER: './framework/tests'
    when: always
    before_script:
      - python -m pip install --upgrade pip
      - pip install flake8
      - export
      - mkdir -p $FOLDER_NAME
    script:
        - flake8 --max-line-length=120 --ignore=W605,W504 --tee --output-file=$FOLDER_NAME/$LOG_NAME $CHECKING_FOLDER
    artifacts:
      expire_in: 7 days
      paths:
        - $FOLDER_NAME/

标签: python-3.xgitlab-ciflake8

解决方案


Flake8 发现 2 个错误,因此以 1 退出,这使得 GitLab 管道失败。

你有几个选择:

  • 如果您希望 GitLab 忽略flake8可能发现的任何错误,则只需添加参数--exit-zero,这将flake8退出,0从而使 GitLab 管道成功
  • 如果您想从输出中忽略这些特定错误:
./framework/tests/test_5_helper.py:30:30: W292 no newline at end of file
./framework/tests/test_1_start.py:2:1: F401 'pprint.pprint' imported but unused

那么您只需像为其他人所做的那样将它们添加到忽略列表中:

把这个改成--ignore=W605,W504这个--ignore=W605,W504,W292,F401

  • 您还可以去“修复/修改/更改”您的代码,以便flake8在解析源代码时停止标记这些行

无论如何,阅读帮助flake8 --help可能会提供更多关于如何解决这些极端情况的想法,具体取决于您想要实现的目标。

另请参阅此处的错误/警告/违规代码列表E***, W***, F***:


推荐阅读