我目前正在 this repository 上测试 Github Actions 工作流程。
我正在尝试使用 this workflow (1st
):
on:
workflow_dispatch:
jobs:
job:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: |
date > report.txt
git config user.name github-actions
git config user.email github-actions@github.com
git add .
git commit -m "generate or update report.txt file"
git push
触发 this workflow (2nd
):
on:
push:
paths:
- '**/report.txt'
pull_request:
paths:
- '**/report.txt'
jobs:
job:
runs-on: ubuntu-latest
steps:
- run: echo "Report .txt file has been updated"
我按照 Github Action Documentation 使用 Filter Pattern 实现了 2nd
工作流程。
当我在本地更新 report.txt
文件,然后提交代码并将其推送到存储库时,2nd
工作流会触发。
但是,我不明白为什么 2nd
工作流在 1st
工作流完成时没有触发,即使 report.txt
文件在默认分支上更新。< /p>
编辑: 我知道我可以使用其他触发事件类型(例如:2nd
或 repository_dispatch
)触发 workflow_run
工作流。但我正在尝试通过另一个工作流上的 git push
命令执行此操作。
我是否错过了 1st
工作流中的某些内容以使其触发 2nd
,或者我应该在 2nd
工作流中添加一些内容以使其由 {{1} } 一个?
答案 0 :(得分:1)
不,您没有遗漏工作流程中的任何内容。
您只需要一个不同的令牌。
当您使用 actions/checkout 时,它使用 GITHUB_TOKEN
进行身份验证,并且根据 documentation 它不会触发新的工作流运行:
当你使用仓库的 GITHUB_TOKEN 代表执行任务时 在 GitHub Actions 应用程序中,由 GITHUB_TOKEN 触发的事件将 不创建新的工作流运行。这可以防止您不小心 创建递归工作流运行。
要使其工作,您需要生成一个 PAT (Personal Access Token),将其存储在您的存储库机密中,并在您的结帐步骤中使用它:
- uses: actions/checkout@v2
with:
token: ${{ secrets.YOUR_PAT_TOKEN }}