推送事件不会触发推送路径上的工作流(github 操作)

Posted

技术标签:

【中文标题】推送事件不会触发推送路径上的工作流(github 操作)【英文标题】:Push event doesn't trigger workflow on push paths (github actions) 【发布时间】:2021-08-05 14:18:36 【问题描述】:

我目前正在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 工作流将触发。

但是,我不明白为什么1st 工作流完成后2nd 工作流不会触发,即使report.txt 文件在默认分支上更新。

编辑: 我知道我可以使用其他触发事件类型(例如:repository_dispatchworkflow_run)触发2nd 工作流。但我正在尝试通过另一个工作流程上的git push 命令来实现。

问题

我是否错过了1st 工作流中的某些内容以使其触发2nd,或者我是否应该在2nd 工作流中添加某些内容以使其由1st 触发?

【问题讨论】:

感谢您的 cmets 解决了这个问题,所以我想我会说谢谢 没问题!我很高兴它有所帮助:D 【参考方案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 

【讨论】:

解决了!谢谢:D 我错过了关于 GITHUB_TOKEN 没有触发新的工作流程运行的观点。

以上是关于推送事件不会触发推送路径上的工作流(github 操作)的主要内容,如果未能解决你的问题,请参考以下文章

在GitHub推送时不会触发Jenkins管道作业

github webhook 是如何工作的?

当应用程序暂停时,WNS 推送通知永远不会触发 Activated 事件

如何使用 BigQuery 计算 GitHub 上的推送事件?

当应用程序打开或应用程序处于后台时,Phonegap Firebase 推送通知不会触发事件侦听器

如何在推送事件中跳过 GitHub Actions 作业?