MUKI AI Summary
公司從 GitLab 遷移到 GitHub,需重新設定自動生成 Release 文件。GitHub Actions 提供便捷性,內建 Release template 省去額外配置。需開啟專案權限,進入 Settings > Actions > General,調整權限並分別儲存。建立 .github 資料夾,放入 yml 檔案,設定 tags 格式為 v*.*.* 後推送,即可自動生成 Release。
發 Pull Request 時需設標籤,Release 文件會根據標籤分類。可自訂 release.yml 與標籤對應,發 PR 並設標籤後,Add Tag 並推送,workflow 自動生成 Release 文件。最後在 Actions 頁籤查看執行狀態,確保流程順利。...
前言
公司最近從 GitLab 搬家到 GitHub,所以我之前在 GitLab 做的 在 gitlab push 後使用 CI/CD 自動更新版本號與發布 release 也走入歷史了 😂
昨天花了一些時間研究 GitHub 的 Actions,發現比想像中的方便許多,一來是他有 Market 搜集大家寫好的 Workflow,二來是 GitHub 原本就有內建 Release template,我不用額外再寫 release config 了。
▼ 這是我用測試專案做的 release 檔案,喜歡這個格式的朋友,請繼續往下閱讀 XD
開啟 Actions 權限
要做 GitHub 的 Actions,必須先開啟專案的權限。
▼ 點擊專案 -> 「Settings」->「Actions」->「General」,調整 Actioins 以及 Workflow 的權限 (要特別注意兩個 Save 按鈕是分開的,設定好要分別按下 Save 唷)
設定 yml 檔案
▼ 我們要在 git 專案新增一個 .github
的隱藏資料夾,然後將我們的 yml 檔案放到裡面,你的專案結構之後會長這樣
workflow 資料夾裡面有兩個 yml 檔案,他就是自動化流程要執行的檔案。
可以直接從我的 action-test 這個 repo 去抓取相關的檔案存到你的 .github
設定,也可以從部落格這邊直接複製貼上
▼ 當你對 branch 設立 tags 為 v*.*.*
的格式並 push 時,就會進入這個 workflow 來建立 release 的資料
name: 'Create Release' on: push: tags: - 'v*.*.*' jobs: release: runs-on: ubuntu-latest steps: - name: 'Create Release' uses: softprops/action-gh-release@v2 with: generate_release_notes: true
▼ 當你發 PR 時,會根據 PR 設定的標籤來產生之後要放在 release 頁面的內容,所以要記得兩件事情
- 發 PR 才會寫入 release
- 發 PR 時設定了 label,才會在 release 文件有對應的標題類型 (關於 label 是如何對照的,請看後面的 release.yml 檔案)
name: 'Generate Labels' on: pull_request: types: [opened, edited, synchronize] jobs: label: name: 'Label PR based on title' runs-on: ubuntu-latest steps: - uses: srvaroa/labeler@v1.4 env: GITHUB_TOKEN: ${{ github.token }}
▼ release.yml 會根據你發 PR 時設定的標籤,歸類到對應的 release 文件標題
# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes#example-configuration changelog: exclude: authors: - 'dependabot' categories: - title: 'New' labels: - 'type: feature' - title: 'Improved' labels: - 'type: docs' - 'type: style' - title: 'Refactor' labels: - 'type: refactor' - title: 'Fixed' labels: - 'type: bug(fix)' - title: 'Documentation' labels: - 'type: docs' - title: 'Other Changes' labels: - '*'
▼ 例如我在 PR 設了標籤為 type: feature
,以及 type: bug(fix)
。你可以從 release.yml 文件清楚地找到他們歸類的 title 層級為 New (type: feature
) 以及 Fixed (type: bug(fix)
)
▼ 所以我在 release 文件就會分別歸類到 New 和 Fixed 的標題下。
測試 Workflow
基本上,只要把這三個檔案建立好,並 push 到你的專案,這個 workflow 就已經完成了。
現在你要遵循的步驟如下:
第一步:發 PR
依照我們設定的 yml 規則,是「只有發 PR 才會被寫入到 release 文件裡」,請一定要記住這句話 XD
第二步:發 PR 時要設定標籤
workflow「generate-lables
」會根據你在 release.yml 設定的標籤,決定要歸在哪個標題下。如果沒有或忘記設定標籤,也會歸在 Other Changes 裡面,但這些都是可以自己在 release.yml 修改的唷。
第三步:設定你的 Tag
workflow「create-release
」沒有很嚴格規定一定要在 main branch 設定 Tag 才會執行,所以有需要可以自行加入這條限制。
這份 workflow 目前的流程就是,Add Tag -> Push Tag 就會自動開啟 workflow,然後建立 release 文件,文件內容就是參考第一步和第二步的 PR 資訊。
觀看 Actions 的 Workflow
最後可以在 Actions 的頁籤清單,看到所有執行的 Workflow,你也可以再根據自己的需求建立新的 Workflow,最後祝大家 release 順利 XD