如何配置GitHub Actions仅对deploy-build作业启用环境审批?
解决办法
核心问题是你给三个作业都绑定了开启审批的DEV环境,所以每个作业都会触发审批流程。要实现仅deploy-build需要审批,只需要调整作业的环境绑定策略即可,有两种常见方案:
方案一:仅给部署作业绑定需要审批的环境
直接移除build-latest和unit-tests-and-cdknag-execution作业的environment配置,只保留deploy-build的环境绑定。这样前两个作业会直接运行,只有部署环节会触发DEV环境的审批。
修改后的工作流示例:
name: .NET Lambda Deployment on: pull_request: branches: [ dev ] types: [ closed ] jobs: build-latest: runs-on: ubuntu-latest # 移除environment配置,直接运行 steps: - name: Checkout code uses: actions/checkout@v4 # 其他构建步骤... unit-tests-and-cdknag-execution: runs-on: ubuntu-latest # 移除environment配置,直接运行 needs: [build-latest] steps: - name: Checkout code uses: actions/checkout@v4 # 其他测试步骤... deploy-build: runs-on: ubuntu-latest environment: DEV # 仅该作业绑定需要审批的环境 needs: [build-latest, unit-tests-and-cdknag-execution] steps: - name: Checkout code uses: actions/checkout@v4 # 其他部署步骤...
方案二:拆分环境,给非部署作业用无审批环境
如果前两个作业需要使用环境变量或环境相关配置,但不想触发审批,可以在GitHub仓库的「Settings -> Environments」中创建一个新环境(比如DEV-build),不要开启审批,然后让build-latest和unit-tests-and-cdknag-execution绑定这个新环境,deploy-build继续绑定带审批的DEV环境。
修改后的工作流示例:
name: .NET Lambda Deployment on: pull_request: branches: [ dev ] types: [ closed ] jobs: build-latest: runs-on: ubuntu-latest environment: DEV-build # 绑定无审批的构建环境 steps: - name: Checkout code uses: actions/checkout@v4 # 其他构建步骤... unit-tests-and-cdknag-execution: runs-on: ubuntu-latest environment: DEV-build # 绑定无审批的构建环境 needs: [build-latest] steps: - name: Checkout code uses: actions/checkout@v4 # 其他测试步骤... deploy-build: runs-on: ubuntu-latest environment: DEV # 绑定带审批的部署环境 needs: [build-latest, unit-tests-and-cdknag-execution] steps: - name: Checkout code uses: actions/checkout@v4 # 其他部署步骤...
注意事项
- 如果原来的
DEV环境有作业需要的变量/密钥,方案一中可以将这些配置移到仓库级别的「Secrets and variables -> Actions」中,或者方案二中复制到新创建的DEV-build环境里。 - 确保
deploy-build作业通过needs字段依赖前两个作业,这样只有前两个作业成功完成后,才会触发部署的审批流程。
内容的提问来源于stack exchange,提问作者user20358
相关产品推荐
相关产品推荐

