在上一篇我們認識了一些方便撰寫 workflow 的現成 actions
這篇我們會來做撰寫 workflow 前的前置作業,下一篇則會來利用前面所學寫一個簡單 workflow
首先要在Github上建立repo,並在裡面創.github/workflows資料夾
接下來就是設定權限,設定權限有兩種方式,以下擇一即可
去 develop setting 建立有 workflow 權限的 token
把剛剛的 token 貼上
Windows 的話,貼到憑證管理員
MacOS 的話,貼到 Key chain
去 repo 的 setting 設定 workflow 權限
如果沒有完成以上設定的話當你試圖把.github/workflows/test.yml 推到遠端時,就會報錯 "![remote rejected] master -> master (refusing to allow an OAuth App to create or update workflow .github/workflows/test.yaml without workflow scope)"
根據 Workflow permissions 選擇
的選項(上個段落的步驟 2b)會給予 GITHUB_TOKEN 不同的預設權限
Read and write permissions
Read repository contents and packages permissions
更詳細的權限可以看Permissions for the GITHUB_TOKEN
不過,不管選擇哪個選項,仍然可以在 workflow 中透過permissions
來對該 workflow、其底下的 job 的權限進行調整
permissions:
id-token: write
在workflow開始時,GitHub 會自動建立一個一次性
的名為 GITHUB_TOKEN 的secret
來在workflow中使用
GITHUB_TOKEN 在workflow中的角色就是通行證,透過它可以通過Github Actions
這個Github App的身份驗證
,如此一來就可以使用workflow
了
所以說上一段提到的報錯的"refusing to allow an OAuth App to create or update workflow"中的OAuth App指的就是Github Actions App
你可以能會想這個Github Actions App是哪來的。只要repo中有.github/workflows/*.yml就會自動安裝,不過並不會列在repo setting的Github Apps區塊
另外如果你需要串接Github API也會需要使用到GITHUB_TOKEN,可以透過 github.token context取得