자습서: AWS Device Farm를 사용하여 iOS 앱을 테스트하는 파이프라인 생성 - AWS CodePipeline

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

자습서: AWS Device Farm를 사용하여 iOS 앱을 테스트하는 파이프라인 생성

AWS CodePipeline을 사용하여 소스 버킷이 변경될 때마다 앱을 테스트하는 연속 통합 흐름을 쉽게 구성할 수 있습니다. 이 자습서는 S3 버킷에서 빌드된 iOS 앱을 테스트하는 파이프라인을 생성하고 구성하는 방법을 보여줍니다. 파이프라인은 Amazon CloudWatch Events을 통해 저장된 변경 사항의 도착을 감지한 다음 Device Farm을 사용하여 빌드된 애플리케이션을 테스트합니다.

중요

이 절차에서 파이프라인에 추가하는 대부분의 작업에는 파이프라인을 생성하기 전에 생성해야 하는 AWS 리소스가 포함됩니다. 소스 작업의 AWS 리소스는 항상 파이프라인을 생성한 AWS 리전과 동일한 리전에 생성해야 합니다. 예를 들어, 미국 동부(오하이오) 리전에서 파이프라인을 생성하는 경우, CodeCommit 리포지토리도 미국 동부(오하이오) 리전에 있어야 합니다.

파이프라인을 생성할 때 교차 리전 작업을 추가할 수 있습니다. 교차 리전 작업을 위한 AWS 리소스는 작업을 실행하려는 AWS 리전과 동일한 리전에 있어야 합니다. 자세한 내용은 CodePipeline에 교차 리전 작업 추가 섹션을 참조하세요.

기존 iOS 앱을 사용하여 시도하거나 샘플 iOS 앱을 사용할 수 있습니다.

참고

시작하기 전에

  1. AWS Device Farm 콘솔에 로그인하여 Create a new project(새 프로젝트 생성)를 선택합니다.

  2. 프로젝트를 선택합니다. 브라우저에서 새 프로젝트의 URL을 복사합니다. URL에 프로젝트 ID가 포함되어 있습니다.

  3. 이 프로젝트 ID를 복사하여 보관합니다. CodePipeline에서 파이프라인을 생성할 때 사용합니다.

    다음은 프로젝트 URL의 예입니다. 프로젝트 ID를 추출하려면 projects/ 뒤의 값을 복사합니다. 이 예시에서 제품 ID는 eec4905f-98f8-40aa-9afc-4c1cfexample입니다.

    https://<region-URL>/devicefarm/home?region=us-west-2#/projects/eec4905f-98f8-40aa-9afc-4c1cfexample/runs

