

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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>

이 패턴은 AWS CodePipeline을 사용하여 AWS의 실제 디바이스에서 iOS 애플리케이션을 구축하고 테스트하는 지속적 통합 및 지속적 전송(CI/CD) 파이프라인을 생성하는 단계를 설명합니다. 이 패턴은 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/)하는 게시물을 기반으로 합니다. 자세한 지침은 블로그 게시물을 참조하세요.

## 사전 조건 및 제한 사항
<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(빌드 서버에 설치 및 설정)
+ 워크스테이션에 [설치](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를 실행해야 합니다.
+ CodePipeline이 원격으로 연결하여 빌드를 시작할 수 있도록 빌드 서버에 퍼블릭 IP 주소가 있어야 합니다.

## 아키텍처
<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/ko_kr/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>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| macOS를 실행하는 빌드 서버에 Jenkins를 설치합니다. | Jenkins가 애플리케이션을 빌드하는 데 사용되므로 먼저 빌드 서버에 Jenkins 명령을 사용해야 합니다. 이 작업과 후속 작업에 대한 자세한 지침을 보려면 [Building and testing iOS and iPadOS apps with AWS DevOps and mobile services](https://aws.amazon.com/blogs/devops/building-and-testing-ios-and-ipados-apps-with-aws-devops-and-mobile-services/) AWS Blog 게시물과 이 패턴 끝에 있는 [관련 리소스](#build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources) 섹션의 기타 리소스를 참조하세요. | 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>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Device Farm 프로젝트를 생성합니다. | AWS Device Farm 콘솔을 엽니다. 테스트용 프로젝트와 디바이스 풀을 생성합니다. 지침은 블로그 게시물을 참조하세요. | 개발자 | 

### 소스 리포지토리 구성
<a name="configure-the-source-repository"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| CodeCommit 리포지토리를 생성합니다. | 소스 코드를 저장할 리포지토리를 만드세요. | DevOps | 
| 리포지토리에 애플리케이션 코드를 커밋합니다. | 생성한 CodeCommit 리포지토리에 연결합니다. 로컬 시스템에서 리포지토리로 코드를 푸시합니다. | DevOps | 

### 파이프라인 구성
<a name="configure-the-pipeline"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| AWS CodePipeline에서 파이프라인을 생성합니다. | AWS CodePipeline 콘솔을 열고 파이프라인을 생성합니다. 파이프라인은 CI/CD 프로세스의 모든 단계를 조정합니다. 지침은 AWS Blog 게시물 [Building and testing iOS and iPadOS apps with AWS DevOps and mobile services](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>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 테스트 결과를 확인합니다. | AWS Device Farm 콘솔에서 생성한 프로젝트를 선택하고 테스트 결과를 검토합니다. 콘솔에는 각 테스트의 세부 정보가 표시됩니다. | 개발자 | 

## 관련 리소스
<a name="build-and-test-ios-apps-with-aws-codecommit-aws-codepipeline-and-aws-device-farm-resources"></a>

**이 패턴에 사용되는 단계별 지침**
+ [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)