/
CATEGORY
工具與觀念
/
如何製作 GitHub issue 和 PR 的 template

如何製作 GitHub issue 和 PR 的 template

MUKI AI Summary

公司專案從 GitLab 轉移到 GitHub,為了團隊協作更順利,建立了 PR 和 issue template。PR template 放在 .github 資料夾,檔名為 PULL_REQUEST_TEMPLATE.md。issue template 有 markdown 和 yml 兩種格式,yml 支援表單元件,推薦使用 yml。建立多個 issue template 時,資料夾命名為 ISSUE_TEMPLATE,並建立 config.yml 檔案。所有更改需推到預設 branch 才能自動載入 template。...

前言

我自己在發 PR 或 寫 issue 時,會希望能使用固定的發文格式,因為透過統一的文章格式,能有利於團隊協作,也能讓畫面更整齊美觀 XD。

而近期公司專案從 GitLab 轉移到 GitHub,我們的測試和 PM 也加入了我們一起使用 Git,所以除了 PR template 外,我也建立了 issue template,希望能讓團隊協作更加順利。

撰寫 PR template

如何使用 GitHub 的 Actions 自動產生 Release 文件 一樣,我們要將 template 放在 .github 資料夾底下。

PR template 只會有一個檔案,檔名也是固定為 PULL_REQUEST_TEMPLATE.md,請不要隨意修改唷。

▼ 這份是我幫團隊建立的 PR template,有需要的朋友歡迎直接複製修改。如果有更好的寫法,也歡迎分享給我 ^Q^

## 描述

**將這支 PR 所做的事情,取代這段文字,描述越詳細越好。**

相關的 issue #(ticket number) / 無

## 變更的類型

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update

## 影響的頁面

- [] 首頁
- [] 個人資料與設定
- [] 其他(請填寫)

## 相關的 專案網站(ex.Redmine) Task

(如果有相關的 task,請填寫連結,如果沒有請刪除此行,並填「無」)

## 檢查清單

- [] 我已經在本地手動測試過,確保功能的完整性和穩定性
- [] 我對我的程式碼進行了註解,特別是在難以理解的地方
- [] 我已經更新了文件,或者我的更改不需要更新文件
- [] 我的 PR 有明確的標題與內容描述

▼ 存檔後 push 到你的專案並 merge 到 main branch,每次發 PR 時就會自動載入這個 template 了。

撰寫 Issue template

Issue 的 template 有兩種格式,一種是用 markdown(.md),一種是 yml(.yml)

markdown 就是跟 PR template 一樣,會有一個框框裡面有預設的資料。

而 yml 是 GitHub 官方主推的寫法,可以有如 inputtextareadropdowncheckbox... 等等表單元件,能直接做一個完整的表單

▼ 使用 yml template 的話,新增 issue 時可以選擇想要的 template

▼ 然後就能愉快的一個蘿蔔一個坑,填入對應的表單內容。也能自動設定好 Label

我原本是想用 markdown,但看了 yml 的範例語法後,發現沒想像中的不複雜,所以就改用 yml 了。因此這篇文章會介紹 yml 唷。

▼ 如果你跟我一樣,想要建立多個 issue template,那你的資料夾結構會長得像這樣

請在 .github 裡面建立一個資料夾,資料夾名稱為 ISSUE_TEMPLATE(不可修改)

再建一個 config.yml (同樣不可修改)

剩下的 enhancement.yml 以及 fix.yml,就是我們對應的 issue template,這裡就能依照自己的喜好修改檔名囉。

關於 config.yml

▼ 這是我的 config.yml 內容,如果使用多個 issue template,這邊通常只會有這個設定值,如果想要更多設定,可以參考 GitHub 的官方文件

blank_issues_enabled: false

blank_issues_enabled 的意思是,使用者新增 issue 時,能不能不用我們寫好的 template,而是用自由書寫的格式?

你可以根據自己的喜好調整,true 是開放;false 為不開放,亦即只能用你設定的格式寫 issue。

關於 issue template

這邊以 fix.yml 為例,跟大家分享我的 template,也歡迎自行複製修改

name: Bug 回報
description: 提交一個錯誤 / 問題
title: "[BUG] 標題"
labels: ["type: bug(fix)"]
body:
- type: checkboxes
  attributes:
    label: 是否已存在相關的問題?(必填)
    description: 請搜尋看看是否已有類似的錯誤問題。
    options:
    - label: 我已搜尋過現有的問題
      required: true
- type: input
  attributes:
    label: 發生時間(必填)
    description: 格式 YYYY-MM-DD HH:MM
  validations:
    required: true
- type: textarea
  attributes:
    label: 當前行為(必填)
    description: 簡單描述做了什麼事情
    render: markdown
  validations:
    required: true
- type: textarea
  attributes:
    label: 預期行為
    description: 簡單描述原本預期會發生什麼事情
    render: markdown
  validations:
    required: false
- type: input
  attributes:
    label: 網站版本號
    description: 位於網站下方
  validations:
    required: false
- type: textarea
  attributes:
    label: 平台環境
    description: |
      例:
        - **作業系統**: Ubuntu 20.04
        - **瀏覽器**: Chrome
        - **瀏覽器版本**: 13.14.0
    value: |
        - 作業系統:
        - 瀏覽器:
        - 瀏覽器版本:
    render: markdown
  validations:
    required: false
- type: input
  attributes:
    label: 網站錯誤碼
  validations:
    required: false
- type: textarea
  attributes:
    label: 其他補充
    description: |
      任何連結、截圖或影片等補充訊息,都可以寫在這裡。
      提示:可以點擊此區域以突出顯示,然後拖入圖片或相關文件。
  validations:
    required: false
  1. yml 格式最注重的是階層,因此要特別注意縮排,不要跑掉了唷。
  2. yml 相關的 type 以及可用的 attributes,可參考 Syntax for GitHub's form schema
  3. 檔案第四行的 labels: ["type: bug(fix)"] 要改為你自己想要設定的 issue Label,因為是陣列格式,所以可以為複數。
  4. 如果你使用的是組織的 git,那表單的 required: true 是沒有作用的,也就是說即使設定了必填欄位也也是無效的,我有翻了一下相關 issue,目前仍沒有解決,可參考 #43859#45084#51500

最後記得,所有的更改都必須要推到你的預設 branch (通常是 main) 才能自動載入 template

結語

Happy Coding !!

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

4
MUKI says:

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

本文地址:https://muki.tw/github-issue-pull-request-template/ 已複製

Subscribe
Notify of
guest

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