Device Farm 테스트를 사용하도록 CodePipeline 구성(Amazon S3 예)

  1. 버전 관리가 활성화된 S3 버킷을 생성하거나 사용합니다. 1단계: 애플리케이션에 대한 S3 버킷 생성의 지침을 따라 S3 버킷을 생성합니다.

  2. 버킷의 Amazon S3 콘솔에서 업로드를 선택하고 지침을 따라 .zip 파일을 업로드합니다.

    샘플 애플리케이션은 .zip 파일로 압축해야 합니다.

  3. 파이프라인을 생성하고 소스 단계를 추가하려면 다음을 수행합니다.

    1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/codepipeline/에서 CodePipeline 콘솔을 여세요.

    2. 파이프라인 생성을 선택합니다. 1단계: 파이프라인 설정 선택 페이지의 파이프라인 이름에 파이프라인 이름을 입력합니다.

    3. 파이프라인 유형에서 이 자습서의 목적에 맞는 V1을 선택합니다. V2를 선택할 수도 있지만 파이프라인 유형별 특성과 가격이 다르다는 점에 유의하십시오. 자세한 내용은 파이프라인 유형 섹션을 참조하세요.

    4. 서비스 역할에서 새 서비스 역할을 선택된 상태로 두고, 역할 이름도 변경하지 않고 그대로 둡니다. 이미 있는 경우 기존 서비스 역할을 사용하도록 선택할 수도 있습니다.

      참고

      2018년 7월 이전에 생성된 CodePipeline 서비스 역할을 사용할 경우 Device Farm에 대한 권한을 추가해야 합니다. 이렇게 하려면 IAM 콘솔을 열고 역할을 찾은 다음 역할의 정책에 다음 권한을 추가합니다. 자세한 내용은 CodePipeline 서비스 역할에 권한 추가 섹션을 참조하세요.

      { "Effect": "Allow", "Action": [ "devicefarm:ListProjects", "devicefarm:ListDevicePools", "devicefarm:GetRun", "devicefarm:GetUpload", "devicefarm:CreateUpload", "devicefarm:ScheduleRun" ], "Resource": "*" }
    5. [Advanced settings]의 설정은 기본값 그대로 두고, [Next]를 선택합니다.

    6. 2단계: 소스 단계 추가 페이지의 소스 공급자에서 Amazon S3를 선택합니다.

    7. Amazon S3 위치에 버킷(예: my-storage-bucket) 및 객체 키(예: .zip 파일의 s3-ios-test-1.zip)를 입력합니다.

    8. 다음을 선택합니다.

  4. 빌드에서 파이프라인에 대한 자리 표시자 빌드 단계를 생성합니다. 이렇게 하면 마법사에서 파이프라인을 생성할 수 있습니다. 마법사를 사용하여 두 단계 파이프라인을 만든 후에는 자리 표시자 빌드 단계가 더 이상 필요 없습니다. 파이프라인이 완료된 후에는 이 두 번째 단계가 삭제되고 새로운 테스트 단계가 5단계에 추가됩니다.

    1. 빌드 공급자에서 Jenkins 추가를 선택합니다. 이 빌드 선택은 자리 표시자입니다. 사용되지 않습니다.

    2. 공급자 이름에 이름을 입력합니다. 이름은 자리 표시자입니다. 사용되지 않습니다.

    3. 서버 URL에 텍스트를 입력합니다. 텍스트는 자리 표시자입니다. 사용되지 않습니다.

    4. 프로젝트 이름에 이름을 입력합니다. 이름은 자리 표시자입니다. 사용되지 않습니다.

    5. 다음을 선택합니다.

    6. 4단계: 배포 단계 추가 페이지에서 Skip deploy stage(배포 단계 건너뛰기)를 선택한 다음 Skip(건너뛰기)을 다시 선택하여 경고 메시지를 수락합니다.

    7. 5단계: 검토 페이지에서 파이프라인 생성을 선택합니다. 소스 및 빌드 단계를 보여주는 다이어그램을 확인해야 합니다.

      
                파이프라인 보기입니다.
  5. 다음과 같이 파이프라인에 Device Farm 테스트 작업을 추가합니다.

    1. 오른쪽 위에서 편집을 선택합니다.

    2. Edit stage(단계 편집)을 선택합니다. Delete을 선택합니다. 그러면 자리 표시자 단계가 삭제됩니다(이제 더 이상 파이프라인 생성에 필요 없으므로).

    3. 다이어그램의 하단에서 + 단계 추가를 선택합니다.

    4. 스테이지 이름에서 스테이지 이름(예: 테스트)을 입력한 다음 Add stage(스테이지 추가)를 선택합니다.

    5. + Add action group(작업 그룹 추가)을 선택합니다.

    6. 작업 이름에서 이름(예: DeviceFarmTest)을 입력합니다.

    7. 작업 공급자에서 AWS Device Farm을 선택합니다. 리전이 파이프라인 리전으로 기본 설정되도록 합니다.

    8. 입력 아티팩트에서 SourceArtifact과 같이 파이프라인의 테스트 스테이지 전에 오는 단계의 출력 아티팩트와 일치하는 입력 아티팩트를 선택합니다.

      AWS CodePipeline 콘솔에서 파이프라인 다이어그램의 정보 아이콘 위로 마우스 커서를 가져갈 때 각 단계의 출력 아티팩트 이름을 찾을 수 있습니다. 소스 스테이지에서 파이프라인이 바로 앱을 테스트하면 SourceArtifact를 선택합니다. 파이프라인이 빌드 단계를 포함하면 BuildArtifact를 선택합니다.

    9. ProjectId에서 Device Farm 프로젝트 ID를 선택합니다. 이 자습서의 시작 부분에 있는 단계를 따라 프로젝트 ID를 검색합니다.

    10. DevicePoolArn에서 디바이스 풀의 ARN을 입력합니다. 상위 디바이스용 ARN을 포함하여 프로젝트에 사용 가능한 디바이스 풀 ARN을 가져오려면 AWS CLI를 사용하여 다음 명령을 입력합니다.

      aws devicefarm list-device-pools --arn arn:aws:devicefarm:us-west-2:account_ID:project:project_ID
    11. AppType에서 iOS를 입력합니다.

      AppType의 유효한 값 목록은 다음과 같습니다.

      • iOS

      • Android

    12. 에서 컴파일된 앱 패키지의 경로를 입력합니다. 경로는 테스트 단계용 입력 아티팩트의 루트와 상대적입니다. 일반적으로 이 경로는 ios-test.ipa와 유사합니다.

    13. TestType에 테스트 유형을 입력한 다음, 테스트에 테스트 정의 파일의 경로를 입력합니다. 경로는 테스트용 입력 아티팩트의 루트와 상대적입니다.

      내장형 Device Farm 테스트 중 하나를 사용하는 경우 Device Farm 프로젝트에 구성된 테스트 유형(예: BUILTIN_FUZZ)을 선택합니다. FuzzEventCount에서 밀리초 단위로 시간을 입력합니다(예: 6000). FuzzEventThrottle에서 밀리초 단위로 시간을 입력합니다(예: 50).

      내장형 Device Farm 테스트 중 하나를 사용하지 않는 경우, 테스트 유형을 선택한 다음 테스트에서 테스트 정의 파일의 경로를 입력합니다. 경로는 테스트용 입력 아티팩트의 루트와 상대적입니다.

      TestType의 유효한 값 목록은 다음과 같습니다.

      • APPIUM_JAVA_JUNIT

      • APPIUM_JAVA_TESTNG

      • APPIUM_NODE

      • APPIUM_RUBY

      • APPIUM_PYTHON

      • APPIUM_WEB_JAVA_JUNIT

      • APPIUM_WEB_JAVA_TESTNG

      • APPIUM_WEB_NODE

      • APPIUM_WEB_RUBY

      • APPIUM_WEB_PYTHON

      • BUILTIN_FUZZ

      • INSTRUMENTATION

      • XCTEST

      • XCTEST_UI

      참고

      사용자 지정 환경 노드는 지원되지 않습니다.

    14. 나머지 필드에서 테스트 및 애플리케이션 유형에 적절한 구성을 제공하세요.

    15. (선택 사항) 고급에서 테스트 실행 시 구성 정보를 제공합니다.

    16. 저장을 선택합니다.

    17. 편집 중인 스테이지에서 완료를 선택합니다. AWS CodePipeline 창에서 저장을 선택한 다음 경고 메시지에서 저장을 선택합니다.

    18. 변경 사항을 제출하고 파이프라인 실행을 시작하려면 변경 사항 배포를 선택한 다음 릴리스를 선택합니다.