

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

# 使用 AWS CodeCommit、AWS CodePipeline 和 AWS Device Farm 建置和測試 iOS 應用程式
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm"></a>

*Abdullahi Olaoye，Amazon Web Services*

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

此模式概述了建立持續整合和持續交付 (CI/CD) 管道的步驟，該管道使用 AWS CodePipeline 在 AWS 上的實際裝置上建置和測試 iOS 應用程式。模式使用 AWS CodeCommit 來存放應用程式碼、Jenkins 開放原始碼工具來建置 iOS 應用程式，以及 AWS Device Farm 來測試實際裝置上建置的應用程式。這三個階段會使用 AWS CodePipeline 在管道中協調在一起。

此模式是以 [AWS DevOps 部落格上的使用 AWS DevOps 和行動服務建置和測試 iOS 和 iPadOS 應用程式](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/)文章為基礎。 DevOps 如需詳細說明，請參閱部落格文章。

## 先決條件和限制
<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/)version 11.3 （在建置伺服器上安裝和設定）
+ 在工作站上安裝[https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html)和[設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) AWS Command Line Interface (AWS CLI)
+ [Git](https://git-scm.com/docs) 的基本知識

**限制**
+ 應用程式建置伺服器必須執行 macOS。
+ 建置伺服器必須具有公有 IP 地址，因此 CodePipeline 可以遠端連線到它以啟動建置。

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

**來源技術堆疊**
+ 內部部署 iOS 應用程式建置程序，涉及在實體裝置上使用模擬器或手動測試

**目標技術堆疊**
+ 用於儲存應用程式原始碼的 AWS CodeCommit 儲存庫
+ 使用 Xcode 建置應用程式的 Jenkins 伺服器
+ 用於在實際裝置上測試應用程式的 AWS Device Farm 裝置集區

**目標架構**

當使用者遞交變更至來源儲存庫時，管道 (AWS CodePipeline) 會從來源儲存庫擷取程式碼、啟動 Jenkins 組建，並將應用程式程式碼傳遞給 Jenkins。在建置之後，管道會擷取建置成品，並啟動 AWS Device Farm 任務，以針對裝置集區測試應用程式。

 

![CI/CD 管道使用 AWS CodePipeline 在實際裝置上建置和測試 iOS 應用程式。](http://docs.aws.amazon.com/zh_tw/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) 是一種應用程式測試服務，可讓您在各種桌面瀏覽器和真實行動裝置中測試 Web 和行動應用程式，藉此改善其品質，而無需佈建和管理任何測試基礎設施。
+ [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>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在執行 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 伺服器上，Jenkins 才能與 AWS CodePipeline 服務互動。 | DevOps | 
| 建立 Jenkins 自由樣式專案。 | 在 Jenkins 中，建立自由樣式專案。設定專案以指定觸發條件和其他建置組態選項。 | DevOps | 

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Device Farm 專案。 | 開啟 AWS Device Farm 主控台。建立專案和裝置集區以進行測試。如需說明，請參閱部落格文章。 | 開發人員 | 

### 設定來源儲存庫
<a name="configure-the-source-repository"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 CodeCommit 儲存庫。 | 建立儲存來源碼的儲存庫。 | DevOps | 
| 將您的應用程式程式碼遞交至儲存庫。 | 連線至您建立的 CodeCommit 儲存庫。將程式碼從本機機器推送至儲存庫。 | DevOps | 

### 設定管道
<a name="configure-the-pipeline"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 AWS CodePipeline 中建立管道。 | 開啟 AWS CodePipeline 主控台，並建立管道。管道會協調 CI/CD 程序的所有階段。如需說明，請參閱 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 | 
| 將測試階段新增至管道。 | 若要新增測試階段並將其與 AWS Device Farm 整合，請編輯管道。 | DevOps | 
| 啟動管道。 | 若要啟動管道和 CI/CD 程序，請選擇**釋出變更**。 | DevOps | 

### 檢視應用程式測試結果
<a name="view-application-test-results"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 檢閱測試結果。 | 在 AWS Device Farm 主控台中，選取您建立的專案，並檢閱測試結果。主控台會顯示每個測試的詳細資訊。 | 開發人員 | 

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

**此模式的Step-by-step說明**
+ [使用 AWS DevOps 和行動服務建置和測試 iOS 和 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)