如何在GitHub上配置Super Linter适配所有PR目标分支
问题
我在GitHub上配置了一个PR创建时检查代码linting错误的工作流文件,但它仅针对单个分支(即branch_name),每次新增分支都需要修改分支名。如何配置使其适配当前PR所指向的分支?我尝试过使用通配符进行模式匹配,但并未生效。当前工作流代码如下:
name: Lint Code Base on: pull_request: branches: [branch_name] jobs: build: name: Lint Code Base runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 with: fetch-depth: 0 - name: Lint Code Base uses: github/super-linter@v4 env: VALIDATE_ALL_CODEBASE: false DEFAULT_BRANCH: branch_name GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} DISABLE_ERRORS: true PYTHON_FLAKE8_CONFIG_FILE: .flake8 VALIDATE_PYTHON_FLAKE8: true
解决方案
要让工作流适配任意PR指向的目标分支,只需修改两处配置:
- 调整触发条件:将
on.pull_request.branches的值改为通配符['*'],或者直接省略branches字段(pull_request事件默认会对所有目标分支的PR触发),这样所有分支的PR都会触发lint检查,无需手动更新分支名。 - 动态获取目标分支:将
DEFAULT_BRANCH的固定值替换为GitHub Actions内置环境变量${{ github.base_ref }},该变量会自动获取当前PR所指向的目标分支名称,让super-linter基于正确分支做对比检查。
修改后的完整工作流代码:
name: Lint Code Base on: pull_request: branches: ['*'] # 匹配所有目标分支的PR,也可直接省略这一行 jobs: build: name: Lint Code Base runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 with: fetch-depth: 0 - name: Lint Code Base uses: github/super-linter@v4 env: VALIDATE_ALL_CODEBASE: false DEFAULT_BRANCH: ${{ github.base_ref }} # 动态获取PR目标分支 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} DISABLE_ERRORS: true PYTHON_FLAKE8_CONFIG_FILE: .flake8 VALIDATE_PYTHON_FLAKE8: true
补充说明
如果仓库有特定分支命名规则(比如仅对feature/*或release/*分支的PR触发),可将通配符改为对应模式,例如branches: ['feature/*', 'release/*'],既灵活又能过滤不必要的PR触发。github.base_ref是GitHub Actions专为pull_request事件提供的环境变量,仅在PR触发的工作流中有效,能准确获取PR的目标分支名。
内容的提问来源于stack exchange,提问作者Syed
相关产品推荐
相关产品推荐

