PR提交后代码无审批直接部署至AWS EC2问题求助
问题排查:PR提交时自动部署至EC2无审批流程
核心问题
提交Pull Request(PR)到development分支时,代码会直接部署到AWS EC2实例,跳过审批环节,删除push触发配置后问题仍未解决。
当前Workflow配置
修改后的.github/workflows/node.js.yml内容:
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs name: Node.js CI on: pull_request: branches: [ "development" ] jobs: build: runs-on: self-hosted steps: - uses: actions/checkout@v3 # - run: fuser -k 4000/tcp & fuser -k 4001/tcp - run: yarn install - run: yarn build - run: pm2 start ecosystem.config.js
排查及解决方案
1. 触发逻辑问题根源
你的Workflow保留了pull_request触发规则,只要有PR提交到development分支,就会自动执行包含部署步骤的build任务——这就是PR提交直接部署的核心原因,既没有限制触发场景,也未添加审批环节。
2. 添加手动审批环节
要实现PR部署前需审批,需给build任务关联带审批要求的GitHub环境:
第一步:创建审批环境
- 进入仓库Settings → Environments → New environment
- 设置环境名称(如
ec2-deployment),勾选"Required reviewers"并添加需审批的人员/团队
第二步:修改Workflow配置
更新jobs.build部分,添加environment字段关联创建的环境:
jobs: build: runs-on: self-hosted environment: ec2-deployment # 关联审批环境 steps: - uses: actions/checkout@v3 # - run: fuser -k 4000/tcp & fuser -k 4001/tcp - run: yarn install - run: yarn build - run: pm2 start ecosystem.config.js
之后PR触发Workflow时,会先等待审批人确认,通过后才会执行部署步骤。
3. 限制PR触发场景(可选)
如果希望仅在PR合并后才部署,而非PR提交时就触发,可修改on.pull_request的触发条件:
on: pull_request: branches: [ "development" ] types: [ closed ] if: github.event.pull_request.merged == true
这样只有当PR合并到development分支时,才会启动部署流程,配合审批环境可实现合并前审批、合并后部署的完整流程。
4. 检查Self-hosted Runner残留配置
若修改后问题仍存在,需检查EC2上的self-hosted runner是否有残留的旧执行脚本,或是否有其他自动化工具(如crontab、第三方CI)在监听PR事件并执行部署操作。
内容的提问来源于stack exchange,提问作者Ahmed Maher
相关产品推荐
相关产品推荐

