我目前正在此存储库上测试 GitHub Actions 工作流程。我正在尝试使用这个工作流程:
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
Run Code Online (Sandbox Code Playgroud)
触发此工作流程:
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"
Run Code Online (Sandbox Code Playgroud)
我按照GitHub Actions 文档使用过滤器模式实现了第二个工作流程。
当我report.txt
在本地更新文件,然后提交代码并将其推送到存储库时,第二个工作流程将触发。
但是,我不明白为什么当第一个工作流程完成时第二个工作流程不会触发,即使文件report.txt
在默认分支上更新也是如此。我是否错过了第一个工作流程中的某些内容以使其触发第二个工作流程,或者我应该在第二个工作流程中添加某些内容以使其由第一个工作流程触发?
repository_dispatch
我知道我可以使用其他触发事件类型(示例:或)触发第二个工作流程workflow_run
,但我正在尝试通过git push
另一个工作流程上的命令来执行此操作。
sol*_*tex 13
不,您没有错过工作流程中的任何内容。
您只需要一个不同的令牌。
当您使用actions/checkout时,它使用 进行GITHUB_TOKEN
身份验证,并且根据文档,它不会触发新的工作流程运行:
当您使用存储库的 GITHUB_TOKEN 代表 GitHub Actions 应用程序执行任务时,GITHUB_TOKEN 触发的事件不会创建新的工作流程运行。这可以防止您意外创建递归工作流运行。
为了使其工作,您需要生成一个PAT(个人访问令牌),将其存储在您的存储库机密中,并在结账步骤中使用它:
- uses: actions/checkout@v2
with:
token: ${{ secrets.YOUR_PAT_TOKEN }}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3944 次 |
最近记录: |