Android Github Actions CI/CD 설정하기

pass·2024년 5월 12일
0

github

목록 보기
4/4

⚡️ 'CI/CD'란 'Continuous Integration / Continuous Delivery, Continuous Deployment'의 약자로 '지속적 통합 / 지속적 배포'라는 뜻을 가지고 있다. 이번 글에서는 Github Actions를 사용하여 Andorid에서 CI/CD를 설정하는 예시를 작성하였다.


✓ github actions

  1. 프로젝트 Actions 탭에서 android 검색

  2. Android CI Configure 선택

  3. android.yml 파일 생성

name: Android CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: set up JDK 11
      uses: actions/setup-java@v3
      with:
        java-version: '11'
        distribution: 'temurin'
        cache: gradle

    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    - name: Build with Gradle
      run: ./gradlew build

위 코드는 Android CI를 생성하면 기본적으로 생성되는 android.yml 파일 코드이다.
push 및 pull request 수행 시 JDK 11 환경에서 간단하게 build 할 수 있도록 설정되어 있으므로 내용을 좀 더 추가해보려고 한다.

추가 및 수정 내용

  1. JDK 11 -> JDK 17로 변경
  2. 테스트 전 Clean Build
  3. 주어진 모든 Unit Test 진행
  4. 주어진 모든 UI 테스트 진행 : API 레벨 29, 에뮬레이터 Nexus 6
  5. Debug APK 파일 생성
  6. Release APK 파일 생성

수정 후 코드

name: Android CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: set up JDK 17
      uses: actions/setup-java@v3
      with:
        java-version: '17'
        distribution: 'temurin'
        cache: gradle

    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    - name: Clean Bulid
      run: ./gradlew clean
    - name: Run Unit Test
      run: ./gradlew test
      
    - name: Run Android Test
      uses: reactivecircus/android-emulator-runner@v2
      with:
       api-level: 29
       target: default
       arch: x86_64
       profile: Nexus 6
       script: ./gradlew connectedCheck --stacktrace
       
    - name: Assemble
      run: ./gradlew assemble
      
    - name: Upload Debug APK
      uses: actions/upload-artifact@v3
      with:
       name: debug
       path: ./app/build/outputs/apk/debug/app-debug.apk

    - name: Upload Release APK
      uses: actions/upload-artifact@v3
      with:
       name: release
       path: ./app/build/outputs/apk/release/app-release-unsigned.apk

✓ 결과

android ci 생성이 완료되고 나면 main branch에 push 혹은 pull reqeust 수행 시 자동으로 yml 파일 내용이 실행된다.

profile
안드로이드 개발자 지망생

0개의 댓글