我有一個 GitHub 專案,這個專案配置了僅需要在源倉庫才能執行的 Action 如推送 NuGet 等發布動作,如何在 Action 里面設定讓 Fork 的倉庫不執行 Action 的步驟
想要設定 Action 不在 Fork 的倉庫執行,只需要添加 if 判斷,判斷當前執行的倉庫和設定的相同,即可執行,否則不執行
在 GitHub 的 Action 的判斷使用 if 方法,條件可以是判斷 repository 或 repository_owner 的內容
如使用下面代碼判斷,讓構建步驟僅在 lindexi/doubi 倉庫執行
- name: Build with dotnet
run: dotnet build --configuration Release
if: github.repository == 'lindexi/doubi'
上面的 lindexi/doubi 的意思就是 用戶名或組織名/專案名 這就會跟隨用戶的 Fork 倉庫修改值,也就是小伙伴 frendguo 他 fork 了我的倉庫,那么在他倉庫里面執行的 action 拿到的 github.repository 的值是 frendguo/doubi 也就是判斷邏輯不通過
判斷不僅可以放在步驟里面,還可以寫在 job 里面,讓整個 job 都需要通過某個條件
jobs:
build:
runs-on: windows-latest
if: github.repository == 'lindexi/doubi'
上面代碼設定了只有在 lindexi 的 doubi 倉庫才進行 build 這個 job 內容
當然上面代碼寫起來是針對倉庫,不利于相同的一個組織內的復制粘貼代碼,也就是我將代碼粘貼到相同的組織里面的另一個倉庫,可以看到另一個倉庫是跑不起來的,因為倉庫名不相同,此時可以嘗試使用 repository_owner 這個值替換,請看代碼
if: github.repository_owner == 'lindexi'
上面代碼判斷的是只要擁有者是 lindexi 就執行,這里的 repository_owner 的值可以是用戶也可以是組織,具體和倉庫所在的擁有者相關
如果自己只是 fork 對方的倉庫,改不動對方的代碼,可以自己禁用 Action 請看 GitHub 的 Action 如何禁用
更多請看 GitHub 操作的作業流程語法 - GitHub 幫助
Context and expression syntax for GitHub Actions - GitHub Help
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/5117.html
標籤:其他
上一篇:有些話想對自己說
