合併請求格式太亂?工單內容各寫各的?表單模板來幫你

Gitea 1.18 功能前瞻:創建工單、合併請求時啟用表單和校驗

對於開發來說,我們在收到開發工單時希望有完整的需求描述、錯誤日誌以及問題復現方法。為了幫助提問者講清楚他們的需求,Gitea 在新版本中推出表單和校驗功能。

在最新的 dev 分支中,Gitea 的議題模板功能得到增強,用戶不僅可以使用傳統的 Markdown 模板創建工單與合併請求,還可以使用 YAML 模板創建預格式化的問卷調查清單。同時,1.18-rc1 將於 9 月中旬發布!

模板介紹

Gitea 支援兩種格式的模板,Markdown 和 YAML。

Markdown 模板

在 Gitea 中存在兩種用途的 Markdown 模板:

  • ISSUE_TEMPLATE/bug-report.md 用於規範工單的 Markdown 文本描述
  • PULL_REQUEST_TEMPLATE.md 用於規範合併請求的 Markdown 文本描述

對於以上 Markdown 模板,我們推薦您將它們放置到項目目錄 .gitea 進行收納。

YAML 模板

用 YAML 語法編寫的模板相比 Markdown 可以實現更豐富的功能,利用表單實現諸如:問卷調查、字元校驗。在 Gitea 中的 YAML 同樣支援兩種用途:

  • ISSUE_TEMPLATE/bug-report.yaml 用於創建問卷調查形式的工單
  • PULL_REQUEST_TEMPLATE.yaml 用於創建表單形式的合併請求

對於以上 YAML 模板,我們同樣推薦您將它們放置到項目目錄 .gitea 進行收納。

表單支援通過 URL 查詢參數傳值

當新建工單頁面 URL 以 ?title=Issue+Title&body=Issue+Text 為查詢參數,表單將使用其中的參數(key-value)填充表單內容。

Gitea 支援的模板文件路徑

工單模板文件名:

  • ISSUE_TEMPLATE.md
  • ISSUE_TEMPLATE.yaml
  • ISSUE_TEMPLATE.yml
  • issue_template.md
  • issue_template.yaml
  • issue_template.yml
  • .gitea/ISSUE_TEMPLATE.md
  • .gitea/ISSUE_TEMPLATE.yaml
  • .gitea/ISSUE_TEMPLATE.yml
  • .gitea/issue_template.md
  • .gitea/issue_template.yaml
  • .gitea/issue_template.yml
  • .github/ISSUE_TEMPLATE.md
  • .github/ISSUE_TEMPLATE.yaml
  • .github/ISSUE_TEMPLATE.yml
  • .github/issue_template.md
  • .github/issue_template.yaml
  • .github/issue_template.yml

合併請求模板:

  • PULL_REQUEST_TEMPLATE.md
  • PULL_REQUEST_TEMPLATE.yaml
  • PULL_REQUEST_TEMPLATE.yml
  • pull_request_template.md
  • pull_request_template.yaml
  • pull_request_template.yml
  • .gitea/PULL_REQUEST_TEMPLATE.md
  • .gitea/PULL_REQUEST_TEMPLATE.yaml
  • .gitea/PULL_REQUEST_TEMPLATE.yml
  • .gitea/pull_request_template.md
  • .gitea/pull_request_template.yaml
  • .gitea/pull_request_template.yml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/PULL_REQUEST_TEMPLATE.yaml
  • .github/PULL_REQUEST_TEMPLATE.yml
  • .github/pull_request_template.md
  • .github/pull_request_template.yaml
  • .github/pull_request_template.yml

工單模板目錄

由於工單存在多種類型,Gitea 支援將工單模板統一收納到 ISSUE_TEMPLATE 目錄。以下是 Gitea 支援的工單模板目錄:

  • ISSUE_TEMPLATE
  • issue_template
  • .gitea/ISSUE_TEMPLATE
  • .gitea/issue_template
  • .github/ISSUE_TEMPLATE
  • .github/issue_template
  • .gitlab/ISSUE_TEMPLATE
  • .gitlab/issue_template

目錄支援混合存放 Markdown (.md) 或 YAML (.yaml/.yml) 格式的工單模板。另外,合併請求模板不支援目錄存放。

模板語法

Markdown 模板語法

---

name: "Template Name"
about: "This template is for testing!"
title: "[TEST] "
ref: "main"
labels:

- bug
- "help needed"

---

This is the template!

上面的示例表示用戶從列表中選擇一個工單模板時,列表會展示模板名稱 Template Name 和模板描述 This template is for testing!。 同時,標題會預先填充為 [TEST],而正文將預先填充 This is the template!。 最後,Issue 還會被分配兩個標籤,bughelp needed,並且將議題指向 main 分支。

YAML 模板語法

YAML 模板格式如下,相比 Markdown 模板提供了更多實用性的功能。

name: 表單名稱
about: 表單描述
title: 默認標題
body: 主體內容
  type: 定義表單元素類型
    id: 定義表單標號
    attributes: 擴展的屬性
    validations: 內容校驗

下例 YAML 配置文件完整定義了一個用於提交 bug 的問卷調查。

