如何过滤GitHub Actions中Workflow Dispatch的“Use workflow from”分支选项?
GitHub Actions生产环境部署分支筛选方案
方案1:用分支规则+工作流条件间接限制
GitHub Actions没法直接修改默认的「Use workflow from」下拉框,但可以通过以下方式实现类似筛选的效果:
- 先去仓库「Settings」→「Branches」里给
master和release/**分支加保护规则(按需配置审核、状态检查等),避免无关分支被误操作。 - 在生产部署的工作流文件(比如
.github/workflows/prod-deploy.yml)里加触发条件,确保只有指定分支能执行部署:
on: workflow_dispatch: push: branches: - master - 'release/**' jobs: prod-deploy: runs-on: ubuntu-latest # 手动触发时,强制校验分支是否符合要求 if: startsWith(github.ref, 'refs/heads/master') || startsWith(github.ref, 'refs/heads/release/') steps: - name: 拉取代码 uses: actions/checkout@v4 # 这里写你的部署步骤
就算有人从其他分支手动触发工作流,也会因为分支不符合条件直接跳过部署,相当于实现了筛选效果。
方案2:自定义分支选择输入框(更直接)
直接绕开默认的分支选择下拉框,自己定义一个只显示允许分支的输入选项:
在工作流文件里添加自定义输入,把允许的分支列出来:
on: workflow_dispatch: inputs: target_branch: description: '选择要部署的分支' required: true type: choice options: - master - release/v1.x - release/v2.x # 可以根据你的版本规则添加更多release分支 jobs: prod-deploy: runs-on: ubuntu-latest steps: - name: 拉选指定分支代码 uses: actions/checkout@v4 with: ref: ${{ github.event.inputs.target_branch }} # 后续部署步骤...
这种方式用户只能选你预设的分支,完全不会出现不符合要求的选项。如果需要自动获取所有release/**分支,可以结合GitHub API动态生成选项,但手动维护选项对大多数场景来说更简单。
内容的提问来源于stack exchange,提问作者MAK Ripon
相关产品推荐
相关产品推荐

