

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

# 使用 AWS CodeCommit、AWS 和 AWS Device Farm 构建和测试 iOS 应用程序 CodePipeline
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm"></a>

*Abdullahi Olaoye，Amazon Web Services*

## Summary
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-summary"></a>

此模式概述了创建持续集成和持续交付 (CI/CD) 管道的步骤，该管道使用 AWS 在 AWS CodePipeline 上的真实设备上构建和测试 iOS 应用程序。该模式使用 AWS CodeCommit 来存储应用程序代码，使用 Jenkins 开源工具来构建 iOS 应用程序，使用 AWS Device Farm 在真实设备上测试构建的应用程序。这三个阶段是使用 AWS 在管道中共同编排的。 CodePipeline

这种模式基于 AWS DevOps 博客上的 “使用 AW [S 和移动服务构建和测试 iOS DevOps 和 iPadOS 应用程序](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/)” 一文。有关详细说明，请参阅此博客文章。

## 先决条件和限制
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-prereqs"></a>

**先决条件**
+ 一个活跃的 AWS 账户
+ 一个 Apple 开发人员账户
+ 编译服务器 (macOS)
+ [Xcode](https://developer.apple.com/xcode/) 版本 11.3（已在编译服务器上安装和设置）
+ AWS 命令行界面（AWS CLI）已在工作站上[安装](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html)并[配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Git](https://git-scm.com/docs) 基础知识

**限制**
+ 应用程序编译服务器必须运行 macOS。
+ 生成服务器必须具有公有 IP 地址，因此 CodePipeline 可以远程连接到该服务器以启动构建。

## 架构
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-architecture"></a>

**源技术堆栈**
+ 本地 iOS 应用程序构建过程，涉及在物理设备上使用模拟器或手动测试

**目标技术堆栈**
+ 用于 CodeCommit 存储应用程序源代码的 AWS 存储库
+ 使用 Xcode 构建应用程序的 Jenkins 服务器
+ 用于在真实设备上测试应用程序的 AWS Device Farm 设备池

**目标架构**

当用户向源存储库提交更改时，管道 (AWS CodePipeline) 会从源存储库获取代码，启动 Jenkins 构建，然后将应用程序代码传递给 Jenkins。构建完成后，管道会检索构建构件并启动 AWS Device Farm 作业，根据设备池测试应用程序。

 

![\[CI/CD 管道使用 AWS CodePipeline 在真实设备上构建和测试 iOS 应用程序。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/06fbd82f-4aed-441c-818c-5f89f56af78e/images/0ae3d7b6-b40c-44ef-9580-8c8266c3d841.png)


## 工具
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-tools"></a>
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) 是一项完全托管的持续交付服务，可帮助您自动执行发布管道，实现快速可靠的应用程序和基础设施更新。 CodePipeline 每次发生代码更改时，都会根据您定义的发布模型自动执行发布过程的构建、测试和部署阶段。
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 是一项完全托管的源代码控制服务，可托管基于 Git 的安全存储库。它使团队可以轻松地在安全且高度可扩展的生态系统中就代码进行协作。 CodeCommit 无需操作自己的源代码控制系统或担心扩展其基础架构。
+ [AWS Device Farm](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) 是一项应用程序测试服务，可让您通过在各种桌面浏览器和真实移动设备上测试网页和移动应用程序来提高其质量，而无需预调配和管理任何测试基础设施。
+ [Jenkins](https://www.jenkins.io/) 是一款开源自动化服务器，它使开发人员能够构建、测试和部署其软件。

## 操作说明
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-epics"></a>

### 设置构建环境
<a name="set-up-the-build-environment"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 在运行 macOS 的编译服务器上安装 Jenkins。 | Jenkins 将用于构建应用程序，因此您必须首先将其安装至编译服务器上。要获取有关此任务和后续任务的详细说明，请参阅本模式末尾的 “[相关](#build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources)资源” 部分中的 AWS 博客文章 “[使用 AWS DevOps 和移动服务以及其他资源构建和测试 iOS 和 iPadOS 应用程序](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/)”。 | DevOps | 
| 配置 Jenkins。 | 按屏幕上的说明进行配置 Jenkins。 | DevOps | 
| 安装适用于 Jenkins 的 AWS CodePipeline 插件。 | 为了让 Jenkins 与 AWS CodePipeline 服务进行交互，此插件必须安装在 Jenkins 服务器上。 | DevOps | 
| 创建一个 Jenkins 自由式项目。 | 在 Jenkins 中创建一个自由式项目。配置项目以指定触发器和其他构建配置选项。 | DevOps | 

### 配置 AWS Device Farm
<a name="configure-aws-device-farm"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 Device Farm 项目。 | 打开 AWS Device Farm 控制台。创建一个项目和一个设备池进行测试。有关说明，请参见博客文章。 | 开发者版 | 

### 配置源存储库
<a name="configure-the-source-repository"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 CodeCommit 存储库。 | 创建一个存储源代码的存储库。 | DevOps | 
| 将应用程序代码提交至存储库。 | Connect 连接到您创建的 CodeCommit 存储库。将代码从本地计算机推送至存储库。 | DevOps | 

### 配置管道
<a name="configure-the-pipeline"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 在 AWS 中创建管道 CodePipeline。 | 打开 AWS CodePipeline 控制台，然后创建管道。管道协调了流程的所有阶段。 CI/CD 有关说明，请参阅 AWS 博客文章使用 AW [S 和移动服务构建和测试 iOS DevOps 和 iPadOS 应用程序](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/)。 | DevOps | 
| 向管道中添加测试阶段。 | 要添加测试阶段并将其与 AWS Device Farm 集成，请编辑该管道。 | DevOps | 
| 启动管道。 | 要启动管道和 CI/CD 流程，请选择 “**发布更改**”。 | DevOps | 

### 查看应用程序测试结果
<a name="view-application-test-results"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 查看测试结果。 | 在 AWS Device Farm 控制台，选择您创建的项目，然后查看测试结果。控制台将显示每项测试详细信息。 | 开发者版 | 

## 相关资源
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources"></a>

**Step-by-step 此模式的说明**
+ 使用 AW@@ [S 和移动服务构建和测试 iOS DevOps 和 iPadOS 应用程序](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/)（AWS DevOps 博客文章）

**配置 AWS Device Farm**
+ [AWS Device Farm 控制台](https://console.aws.amazon.com/devicefarm)

**配置源存储库**
+ [创建 AWS CodeCommit 存储库](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-repository.html)
+ [连接到 AWS CodeCommit 存储库](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html)

**配置管道**
+ [AWS CodePipeline 控制台](https://console.aws.amazon.com/codesuite/codepipeline/home)

**其他资源**
+ [AWS CodePipeline 文档](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)
+ [AWS CodeCommit 文档](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)
+ [AWS Device Farm 文档](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html)
+ [Jenkins 文档](https://www.jenkins.io/doc/)
+ [在 macOS 上安装 Jenkins](https://www.jenkins.io/download/weekly/macos/)
+ [适用于 Jenkins 的 AWS CodePipeline 插件](https://plugins.jenkins.io/aws-codepipeline/)
+ [Xcode 安装](https://developer.apple.com/xcode/)
+ AWS CLI [安装](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html)和[配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Git 文档](https://git-scm.com/docs)