如何在GitHub Actions中让black和flake8排除Django迁移文件
在GitHub Actions中让black和flake8排除Django迁移文件
问题分析
从运行输出能看到,black正在检查并试图格式化Django迁移文件,导致Action执行失败;flake8虽已配置排除规则,需确认其是否正常生效。以下是针对两者的具体解决方案:
解决步骤
1. 确保flake8排除迁移文件
你在.flake8中配置的exclude = */migrations/*是正确的,当前GitHub Actions中的flake8命令未覆盖该规则,会自动读取配置文件。如果后续发现flake8仍检查迁移文件,可在命令中显式添加排除参数:
# 语法检查命令(存在错误则终止构建) flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude=*/migrations/* # 警告级检查命令(所有错误视为警告) flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics --exclude=*/migrations/*
2. 配置black排除迁移文件
Black支持两种设置排除规则的方式,推荐用配置文件统一管理:
方法一:使用pyproject.toml(推荐)
在项目根目录创建或修改pyproject.toml,添加Black的配置:
[tool.black] exclude = ''' /( migrations )/ '''
该配置会让Black自动跳过所有migrations目录下的文件,无需在命令行重复设置。
方法二:直接修改GitHub Actions中的Black步骤
若不想新增配置文件,可在Action的Black步骤里添加--exclude参数:
- uses: psf/black@stable with: options: --check --diff --exclude='*/migrations/*' src: . jupyter: false
最终的GitHub Actions配置示例
调整后的完整linting步骤:
linting: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: psf/black@stable with: options: --check --diff --exclude='*/migrations/*' src: . jupyter: false - name: Install dependencies run: pip install flake8 - name: Lint with flake8 run: | # 若存在Python语法错误或未定义名称则终止构建 flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # 将所有错误视为警告,适配GitHub编辑器的127字符宽度 flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
提交修改后重新触发Action,Black就会跳过迁移文件,不会再因这些文件的格式问题导致执行失败。
内容的提问来源于stack exchange,提问作者Benjamin Geoffrey
相关产品推荐
相关产品推荐

