我有一個 GitHub 項目,這個項目配置了僅須要在源倉庫才能執行的 Action 如推送 NuGet 等發佈動做。如何在 Action 裏面設置讓 Fork 的倉庫不執行 Action 的步驟html
想要設置 Action 不在 Fork 的倉庫執行,只須要添加 if 判斷,判斷當前執行的倉庫和設置的相同,便可執行,不然不執行git
在 GitHub 的 Action 的判斷使用 if
方法,條件能夠是判斷 repository
或 repository_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