iT邦幫忙

2024 iThome 鐵人賽

DAY 14
2
DevOps

菜逼八用Github Actions系列 第 14

Day14 - 撰寫第一個workflow的前置工作

  • 分享至 

  • xImage
  •  

目錄

摘要

在上一篇我們認識了一些方便撰寫 workflow 的現成 actions

這篇我們會來做撰寫 workflow 前的前置作業,下一篇則會來利用前面所學寫一個簡單 workflow

開始撰寫 workflow 前的前置作業

首先要在Github上建立repo,並在裡面創.github/workflows資料夾

接下來就是設定權限,設定權限有兩種方式,以下擇一即可

設定personal token的workflow權限

去 develop setting 建立有 workflow 權限的 token

https://ithelp.ithome.com.tw/upload/images/20240825/20135568coS2YjSTvX.png
https://ithelp.ithome.com.tw/upload/images/20240825/20135568wf5CbPvW0V.png
https://ithelp.ithome.com.tw/upload/images/20240825/2013556810WUhiFJ0U.png
https://ithelp.ithome.com.tw/upload/images/20240825/20135568p4gHyxLFNj.png

把剛剛的 token 貼上

Windows 的話,貼到憑證管理員

憑證管理員

貼上personal token

MacOS 的話,貼到 Key chain

mac keychain 1-2

mac keychain 2

設定repo的workflow權限

去 repo 的 setting 設定 workflow 權限

repo setting

repo action permission setting

如果沒有完成以上設定的話當你試圖把.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 permission

根據 Workflow permissions 選擇的選項(上個段落的步驟 2b)會給予 GITHUB_TOKEN 不同的預設權限

  • Read and write permissions

    • permissive
    • 預設給 GITHUB_TOKEN 所有 scope 的 read、write 權限
  • Read repository contents and packages permissions

    • restricted
    • 預設給 GITHUB_TOKEN content 和 package 這兩個 scope 的 read 權限

更詳細的權限可以看Permissions for the GITHUB_TOKEN

不過,不管選擇哪個選項,仍然可以在 workflow 中透過permissions來對該 workflow、其底下的 job 的權限進行調整

permissions:
  id-token: write

GITHUB_TOKEN是什麼

在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取得


上一篇
Day 13 - 來逛GitHub Actions Marketplace
下一篇
Day 15 - 簡單例子 - 幫PR上標籤
系列文
菜逼八用Github Actions30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言