GitHub Action部署工作流触发异常,需调整匹配预期部署规则
GitHub Action工作流触发异常修复
问题背景
需要实现的部署逻辑:
- 推送代码到
development分支 → 部署测试环境 - 向
main分支提交Pull Request → 部署生产环境
当前配置下,推送代码到development分支时会同时触发main.yml和staging.yml两个工作流,不符合预期。
问题原因
当向development分支推送代码时,如果当前存在从development到main的Pull Request,GitHub会触发pull_request的synchronize事件(同步PR内容),因此同时触发了:
staging.yml:由push到development分支触发main.yml:由PR同步事件触发
修改后的配置
main.yml
添加types: [opened]限制触发时机,仅在创建针对main的PR时执行生产环境部署,避免源分支更新时误触发:
on: pull_request: branches: - main types: [opened] # 仅响应PR创建事件,排除同步更新 name: Deployment on pull-request opened to main jobs: web-deploy: # 修正拼写错误:depoly → deploy name: Deploy to Production runs-on: ubuntu-latest steps: - name: Get latest code uses: actions/checkout@v2.3.2 - name: Sync files to production uses: SamKirkland/FTP-Deploy-Action@4.0.0 with: server: myside.com username: ${{ secrets.FTP_USERNAME }} password: ${{ secrets.FTP_PASSWORD }} server-dir: /production.myside.com/
staging.yml
修正名称拼写错误,保持原有触发逻辑不变:
on: push: branches: - development name: Deployment on push to development jobs: web-deploy: # 修正拼写错误:depoly → deploy name: Deploy to Staging runs-on: ubuntu-latest steps: - name: Get latest code uses: actions/checkout@v2.3.2 - name: Sync files to staging uses: SamKirkland/FTP-Deploy-Action@4.0.0 with: server: myside.com username: ${{ secrets.FTP_USERNAME }} password: ${{ secrets.FTP_PASSWORD }} server-dir: /staging.myside.com/
可选调整(若需求为PR合并后部署)
如果你的真实需求是当PR合并到main分支时才部署生产环境,将main.yml的触发条件改为push到main分支即可:
on: push: branches: - main name: Deployment on push to main jobs: web-deploy: name: Deploy to Production runs-on: ubuntu-latest steps: # 步骤同上
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

