为何Workflow A推送文件到branch_b后Workflow B未触发?
问题
我的仓库包含三个分支:master(默认分支)、branch_a、branch_b。我在branch_a分支中配置了一个名为CD的工作流,该工作流会创建test2.txt文件并将其提交推送到branch_b,工作流代码如下:
name: CD on: push: branches: - branch_a jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Create and push build branch env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | git config --global user.email "myemail" git config --global user.name "myusername" # Create a simple text file echo "This is a test file." > test2.txt # Commit and push changes to branch_b git fetch origin branch_b git checkout branch_b # Switch to branch_b git add test2.txt git commit -m "Add test file" git push origin branch_b
同时,我在branch_b分支中创建了另一个名为Workflow B的工作流,代码如下:
name: Workflow B on: push: branches: - branch_b jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Output run: echo "Workflow on branch_b triggered"
我已确认test2.txt成功推送到branch_b,但Workflow B并未在CD工作流完成后触发,请问可能的原因是什么?
可能的原因
- GITHUB_TOKEN 默认行为限制:工作流中使用的
${{ secrets.GITHUB_TOKEN }}是GitHub自动生成的令牌,默认规则下,用这个令牌发起的推送操作不会触发任何仓库内的工作流运行,目的是避免循环触发。这是最常见的原因,你的CD工作流正是用这个令牌推送到branch_b,所以不会触发Workflow B。 - Workflow B配置文件未被识别:如果Workflow B的配置文件(位于
.github/workflows/目录下)是在CD工作流推送之后才添加到branch_b的,那之前的推送不会触发它;或者配置文件的文件名不符合要求(比如没有.yml或.yaml后缀),导致GitHub未识别到这个工作流。 - 分支触发规则配置错误:仔细检查Workflow B的
on.push.branches配置,确认分支名称拼写完全匹配(比如是否大小写错误、多打/漏打字符),如果分支名称不匹配,推送事件不会触发工作流。 - 仓库工作流权限设置限制:如果仓库的Actions权限设置中,限制了工作流触发的范围,或者禁用了某些事件类型,可能导致Workflow B无法被触发。可以在仓库设置的Actions选项中检查相关权限。
内容的提问来源于stack exchange,提问作者Atit Bimali
相关产品推荐
相关产品推荐

