/
CATEGORY
工具與觀念
/
如何使用 GitHub 的 Actions 自動產生 Release 文件

如何使用 GitHub 的 Actions 自動產生 Release 文件

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 唷)

關於 Actions permissions

如果你的 Actions 權限不想開那麼高,也可以選擇第三個選項
Allow {帳號} actions and reusable workflows

設定 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 的標題下。

客製化你的 release.yml 與對應 label

如果你的 Label 跟我設定的不一樣,就是在 release.yml 這份檔案去做修改,release 的標題也是從這裡調整。

測試 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

歡迎給我點鼓勵,讓我知道你來過 :)

63
2
2
MUKI says:

如果文章有幫助到你,歡迎分享給更多人知道。文章內容皆為 MUKI 本人的原創文章,我會經常更新文章以及修正錯誤內容,因此轉載時建議保留原出處,避免出現版本不一致或已過時的資訊。

本文地址:https://muki.tw/github-actions-workflow-release/ 已複製

Subscribe
Notify of
guest

0 則留言
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Copyright © since 2008 MUKI space* / omegaSS theme All Rights Reserved.