簡體   English   中英

github 操作 - 僅當 .github/workflows/ 中的文件發生更改時才觸發工作流

[英]github action - trigger the workflow only when there is a change in files in .github/workflows/

僅當 .github/workflows/* 中的文件發生更改時,我才需要觸發 github 工作流。 如果任何其他文件發生更改,它不應觸發工作流。

例如,如果我在 Docker 文件中進行更改,則不應觸發工作流。

我的分支如下所示: 在此處輸入圖像描述

我的工作流程 yaml 看起來像這樣

on: 
  #[push]
  pull_request:
    branches:    
      - test  
    types:
      - closed
    #paths-ignore:
    #  - '.github/*'
    paths:
      - '.github/*'     

上面的 yaml 不適用於我想要的。

這里的問題是工作流觸發器配置( on字段)不能完全按照您的預期工作。

根據官方文檔

如果您指定多個事件,則只需發生其中一個事件即可觸發您的工作流程。 如果您的工作流的多個觸發事件同時發生,則會觸發多個工作流運行。

因此,在您的情況下, pull_request事件中的每個子類型都被視為一個單獨的事件,即使不滿足其他子類型的條件也會觸發工作流。

這里發生的是, test分支的任何 PR 都會觸發pull_request: branches: - test子類型,獨立於paths: - '.github/*'配置(如果分支是,則更新哪個文件無關緊要test )。

此外,通過這些配置,如果您在從另一個分支打開 PR 時更新了'.github/*'路徑,工作流也會觸發。


總結一下,使用您當前的配置:

  • open PR from branch test :將觸發工作流。
  • 從非test分支打開 PR:僅當路徑發生更改時才會觸發工作流是'.github/*'
  • 關閉任何 PR:工作流程將觸發。

如果您希望僅在特定路徑發生更改時觸發工作流,則在打開 PR 時,您應該使用:

on: 
  pull_request:
    paths:
      - '.github/workflows/*'  

(不配置任何其他事件。)

現在,如果您希望每次推送到分支時觸發工作流(例如,當您打開或更新 PR 時),您應該使用:

on: 
  push:
    paths:
      - '.github/workflows/*'  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM