

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

# 具有全栈 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 中连接*开发*分支（此时假设*开发*和*主*分支相同），然后选择*创建*。