튜토리얼: 다음을 사용하여 Android 앱을 빌드하고 테스트하는 파이프라인 만들기 AWS Device Farm - AWS CodePipeline

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

튜토리얼: 다음을 사용하여 Android 앱을 빌드하고 테스트하는 파이프라인 만들기 AWS Device Farm

커밋이 푸시될 때마다 앱을 빌드하고 테스트하는 지속적 통합 흐름을 구성하는 데 사용할 AWS CodePipeline 수 있습니다. 이 가이드에서는 GitHub 리포지토리의 소스 코드를 사용하여 Android 앱을 빌드하고 테스트하기 위한 파이프라인을 만들고 구성하는 방법을 보여줍니다. 파이프라인은 새 GitHub 커밋의 도착을 감지하여 앱을 빌드하고 Device Farm을 테스트하는 CodeBuild데 사용합니다.

중요

콘솔에서 파이프라인을 생성하는 과정에서 S3 아티팩트 버킷이 CodePipeline 아티팩트에 사용됩니다. (이는 S3 소스 작업에 사용되는 버킷과 다릅니다.) S3 아티팩트 버킷이 파이프라인 계정과 다른 계정에 있는 경우, S3 아티팩트 버킷이 안전하고 신뢰할 수 AWS 계정 있는 소유인지 확인하십시오.

중요

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

파이프라인을 생성할 때 지역 간 작업을 추가할 수 있습니다. AWS 지역 간 작업을 위한 리소스는 작업을 실행하려는 AWS 지역과 동일한 지역에 있어야 합니다. 자세한 내용은 에 지역 간 액션 추가 CodePipeline 단원을 참조하십시오.

기존 Android 앱 및 테스트 정의를 사용하여 시도하거나 Device Farm에서 제공하는 샘플 앱 및 테스트 정의를 사용할 수 있습니다.

참고

시작하기 전에

  1. AWS Device Farm 콘솔에 로그인하고 새 프로젝트 만들기를 선택합니다.

  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 사용하도록 구성

  1. 앱 코드의 buildspec.yml루트에서 호출되는 파일을 추가하고 커밋한 다음 저장소로 푸시합니다. CodeBuild 이 파일을 사용하여 앱을 빌드하는 데 필요한 명령을 수행하고 아티팩트에 액세스합니다.

    version: 0.2 phases: build: commands: - chmod +x ./gradlew - ./gradlew assembleDebug artifacts: files: - './android/app/build/outputs/**/*.apk' discard-paths: yes
  2. (선택 사항) Calabash 또는 Appium을 사용하여 앱을 테스트한 경우 테스트 정의 파일을 리포지토리에 추가합니다. 이후 단계에서 테스트 제품군을 수행하기 위한 정의를 사용하도록 Device Farm을 구성할 수 있습니다.

    Device Farm 내장형 테스트를 사용하는 경우 이 단계를 건너뛸 수 있습니다.

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

    1. 에 AWS Management Console 로그인하고 에서 CodePipeline https://console.aws.amazon.com/codepipeline/콘솔을 엽니다.

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

    3. 파이프라인 유형에서 V2를 선택합니다. 자세한 내용은 파이프라인 유형 단원을 참조하십시오. Next(다음)를 선택합니다.

    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단계: 소스 단계 추가 페이지의 소스 제공자에서 선택합니다 GitHub.

    7. 연결에서 기존 연결을 선택하거나 새로 생성합니다. GitHub 소스 작업에 대한 연결을 만들거나 관리하려면 을 참조하십시오GitHub 연결.

    8. 리포지토리에서 소스 리포지토리를 선택합니다.

    9. 브랜치에서 사용할 브랜치를 선택합니다.

    10. 소스 작업의 나머지 기본값은 그대로 둡니다. Next(다음)를 선택합니다.

  4. Add build stage(빌드 스테이지 추가)에서 빌드 스테이지를 추가합니다.

    1. 빌드 공급자에서 AWS CodeBuild를 선택합니다. 리전이 파이프라인 리전으로 기본 설정되도록 합니다.

    2. 프로젝트 만들기를 선택합니다.

    3. 프로젝트 이름에 이 빌드 프로젝트의 이름을 입력합니다.

    4. 환경 이미지에서 이미지 관리를 선택합니다. [Operating system]에서 [Ubuntu]를 선택합니다.

    5. 실행 시간에서 표준을 선택합니다. 이미지에서 aws/codebuild/standard:5.0을 선택합니다.

      CodeBuild Android Studio가 설치된 이 OS 이미지를 사용하여 앱을 빌드합니다.

    6. 서비스 역할의 경우 기존 CodeBuild 서비스 역할을 선택하거나 새 서비스 역할을 생성합니다.

    7. Build specifications(빌드 사양)에서 Use a buildspec file(빌드 사양 파일 사용)을 선택합니다.

    8. Continue to를 선택합니다 CodePipeline. 그러면 CodePipeline 콘솔로 돌아가서 buildspec.yml 리포지토리의 를 사용하여 구성하는 CodeBuild 프로젝트가 만들어집니다. 빌드 프로젝트가 서비스 역할을 사용하여 AWS 서비스 권한을 관리합니다. 이 단계는 몇 분이 걸릴 수 있습니다.

    9. Next(다음)를 선택합니다.

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

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

  7. 파이프라인에 Device Farm 테스트 작업을 추가하세요.

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

    2. 다이어그램의 하단에서 + 단계 추가를 선택합니다. Stage name(스테이지 이름)에서 이름(예: Test)을 입력합니다.

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

    4. 작업 이름에 이름을 입력하세요.

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

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

      AWS CodePipeline 콘솔에서 파이프라인 다이어그램의 정보 아이콘을 마우스로 가리키면 각 단계의 출력 아티팩트 이름을 찾을 수 있습니다. 파이프라인이 소스 단계에서 직접 앱을 테스트하는 경우 선택하세요. SourceArtifact 파이프라인에 빌드 단계가 포함되어 있다면 선택하세요 BuildArtifact.

    7. 에서 ProjectIdDevice Farm 프로젝트 ID를 입력합니다. 이 자습서의 시작 부분에 있는 단계를 따라 프로젝트 ID를 검색합니다.

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

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

      다음은 유효한 값 AppType목록입니다.

      • iOS

      • Android

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

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

      다음은 유효한 값 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

      참고

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

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

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

    14. 저장(Save)을 선택합니다.

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

    16. 변경 사항을 제출하고 파이프라인 빌드를 시작하려면 변경 사항 배포를 선택한 다음 릴리스를 선택하세요.