GitHub分支保护:如何按需启用Markdown Lint工作流的状态检查?
解决方案
要解决这个矛盾,核心是让Markdown Linter工作流始终触发,但仅在PR包含Markdown文件变更时执行检查逻辑,无变更时直接标记为成功。这样既能把它加入分支保护的必填状态检查,又不会影响仅修改Go文件的PR合并。
步骤1:调整Markdown Linter工作流
修改你的GitHub Actions工作流文件(比如.github/workflows/markdown-lint.yml),让它在所有PR上触发,同时通过文件变更检测决定是否执行lint:
name: Markdown Linter on: pull_request: branches: [main] # 替换为你的目标主分支 jobs: lint-md: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Detect changed Markdown files id: changed-md uses: tj-actions/changed-files@v41 with: files: | **/*.md # 可选:排除不需要检查的Markdown文件,比如: # !docs/legacy/**/*.md - name: Run Markdown Linter if: steps.changed-md.outputs.any_changed == 'true' uses: DavidAnson/markdownlint-cli2-action@v16 with: globs: "**/*.md" - name: Skip lint (no Markdown changes) if: steps.changed-md.outputs.any_changed != 'true' run: | echo "No Markdown files modified, lint check skipped" exit 0
步骤2:更新分支保护规则
- 进入项目的GitHub仓库设置 → 分支保护规则
- 找到你的主分支保护规则,在“Required status checks”中添加这个工作流的作业名称(示例中是
lint-md) - 保存规则
效果说明
- 当PR包含Markdown文件变更时:工作流会执行lint检查,必须通过才能满足分支保护要求
- 当PR仅修改Go文件时:工作流会触发,但检测到无Markdown变更后直接标记为成功,不影响Go测试通过后的合并
这种方式既保证了Markdown变更的质量检查,又避免了不必要的lint执行,同时解决了分支保护规则的冲突问题。
内容的提问来源于stack exchange,提问作者Volker Raschek
相关产品推荐
相关产品推荐