name: Bug Report
about: File a bug report
title: "[Bug]: "
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!
  - type: input
    id: contact
    attributes:
      label: Contact Details
      description: How can we get in touch with you if we need more info?
      placeholder: ex. [email protected]
    validations:
      required: false
  - type: textarea
    id: what-happened
    attributes:
      label: What happened?
      description: Also tell us, what did you expect to happen?
      placeholder: Tell us what you see!
      value: "A bug happened!"
    validations:
      required: true
  - type: dropdown
    id: version
    attributes:
      label: Version
      description: What version of our software are you running?
      options:
        - 1.0.2 (Default)
        - 1.0.3 (Edge)
    validations:
      required: true
  - type: dropdown
    id: browsers
    attributes:
      label: What browsers are you seeing the problem on?
      multiple: true
      options:
        - Firefox
        - Chrome
        - Safari
        - Microsoft Edge
  - type: textarea
    id: logs
    attributes:
      label: Relevant log output
      description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
      render: shell
  - type: checkboxes
    id: terms
    attributes:
      label: Code of Conduct
      description: By submitting this issue, you agree to follow our [Code of Conduct](//example.com)
      options:
        - label: I agree to follow this project's Code of Conduct
          required: true

在 YAML 模板中包含 Markdown 格式文本描述

您可以在 YAML 模板中使用 markdown 元素為開發者提供額外的上下文支撐,這部分內容會作為創建工單的提示但不會作為工單內容提交。

attributes 子項提供了以下擴展能力:

描述 必選 類型 默認值 有效值
value 渲染的文本。支援 Markdown 格式 必選 字元串

Textarea 多行文本輸入框

您可以使用 textarea 元素在表單中添加多行文本輸入框。 除了輸入文本,開發者還可以在 textarea 區域附加文件。

attributes 子項提供了以下擴展能力:

描述 必選 類型 默認值 有效值
label 預期用戶輸入的簡短描述,也以表單形式顯示。 必選 字元串
description 提供上下文或指導的文本區域的描述,以表單形式顯示。 可選 字元串 空字元串
placeholder 半透明的佔位符,在文本區域空白時呈現 可選 字元串 空字元串
value 在文本區域中預填充的文本。 可選 字元串
render 如果提供了值,提交的文本將格式化為程式碼塊。 提供此鍵時,文本區域將不會擴展到文件附件或 Markdown 編輯。 可選 字元串 Gitea 支援的語言。

validations 子項提供以下文本校驗參數:

描述 必選 類型 默認值 有效值
required 防止在元素完成之前提交表單。 可選 布爾型 false

Input 單行輸入框

您可以使用 input 元素添加單行文本欄位到表單。

attributes 子項提供了以下擴展能力:

描述 必選 類型 默認值 有效值
label 預期用戶輸入的簡短描述,也以表單形式顯示。 必選 字元串
description 提供上下文或指導的欄位的描述,以表單形式顯示。 可選 字元串 空字元串
placeholder 半透明的佔位符,在欄位空白時呈現。 可選 字元串 空字元串
value 欄位中預填的文本。 可選 字元串

validations 子項提供以下文本校驗參數:

描述 必選 類型 默認值 有效值
required 防止在未填內容時提交表單。 可選 布爾型 false
is_number 防止在未填數字時提交表單。 可選 布爾型 false
regex 直到滿足了與正則表達式匹配的值。 可選 字元串 正則表達式

您可以使用 dropdown 元素在表單中添加下拉菜單。

attributes 子項提供了以下擴展能力:

描述 必選 類型 默認值 有效值
label 預期用戶輸入的簡短描述,以表單形式顯示。 必選 字元串
description 提供上下文或指導的下拉列表的描述,以表單形式顯示。 可選 字元串 空字元串
multiple 確定用戶是否可以選擇多個選項。 可選 布爾型 false
options 用戶可以選擇的選項列表。 不能為空,所有選擇必須是不同的。 必選 字元串數組

validations 子項提供以下文本校驗參數:

描述 必選 類型 默認值 有效值
required 防止在元素完成之前提交表單。 可選 布爾型 false

Checkboxes 複選框

您可以使用 checkboxes 元素添加一組複選框到表單。

attributes 子項提供了以下擴展能力:

描述 必選 類型 默認值 有效值
label 預期用戶輸入的簡短描述,以表單形式顯示。 必選 字元串
description 複選框集的描述,以表單形式顯示。 支援 Markdown 格式。 可選 字元串 空字元串
options 用戶可以選擇的複選框列表。 有關語法,請參閱下文。 必選 數組

對於 options,您可以設置以下參數:

描述 必選 類型 默認值 有效值
label 選項的標識符,顯示在表單中。 支援 Markdown 用於粗體或斜體文本格式化和超文本鏈接。 必選 字元串
required 防止在元素完成之前提交表單。 可選 布爾型 false

關於 Gitea

上海吉諦科技有限公司對接 Gitea 相關的商務合作,現已推出開源且自主可控的 DevOps All-in-one 解決方案。

Gitea 項目由公司創始人 Lunny 在 2016 年創建並開源,經過 5 年多的發展,在 GitHub 上獲得了超過 3 萬 1 千顆星,累計下載量超過 3 億次,約 40 萬使用者,獲得了上千家中國外中大型企業認可並在企業中進行了部署。

  • Gitea 官方技術 QQ 群:328432459
  • 想要了解更多 Gitea 資訊,歡迎關注我們的公眾號 Gitea

Tags: