GitHub 的 Action 判斷僅在主倉庫才執行腳本

我有一個 GitHub 項目,這個項目配置了僅須要在源倉庫才能執行的 Action 如推送 NuGet 等發佈動做。如何在 Action 裏面設置讓 Fork 的倉庫不執行 Action 的步驟html

想要設置 Action 不在 Fork 的倉庫執行,只須要添加 if 判斷,判斷當前執行的倉庫和設置的相同,便可執行,不然不執行git

在 GitHub 的 Action 的判斷使用 if 方法,條件能夠是判斷 repositoryrepository_owner 的內容github

如使用下面代碼判斷,讓構建步驟僅在 lindexi/doubi 倉庫執行express

- name: Build with dotnet
      run: dotnet build --configuration Release
      if: github.repository == 'lindexi/doubi'

上面的 lindexi/doubi 的意思就是 用戶名或組織名/項目名 這就會跟隨用戶的 Fork 倉庫修改值。也就是小夥伴 frendguo 他 fork 了個人倉庫,那麼在他倉庫裏面執行的 action 拿到的 github.repository 的值是 frendguo/doubi 也就是判斷邏輯不經過windows

判斷不只能夠放在步驟裏面,還能夠寫在 job 裏面,讓整個 job 都須要經過某個條件post

jobs:
  build:
    runs-on: windows-latest
    if: github.repository == 'lindexi/doubi'

上面代碼設置了只有在 lindexi 的 doubi 倉庫才進行 build 這個 job 內容ui

固然上面代碼寫起來是針對倉庫,不利於相同的一個組織內的複製粘貼代碼。也就是我將代碼粘貼到相同的組織裏面的另外一個倉庫,能夠看到另外一個倉庫是跑不起來的,由於倉庫名不相同,此時能夠嘗試使用 repository_owner 這個值替換,請看代碼code

if: github.repository_owner == 'lindexi'

上面代碼判斷的是隻要擁有者是 lindexi 就執行。這裏的 repository_owner 的值能夠是用戶也能夠是組織,具體和倉庫所在的擁有者相關htm

若是本身只是 fork 對方的倉庫,改不動對方的代碼,能夠本身禁用 Action 請看 GitHub 的 Action 如何禁用blog

更多請看 GitHub 操做的工做流程語法 - GitHub 幫助

Context and expression syntax for GitHub Actions - GitHub Help

相關文章
相關標籤/搜索