

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

# 功能分支部署和團隊工作流程
<a name="multi-environments"></a>

Amplify 託管旨在使用功能分支和 GitFlow 工作流程。每次您連接儲存庫中的新分支時，Amplify 都會使用 Git 分支建立新的部署。連接第一個分支之後，您可以建立其他功能分支。

**將分支新增至應用程式**

1. 選擇您要新增分支的應用程式。

1. 選擇**應用程式設定**，然後選擇**分支設定**。

1. 在**分支設定**頁面上，選擇**新增分支**。

1. 從儲存庫中選取分支。

1. 選擇**新增分支。**

1. 重新部署您的應用程式。

新增分支之後，您的應用程式有兩個可在 Amplify 預設網域使用的部署，例如 *https://main.appid.amplifyapp.com* 和 *https://dev.appid.amplifyapp.com*。這可能因team-to-team，但通常**主要分支**會追蹤發行程式碼，並且是您的生產分支。**開發分支**則可做為測試新功能的整合分支來使用。這可讓 Beta 版測試人員在開發分支部署上測試未發行的功能，而不會影響主分支部署上的任何生產最終使用者。

**Topics**
+ [具有完整堆疊 Amplify Gen 2 應用程式的團隊工作流程](team-workflows-gen2.md)
+ [具有完整堆疊 Amplify Gen 1 應用程式的團隊工作流程](team-workflows-with-amplify-cli-backend-environments.md)
+ [模式型功能分支部署](pattern-based-feature-branch-deployments.md)
+ [Amplify 組態的自動建置時間產生 （僅限第 1 代應用程式）](amplify-config-autogeneration.md)
+ [條件式後端建置 （僅限第 1 代應用程式）](conditional-backends.md)
+ [跨應用程式使用 Amplify 後端 （僅限第 1 代應用程式）](reuse-backends.md)

# 具有完整堆疊 Amplify Gen 2 應用程式的團隊工作流程
<a name="team-workflows-gen2"></a>

