

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 附錄：ADR 範例
<a name="appendix"></a>

**標題**

此決定定義了 ABC 應用程式開發的軟體開發生命週期方法。

**狀態**

已接受

**日期**

2022-03-11

**Context**

ABC 應用程式是封裝解決方案，將使用部署套件部署至客戶的環境。我們需要有一個開發流程，讓我們擁有可控制的功能、修補程序和發行管道。

**決策**

我們使用 [GitFlow 工作流程](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)的改編版本來開發 ABC 應用程式。

![\[GitFlow 工作流程，適用於 ABC 範例應用程式\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/architectural-decision-records/images/gitflow-workflow.png)


為了簡單起見，我們不會使用 `hotfix/*` 和 `release/*` 分支，因為 ABC 應用程式將封裝而不是部署至特定環境。因此，不需要額外的複雜性，因為這可能會阻止我們快速做出反應來修正生產版本中的錯誤，或在單獨的環境中測試版本。

以下是協議的分支策略：
+ 每個儲存庫都必須具有一個受保護的 `main` 分支，用於標記版本。
+ 每個儲存庫都必須具有一個受保護的 `develop` 分支，用於所有正在進行的開發工作。

**結果**

正數：
+ 改編的 GitFlow 程序可讓我們控制 ABC 應用程式的發行版本。

負數：
+ GitFlow 比主幹型開發或 GitHub 流程更複雜，額外負荷更大。

**合規**
+ 每個儲存庫中的 `main` 和 `develop` 分支必須標記為 `Protected`。
+ 對 `main` 和 `develop` 分支的變更必須使用合併請求進行傳播。
+ 每個合併請求至少需要一次核准。

**備註**
+ 作者：Jane Doe
+ 版本：0.1
+ Changelog：
  + 0.1：初始提議版本