

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

Amplify Hosting 旨在与功能分支和 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 配置（仅限 Gen 1 应用程序）](amplify-config-autogeneration.md)
+ [有条件的后端构建（仅限 Gen 1 应用程序）](conditional-backends.md)
+ [跨应用程序使用 Amplify 后端（仅限 Gen 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 创建 **prod**、**test** 和 **dev** 后端环境。
+ 将**生产**后端映射到**主**分支。
+ 将**测试**后端映射到**开发**分支。
+ 团队成员可以使用**设备**后端环境来测试各个**功能**分支。

![\[展示如何将关系从后端环境映射到前端分支的示意图。\]](http://docs.aws.amazon.com/zh_cn/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_cn/amplify/latest/userguide/images/reuse-backend-5.png)

1. 切换到**前端环境**选项卡，连接存储库提供程序和*主*分支。

1. 在构建设置屏幕中，选择现有的后端环境，以便在主分支上设置持续部署。从列表中选择*生产*并将服务角色授予 Amplify。选择**保存并部署**。构建完成后，您将在上获得主分支部署*https://main.appid.amplifyapp.com*。  
![\[配置构建设置页面，其中包含现有后端的列表。\]](http://docs.aws.amazon.com/zh_cn/amplify/latest/userguide/images/reuse-backend-2.png)

1. 在 Amplify 中连接*开发*分支（此时假设*开发*和*主*分支相同）。选择 *test* 后端环境。  
![\[添加存储库分支页面，其中选择了分支和后端环境。\]](http://docs.aws.amazon.com/zh_cn/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. 这将启动一个构建，该版本将更新 Amplify 中的后端和前端，分支部署在。*https://dev.appid.amplifyapp.com*您可以与内部利益相关者共享此链接，以便他们可以查看新功能。

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 通过将新开发与已完成的工作隔离开来简化并行开发。在*功能*分支中完成新开发（例如功能和非紧急错误修复）。当开发人员确信代码已准备好发布时，*功能*分支将合并回集成*开发*分支。仅将来自*发布*分支和*修补程序*分支的合并提交到主分支（以修复紧急错误）。

下图显示了推荐的设置 GitFlow。您可以按照上面功能分支工作流程部分中描述的相同过程进行操作。

![\[显示推荐设置的示意图 GitFlow。\]](http://docs.aws.amazon.com/zh_cn/amplify/latest/userguide/images/GitflowWorkflow.png)


## 每个开发人员的沙盒
<a name="sandbox"></a>
+ 团队中的每个开发人员在云中创建独立于其本地计算机的沙盒环境。这使开发人员能够彼此隔离地进行工作，不会覆盖其他团队成员的更改。
+ Amplify 中的每个分支都有自己的后端。这将确保 Amplify 使用 Git 存储库作为从其部署更改的单一信任源，而不是依赖团队中的开发人员手动将其后端或前端从本地计算机推送到生产。

![\[展示每个开发人员的沙盒工作流程的示意图。\]](http://docs.aws.amazon.com/zh_cn/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. 将您的 repo > *main* 连接到 Amplify。

1. Amplify 控制台将检测 Amplify CLI 创建的后端环境。从下拉列表中选择*创建新环境*并将服务角色授予 Amplify。选择**保存并部署**。构建完成后，您将获得一个可用的主分支部署，*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”一词开头的分支。
   + **release\$1/**：部署匹配“release/”模式的所有分支。
   + 将多个模式指定为逗号分隔的列表。例如 **release\$1, feature\$1**。

1. 选择**分支自动检测访问控制**，为自动创建的所有分支设置自动密码保护。

1. 对于使用 Amplify 后端构建的 Gen 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 配置（仅限 Gen 1 应用程序）
<a name="amplify-config-autogeneration"></a>

**注意**  
本节中的信息仅适用于 Gen 1 应用程序。如果您想自动部署 Gen 2 应用程序功能分支中的基础架构和应用程序代码更改，请参阅《Amplify 文档》**中的[全栈分支部署](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_cn/amplify/latest/userguide/images/amplify_edit_backend_alternate.png)

1. 在**编辑目标后端**页面上，取消选中**启用全栈连续部署 (CI/CD)** 以关闭此后端的全栈 CI/CD。  
![\[要在 Amplify 控制台 CI/CD 中关闭的复选框的位置。\]](http://docs.aws.amazon.com/zh_cn/amplify/latest/userguide/images/amplify_turnoff_CICD.png)

1. 选择现有服务角色以授予 Amplify 更改应用程序后端所需的权限。如果您需要创建服务角色，请选择**创建角色**。有关创建服务角色的更多信息，请参阅[添加具有后端资源部署权限的服务角色](amplify-service-role.md)。

1. 选择**保存**。Amplify 会在下次构建应用程序时应用这些更改。

# 有条件的后端构建（仅限 Gen 1 应用程序）
<a name="conditional-backends"></a>

**注意**  
本节中的信息仅适用于 Gen 1 应用程序。Amplify Gen 2 引入了 TypeScript基于代码的开发者体验。因此，Gen 2 后端不需要此功能。

Amplify 支持在 Gen 1 应用程序的所有分支上进行有条件的后端构建。要配置有条件的后端构建，请将 `AMPLIFY_DIFF_BACKEND` 环境变量设置为 `true`。启用有条件的后端构建将有助于加快只对前端进行更改的构建速度。

当启用基于差异的后端构建时，在每次构建开始时，Amplify 都会尝试对存储库中的 `amplify` 文件夹运行 diff。如果 Amplify 没有发现任何差异，它将跳过后端构建步骤，并且不会更新您的后端资源。如果您的项目存储库中没有 `amplify` 文件夹，Amplify 会忽略 `AMPLIFY_DIFF_BACKEND` 环境变量的值。有关设置 `AMPLIFY_DIFF_BACKEND` 环境变量的说明，请参阅 [为 Gen 1 应用程序配置基于 diff 的后端构建](edit-build-settings.md#enable-diff-backend)。

如果您当前在后端阶段的构建设置中指定了自定义命令，则有条件的后端构建将不起作用。如果要运行这些自定义命令，则必须将其移至应用程序 `amplify.yml` 文件中构建设置的前端阶段。有关更新 `amplify.yml` 文件的更多信息，请参阅 [构建规范参考](yml-specification-syntax.md)。

# 跨应用程序使用 Amplify 后端（仅限 Gen 1 应用程序）
<a name="reuse-backends"></a>

**注意**  
本节中的信息仅适用于 Gen 1 应用程序。如果您想共享 Gen 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 提供商，然后选择**连接分支**。

1. 在**添加存储库分支**页面上，对于**最近更新的存储库**，请选择您的存储库名称。对于**分支**，请从存储库中选择要连接的分支。

1. 在**构建设置**页面上，执行以下操作：

   1. 对于**应用程序名称**，请选择要用于添加后端环境的应用程序。您可以选择当前应用程序或当前区域中的其他任何应用程序。

   1. 对于**环境**，请选择要添加的后端环境的名称。您可以使用现有环境或创建新环境。

   1. 默认情况下，全栈 CI/CD 处于关闭状态。关闭全栈 CI/CD 会导致应用程序仅在*拉取*模式下运行。在构建时，Amplify 只会自动生成 `aws-exports.js` 文件，而不修改您的后端环境。

   1. 选择现有服务角色以授予 Amplify 更改应用程序后端所需的权限。如果您需要创建服务角色，请选择**创建角色**。有关创建服务角色的更多信息，请参阅[添加具有后端资源部署权限的服务角色](amplify-service-role.md)。

   1. 选择**下一步**。

1. 选择**保存并部署**。

## 将分支连接到现有应用程序时重复使用后端
<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. 选择**保存并部署**。

## 编辑现有前端以指向其他后端
<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_cn/amplify/latest/userguide/images/amplify_edit_backend.png)

1. 在**选择要用于此分支的后端环境**页面上，对于**应用程序名称**，请选择要为其编辑后端环境的前端应用程序。您可以选择当前应用程序或当前区域中的其他任何应用程序。

1. 对于**后端环境**，请选择要添加的后端环境的名称。

1. 默认情况下，全栈 CI/CD 处于启用状态。取消选中此选项可关闭此后端 CI/CD 的全栈功能。关闭全栈 CI/CD 会导致应用程序在*仅拉取*模式下运行。在构建时，Amplify 只会自动生成 `aws-exports.js` 文件，而不修改后端环境。

1. 选择**保存**。Amplify 会在下次构建应用程序时应用这些更改。