为什么配置了对应分支触发规则的GitHub Workflow会同时运行两个流程
问题根源
你的工作流配置中,branches 分支过滤规则仅绑定了workflow_dispatch(手动触发)事件,未对push(代码推送)事件做分支限制,因此只要有任意分支的代码推送,两个工作流都会被触发。
错误配置说明
你当前的on字段写法如下,以develop.yml为例:
on: push: # 此处未配置任何分支限制,所有分支推送都会触发该事件 workflow_dispatch: branches: - develop # 这里的分支限制仅对手动触发场景生效
生产环境的production.yml存在完全相同的配置错误,push事件未绑定master分支过滤。
修正方案
给push事件也加上对应的分支限制即可,正确配置示例如下:
修正后的develop.yml
name: Develop on: push: branches: - develop workflow_dispatch: branches: - develop jobs: perform-linting: runs-on: windows-latest steps: - name: Checkout repository code uses: actions/checkout@v2 - name: Setup node uses: actions/setup-node@v2 with: node-version: "14.x" - name: Install base dependencies run: npm install - name: Bootstrap run: lerna bootstrap - name: Run ESLint run: lerna run lint
修正后的production.yml
name: Production on: push: branches: - master workflow_dispatch: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout repo code uses: actions/checkout@v2 - name: Deploy to Heroku uses: akhileshns/heroku-deploy@v3.12.12 with: heroku_api_key: ${{secrets.HEROKU_API_KEY}} heroku_app_name: ${{secrets.HEROKU_APP_NAME}} heroku_email: ${{secrets.HEROKU_EMAIL}}
修改后只有对应分支的推送才会触发对应工作流,手动触发也仅能在指定分支操作。
内容的提问来源于stack exchange,提问作者ThePerplexedOne
相关产品推荐
相关产品推荐