AWS Amplify Gen 2 推出以 TypeScript 為基礎的程式碼優先開發人員體驗來定義後端。若要了解 Amplify Gen 2 應用程式的完整堆疊工作流程，請參閱 *Amplify 文件*中的[完整堆疊工作流程](https://docs.amplify.aws/nextjs/deploy-and-host/fullstack-branching/)。

# 具有完整堆疊 Amplify Gen 1 應用程式的團隊工作流程
<a name="team-workflows-with-amplify-cli-backend-environments"></a>

功能分支部署包含**前端**和選用**的後端**環境。前端建置並部署至全球內容交付網路 (CDN)，而後端則由 Amplify Studio 或 Amplify CLI 部署至 AWS。若要了解如何設定此部署案例，請參閱 [建置應用程式的後端](deploy-backend.md)。

Amplify Hosting 會使用功能分支部署持續部署後端資源，例如 GraphQL APIs 和 Lambda 函數。您可以使用下列分支模型，透過 Amplify Hosting 部署後端和前端。

## 功能分支工作流程
<a name="standard"></a>
+ 使用 Amplify Studio 或 Amplify CLI 建立**生產**、**測試**和**開發**後端環境。
+ 將 **prod** 後端映射至**主**分支。
+ 將**測試**後端映射至**開發**分支。
+ 團隊成員可以使用**開發**後端環境來測試個別**功能**分支。

![\[顯示如何將後端環境之間的關係映射至前端分支的圖表。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/FeatureBranchWorkflow.png)


1. 安裝 Amplify CLI 以初始化新的 Amplify 專案。

   ```
   npm install -g @aws-amplify/cli
   ```

1. 為專案初始化「prod」**後端環境。如果您沒有專案，請使用 create-react-app 或 Gatsby 等引導工具建立專案。

   ```
   create-react-app next-unicorn
   cd next-unicorn
   amplify init
    ? Do you want to use an existing environment? (Y/n): n
    ? Enter a name for the environment: prod
   ...
   amplify push
   ```

1. 新增「test」**和「dev」**後端環境。

   ```
   amplify env add
    ? Do you want to use an existing environment? (Y/n): n
    ? Enter a name for the environment: test
   ...
   amplify push
   
   amplify env add
    ? Do you want to use an existing environment? (Y/n): n
    ? Enter a name for the environment: dev
   ...
   amplify push
   ```

1. 將程式碼推送至您選擇的 Git 儲存庫 （在此範例中，我們將假設您已推送至主要儲存庫）。

   ```
   git commit -am 'Added dev, test, and prod environments'
   git push origin main
   ```

1. 請造訪 中的 Amplify AWS 管理主控台 以查看您目前的後端環境。從導覽列向上導覽關卡，以檢視在後端環境索引標籤中建立的所有**後端環境**清單。  
![\[Amplify 主控台會顯示與 Amplify 應用程式相關聯的後端環境。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/reuse-backend-5.png)

1. 切換到**前端環境**索引標籤，並連接您的儲存庫提供者和*主*分支。

1. 在建置設定頁面上，選取現有的後端環境，以使用主分支設定持續部署。從清單中選擇 *prod*，並將服務角色授予 Amplify。選擇 **Save and deploy (儲存並部署)**。建置完成後，您會在 https：//*https://main.appid.amplifyapp.com* 取得主要分支部署。  
![\[設定建置設定頁面，其中包含現有後端的清單。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/reuse-backend-2.png)

1. 在 Amplify 中連接*開發*分支 （假設*開發*和*主要*分支目前相同）。選擇「test」**後端環境。  
![\[已選取分支和後端環境的新增儲存庫分支頁面。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/reuse-backend-4.png)

1. Amplify 現在已設定。您可以開始在功能分支中處理新功能。請從本機工作站使用「dev」**後端環境來新增後端功能。

   ```
   git checkout -b newinternet
   amplify env checkout dev
   amplify add api
   ...
   amplify push
   ```

1. 功能處理完畢後，請遞交程式碼並建立提取請求，以在內部進行檢閱。

   ```
   git commit -am 'Decentralized internet v0.1'
   git push origin newinternet
   ```

1. 若要預覽變更的外觀，請前往 Amplify 主控台並連接您的功能分支。注意：如果系統 AWS CLI 已安裝 （而非 Amplify CLI)，您可以直接從終端機連接分支。依序前往 App settings (應用程式設定) > General (一般) > AppARN: *arn:aws:amplify:<region>:<region>:apps/<appid>*，即可找到 appid。

   ```
   aws amplify create-branch --app-id <appid> --branch-name <branchname>
   aws amplify start-job --app-id <appid> --branch-name <branchname> --job-type RELEASE
   ```

1. 您可前往 *https://newinternet.appid.amplifyapp.com* 存取該功能，以與團隊夥伴共享。如果看起來都沒問題，請將 PR 合併至開發分支。

   ```
   git checkout develop
   git merge newinternet
   git push
   ```

1. 這將啟動建置，以使用位於 https：//*https://dev.appid.amplifyapp.com* 的分支部署更新 Amplify 中的後端和前端。您可與內部合作夥伴分享此連結，讓他們檢閱新功能。

1. 從 Git、Amplify 刪除您的功能分支，並從雲端移除後端環境 （您可以隨時執行「amplify env checkout prod」和執行「amplify env add」來啟動新的分支）。

   ```
   git push origin --delete newinternet
   aws amplify delete-branch --app-id <appid> --branch-name <branchname>
   amplify env remove dev
   ```

## GitFlow 工作流程
<a name="gitflow"></a>

GitFlow 會使用兩個分支來記錄專案的歷史記錄。*主要*分支只會追蹤發行程式碼，而*開發*分支會用作新功能的整合分支。GitFlow 會將新開發與完成的工作分開，以簡化平行開發作業。系統會在「功能」**分支中完成新的開發 (例如功能和非緊急錯誤修正)。當開發人員認為程式碼隨時可發佈時，系統就會將該「功能」**分支合併回整合「開發」**分支。對主分支的唯一遞交是從*發行*分支和 *Hotfix* 分支合併 （以修正緊急錯誤）。

下圖顯示建議的 GitFlow 設定。您可以遵循上述功能分支工作流程一節的相同程序來操作。

![\[顯示 GitFlow 建議設定的圖表。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/GitflowWorkflow.png)


## 每位開發人員的沙盒
<a name="sandbox"></a>
+ 團隊中的每位開發人員都應該在與其本機電腦分開的雲端中建立沙盒環境。這可讓開發人員彼此獨立運作，而不會覆寫其他團隊成員的變更。
+ Amplify 中的每個分支都有自己的後端。這可確保 Amplify 使用 Git 儲存庫作為部署變更的單一事實來源，而不是依賴團隊的開發人員從本機電腦手動將其後端或前端推送至生產環境。

![\[顯示每個開發人員沙盒工作流程的圖表。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/AmplifySandboxWorkflow.png)


1. 安裝 Amplify CLI 以初始化新的 Amplify 專案。

   ```
   npm install -g @aws-amplify/cli
   ```

1. 為您的專案初始化 *mary* 後端環境。如果您沒有專案，請使用 create-react-app 或 Gatsby 等引導工具建立專案。

   ```
   cd next-unicorn
   amplify init
    ? Do you want to use an existing environment? (Y/n): n
    ? Enter a name for the environment: mary
   ...
   amplify push
   ```

1. 將程式碼推送至您選擇的 Git 儲存庫 （在此範例中，我們將假設您已推送至主要儲存庫。

   ```
   git commit -am 'Added mary sandbox'
   git push origin main
   ```

1. 將您的儲存庫 > *主要*連線至 Amplify。

1. Amplify 主控台會偵測 Amplify CLI 建立的後端環境。從下拉式清單中選擇*建立新環境*，並將服務角色授予 Amplify。選擇 **Save and deploy (儲存並部署)**。建置完成後，您會在 https：//*https://main.appid.amplifyapp.com* 取得主要分支部署，其中包含連結至分支的新後端環境。

1. 在 Amplify 中連接*開發*分支 （假設*開發*和*主要*分支目前相同），然後選擇*建立*

# 模式型功能分支部署
<a name="pattern-based-feature-branch-deployments"></a>

模式型分支部署可讓您自動部署符合特定模式的分支至 Amplify。使用功能分支或 GitFlow 工作流程進行發行的產品團隊現在可以定義模式，例如**release\$1\$1**將開頭為「發行」的 Git 分支自動部署到可共用的 URL。

1. 選擇**應用程式設定**，然後選擇**分支設定**。

1. 在**分支設定**頁面上，選擇**編輯**。

1. 選取**分支自動偵測**，以自動將分支連線至符合模式集的 Amplify。

1. 在**分支自動偵測 - 模式**方塊中，輸入自動部署分支的模式。
   + **\$1** – 部署儲存庫中的所有分支。
   + **release\$1** – 部署以「發行」一詞開頭的所有分支。
   + **release\$1/** – 部署符合「發行 /」模式的所有分支。
   + 在逗號分隔清單中指定多個模式。例如 **release\$1, feature\$1**。

1. 選取分支自動**偵測存取控制 ，為自動建立的所有分支設定自動**密碼保護。

1. 對於使用 Amplify 後端建置的第 1 代應用程式，您可以選擇為每個連線的分支建立新的環境，或將所有分支指向現有的後端。

1. 選擇**儲存**。

## 連接到自訂網域之應用程式的模式型功能分支部署
<a name="pattern-based-feature-branch-deployments-for-an-app-connected-to-a-custom-domain"></a>

您可以針對連線至 Amazon Route 53 自訂網域的應用程式使用模式型功能分支部署。
+ 如需設定模式型功能分支部署的指示，請參閱 [設定 Amazon Route 53 自訂網域的自動子網域](to-set-up-automatic-subdomains-for-a-Route-53-custom-domain.md)
+ 如需將 Amplify 應用程式連線至 Route 53 中管理的自訂網域的說明，請參閱 [新增由 Amazon Route 53 管理的自訂網域](to-add-a-custom-domain-managed-by-amazon-route-53.md)
+ 如需使用 Route 53 的詳細資訊，請參閱[什麼是 Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html)。

# Amplify 組態的自動建置時間產生 （僅限第 1 代應用程式）
<a name="amplify-config-autogeneration"></a>

**注意**  
本節中的資訊僅適用於 Gen 1 應用程式。如果您想要從 Gen 2 應用程式的功能分支自動部署基礎設施和應用程式程式碼變更，請參閱 *Amplify 文件*中的 [Fullstack 分支部署](https://docs.amplify.aws/nextjs/deploy-and-host/fullstack-branching/branch-deployments/) 

Amplify 支援產生適用於 Gen 1 應用程式的 Amplify 組態`aws-exports.js`檔案的自動建置時間。透過關閉完整堆疊 CI/CD 部署，您可以讓應用程式自動產生`aws-exports.js`檔案，並確保在建置時不會對後端進行更新。

**在`aws-exports.js`建置時間自動產生**

1. 登入 AWS 管理主控台 並開啟 [Amplify 主控台](https://console.aws.amazon.com/amplify/)。

1. 選擇要編輯的應用程式。

1. 選擇**託管環境**索引標籤。

1. 找到要編輯的分支，然後選擇**編輯**。  
![\[Amplify 主控台中分支的編輯連結位置。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/amplify_edit_backend_alternate.png)

1. 在**編輯目標後端**頁面上，取消勾選**啟用完整堆疊連續部署 (CI/CD)**，關閉此後端的完整堆疊 CI/CD。  
![\[在 Amplify 主控台中關閉 CI/CD 的核取方塊位置。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/amplify_turnoff_CICD.png)

1. 選取現有的服務角色，為 Amplify 提供變更應用程式後端所需的許可。如果您需要建立服務角色，請選擇**建立新角色**。如需建立服務角色的詳細資訊，請參閱[新增具有部署後端資源許可的服務角色](amplify-service-role.md)。

1. 選擇**儲存**。Amplify 會在您下次建置應用程式時套用這些變更。

# 條件式後端建置 （僅限第 1 代應用程式）
<a name="conditional-backends"></a>

**注意**  
本節中的資訊僅適用於 Gen 1 應用程式。Amplify Gen 2 推出以 TypeScript 為基礎的程式碼優先開發人員體驗。因此，第 2 代後端不需要此功能。

Amplify 支援在 Gen 1 應用程式的所有分支上建置條件式後端。若要設定條件式後端建置，請將`AMPLIFY_DIFF_BACKEND`環境變數設定為 `true`。啟用條件式後端建置有助於加速僅對前端進行變更的建置。

當您啟用 diff 型後端建置時，Amplify 會在每次建置開始時嘗試在儲存庫中的`amplify`資料夾上執行 diff。如果 Amplify 找不到任何差異，它會略過後端建置步驟，而不會更新您的後端資源。如果您的專案在儲存庫中沒有 `amplify` 資料夾，Amplify 會忽略`AMPLIFY_DIFF_BACKEND`環境變數的值。如需設定`AMPLIFY_DIFF_BACKEND`環境變數的指示，請參閱 [為 Gen 1 應用程式設定差異型後端建置](edit-build-settings.md#enable-diff-backend)。

如果您目前在後端階段的建置設定中指定了自訂命令，則條件式後端建置將無法運作。如果您希望這些自訂命令執行，則必須將其移至您應用程式`amplify.yml`檔案中建置設定的前端階段。如需更新`amplify.yml`檔案的詳細資訊，請參閱 [組建規格參考](yml-specification-syntax.md)。

# 跨應用程式使用 Amplify 後端 （僅限第 1 代應用程式）
<a name="reuse-backends"></a>

**注意**  
本節中的資訊僅適用於 Gen 1 應用程式。如果您想要共用第 2 代應用程式的後端資源，請參閱 *Amplify 文件*中的[跨分支共用資源](https://docs.amplify.aws/nextjs/deploy-and-host/fullstack-branching/share-resources/) 

Amplify 可讓您在指定區域中的所有 Gen 1 應用程式之間重複使用現有的後端環境。您可以在建立新應用程式、將新分支連接至現有應用程式，或更新現有前端以指向不同的後端環境時執行此操作。

## 建立新應用程式時重複使用後端
<a name="reuse-backends-create-connect"></a>

**在建立新的 Amplify 應用程式時重複使用後端**

1. 登入 AWS 管理主控台 並開啟 [Amplify 主控台](https://console.aws.amazon.com/amplify/)。

1. 若要建立新的後端以用於此範例，請執行下列動作：

   1. 在導覽窗格中，選擇**所有應用程式**。

   1. 選擇**新增應用程式**、**建置應用程式**。

   1. 輸入應用程式的名稱，例如 **Example-Amplify-App**。

   1. 選擇**確認部署**。

1. 若要將前端連接到新的後端，請選擇**託管環境**索引標籤。

1. 選擇您的 Git 提供者，然後選擇 **Connect 分支**。

1. 在**新增儲存庫分支**頁面上，針對**最近更新的儲存庫**，選擇您的儲存庫名稱。針對**分支**，從您的儲存庫選取要連線的分支。

1. 在**建置設定**中，執行下列動作：

   1. 針對**應用程式名稱**，選取要用來新增後端環境的應用程式。您可以選擇目前的應用程式或目前區域中的任何其他應用程式。

   1. 針對**環境**，選取要新增的後端環境名稱。您可以使用現有環境或建立新的環境。

   1. 根據預設，全堆疊 CI/CD 會關閉。關閉完整堆疊 CI/CD 會導致應用程式以*僅提取*模式執行。在建置時，Amplify 只會自動產生`aws-exports.js`檔案，而不會修改您的後端環境。

   1. 選取現有的服務角色，為 Amplify 提供變更應用程式後端所需的許可。如果您需要建立服務角色，請選擇**建立新角色**。如需建立服務角色的詳細資訊，請參閱[新增具有部署後端資源許可的服務角色](amplify-service-role.md)。

   1. 選擇**下一步**。

1. 選擇 **Save and deploy (儲存並部署)**。

## 將分支連線至現有應用程式時重複使用後端
<a name="reuse-backends-connect-branch"></a>

**在將分支連線至現有的 Amplify 應用程式時重複使用後端**

1. 登入 AWS 管理主控台 並開啟 [Amplify 主控台](https://console.aws.amazon.com/amplify/)。

1. 選擇要連接新分支的應用程式。

1. 在導覽窗格中，選擇**應用程式設定**，**一般**。

1. 在**分支**區段中，選擇**連接分支**。

1. 在**新增儲存庫分支**頁面上，針對**分支**，從要連線的儲存庫中選取分支。

1. 針對**應用程式名稱**，選取要用於新增後端環境的應用程式。您可以選擇目前的應用程式或目前區域中的任何其他應用程式。

1. 針對**環境**，選取要新增的後端環境名稱。您可以使用現有環境或建立新的環境。

1. 如果您需要設定服務角色來授予 Amplify 對應用程式後端進行變更所需的許可，主控台會提示您執行此任務。如需建立服務角色的詳細資訊，請參閱[新增具有部署後端資源許可的服務角色](amplify-service-role.md)。

1. 根據預設，全堆疊 CI/CD 會關閉。關閉全堆疊 CI/CD 會導致應用程式以*僅提取*模式執行。在建置時，Amplify 只會自動產生`aws-exports.js`檔案，而不會修改您的後端環境。

1. 選擇**下一步**。

1. 選擇 **Save and deploy (儲存並部署)**。

## 編輯現有的前端以指向不同的後端
<a name="reuse-backends-edit-existing"></a>

**編輯前端 Amplify 應用程式以指向不同的後端**

1. 登入 AWS 管理主控台 並開啟 [Amplify 主控台](https://console.aws.amazon.com/amplify/)。

1. 選擇要編輯後端的應用程式。

1. 選擇**託管環境**索引標籤。

1. 找到要編輯的分支，然後選擇**編輯**。  
![\[Amplify 主控台中分支的編輯連結位置。\]](http://docs.aws.amazon.com/zh_tw/amplify/latest/userguide/images/amplify_edit_backend.png)

1. 在**選取要與此分支搭配使用的後端環境**頁面上，針對**應用程式名稱**，選取您要編輯後端環境的前端應用程式。您可以選擇目前的應用程式或目前區域中的任何其他應用程式。

1. 針對**後端環境**，選取要新增的後端環境名稱。

1. 預設會啟用全堆疊 CI/CD。取消勾選此選項可關閉此後端的完整堆疊 CI/CD。關閉完整堆疊 CI/CD 會導致應用程式以*僅提取*模式執行。在建置時，Amplify 只會自動產生`aws-exports.js`檔案，而不會修改後端環境。

1. 選擇**儲存**。Amplify 會在您下次建置應用程式時套用這些變更。