Firebase Test Lab에서 테스트 설정을 CircleCI Orbs로 게시

개요



지난 주 DeployGate에서 APK 배포 설정을 CircleCI Orbs로 게시라는 기사를 썼습니다만, Orbs가 재미있기 때문에 Android어드벤트 캘린더도 Orbs네타로 쓰려고 합니다.

CircleCI에서 Firebase Test Lab에서 테스트를 실행하기 위한 설정은 Testing With Firebase Test Lab 형식으로 공식 문서에 정리되어 있지만, 보다 간단하게 설정을 할 수 있는 것이 편리합니다.

이번에는 CircleCI Orbs로 설정을 게시하여 Firebase Test Lab의 설정을 쉽게 할 수 없는지 시도했습니다.

Orb란?


.circleci/config.yml 에서의 설정 내용을 패키지로서 정리해, 재이용 가능한 형태로 공개할 수 있는 기능입니다. CircleCI 2.1 configuration (2018/12/7 시점에서 미리보기)에서 추가되었습니다. Orb에 대한 자세한 내용은 공식 문서을 참조하십시오.

Orb로 Firebase Test Lab에 대한 설정 내용을 함께 게시하면 Firebase Test Lab의 테스트를 포함한 Workflow를 보다 신속하게 구축할 수 있습니다.

공개된 Orb



Orb registry의 페이지는 이쪽입니다.
htps : // 해 rc ぇ시. 코 m / 오 rbs / 레기 스트리 / 오 rb / 호리에 1024

또, 소스 코드는 이쪽이 됩니다.
htps : // 기주 b. 코 m / 호리에 1024 / 오 rb_

사용법



Enable build processing 사용



CircleCI 2.1 configuration은 2018/12/7 시점에서 미리보기이므로 프로젝트의 Settings->Advanced Settings에서 Enable build processing을 On로 합니다.



Orb import


.circleci/config.yml에 다음 설정을 추가하고 Orb를 가져옵니다. version은 2.1를 지정하십시오.
version: 2.1

orbs:
  firebase: horie1024/firebase-test-lab@volatile

명령 실행


firebase/test 명령을 사용하여 Firebase Test Lab에서 테스트를 시작합니다.
firebase/test:
    service_account_key: SERVICE_ACCOUNT_KEY
    firebase_project_id: FIREBASE_PROJECT_ID
    type: instrumentation
    test_settings: test_settings.yml:instrumentation-test
service_account_key는 GCP Project 서비스 계정 키1를 base64로 인코딩한 값을 포함하는 환경 변수를 지정합니다. firebase_project_id는 Firebase 프로젝트의 ID를, typeinstrumentation 또는 robo를 지정합니다.
test_settings에는 다음과 같은 yml을 지정하여 테스트를 실행할 장치를 지정할 수 있습니다.
instrumentation-test:
  device:
    - model: Nexus5
      version: 21
      locale: ja_JP
      orientation: portrait
    - model: mata
      version: 25
      locale: ja_JP
      orientation: portrait

기타 매개변수에 대한 자세한 내용은 Orb 문서를 참조하세요.

최종 config.yml은 다음과 같습니다.
version: 2.1

orbs:
  firebase: horie1024/firebase-test-lab@volatile

jobs:
  build:
    docker:
      - image: circleci/android:api-28-alpha
    steps:
      - checkout
      - run:
          name: Download Dependencies
          command: ./gradlew androidDependencies
      - run:
          name: Build debug APK and release APK
          command: |
              ./gradlew :app:assembleDebug
              ./gradlew :app:assembleDebugAndroidTest
      - firebase/test:
          service_account_key: SERVICE_ACCOUNT_KEY
          firebase_project_id: FIREBASE_PROJECT_ID
          type: instrumentation
          test_settings: test_settings.yml:instrumentation-test

Android 프로젝트에서의 사용 예



실제로 이번에 공개한 Orb를 사용하여 Firebase Test Lab에서 테스트를 실행해 보았습니다. 샘플 프로젝트는 여기입니다.

테스트 결과 확인



테스트 결과는 Artifacts 탭에서 확인할 수 있으며 테스트 실행 중인 화면의 모습도 쉽게 확인할 수 있습니다.



요약



설정을 Orb로 게시하면 CircleCI에서 Firebase Test Lab에서 더 쉽게 테스트를 실행할 수 있다고 생각합니다.

이번에 공개한 Orb에 부족한 기능이나 결함이 있으면 Pull Request를 잘 부탁드립니다 🙏




서비스 계정을 만들고 환경 변수에 저장하는 방법은 이 기사에 요약되어 있습니다. 

좋은 웹페이지 즐겨찾기