0%

[GitHub Actions] 學習重點節錄(4) - Cache、Artifact、版本號管理 & Semantic Versioning 的運用搭配

Cache & Artifacts

Cache

  • 利用 cache 可以將特定的檔案(例如:nodejs modules)存入 cache,在下一次 workflow 執行時就可以不用重複下載之前已經下載過的套件

  • 必須搭配 actions/cache 使用

  • 可以參考 actions/cache repository 中的範例,裡面有各種程式語言的範例可以參考使用

artifact

  • 通常用來存放程式建置打包(build)後出來的檔案,需要透過 actions/upload-artifact 進行上傳

  • 上傳後就可以在每個 action 中看到 artifact 可以被下載

Semantic Versioning & Conventional Commits

Conventional Commits

  • Conventional Commits 則是可以透過固定格式的 commit message,來自動產生版本號、release node … 等這一類的資訊,甚至是關閉指定的 issue

  • 詳細的用法可以參考 Conventional Commits 網站的說明

自動化產生版本號 & Release Note

  • 透過 semantic-release 工具,搭配上面提到的 Conventional Commits,可以全自動進行版本號的管理 & 套件的發佈

  • 若要自動檢查 commit 是否有符合預先制定好的規則,可以使用 commitlnt 這個工具來完成

  • Commitizen 則是一款協助用的工具,可以透過互動的方式,在 commit 過程中透過問答的方式填寫完所有需要的資訊

其他注意事項

trigger workflow in another workflow

  • 無法在一個 workflow 中透過 ${{ secret.GITHUB_TOKEN }} 去觸發另外一個 workflow(例如:CI workflow 中有發布 release,而有另外一個 release workflow 則用來送通知)

  • 若需要達成上面觸發另外一個 workflow 的效果,需要新增到 Developer settings 新增一個 Personal access token 來作為發布 release 用的 token,如此一來另外一個 workflow 才會被觸發

workflow status badge

  • 若想要在 README 頁面增加一個 workflow 是否有完成的 badge 圖案,可以放一段 markdown 的圖片語法來達成,語法如下:

    ![](https://github.com/[USER_ACCOUNT]/[REPO_NAME]/workflows/[WORKFLOW_NAME]/badge.svg?branch=[BRANCH_NAME]&event=[EVENT_NAME])

  • 透過上面 badge 的連結可以發現,可以指定在特定的 branch & event 所對應到的結果來產生 badge

參考資料