GitHub Actions를 사용하여 Capacitor Android 앱 번들 빌드

이 게시물에서는 Capacitor 에 업로드할 준비가 된 서명된 앱 번들을 생성하는 Google Play Console 앱에 대한 GitHub 작업 워크플로를 설정합니다.

높은 수준에서 다음을 수행합니다.
  • 키 저장소 및 서명 키 설정
  • GitHub Secrets에 키 저장소 및 서명 키 추가
  • GitHub 작업 워크플로 만들기

  • 시작하자! 🤩

    키 저장소 생성



    앱 릴리스에 서명할 키 저장소가 이미 있을 수 있지만 그렇지 않은 경우 키 저장소를 만드는 방법은 다음과 같습니다.


    keytool -genkey -v -keystore android/release.jks -keyalg RSA -keysize 2048 -validity 10000 -alias release
    


    데이터가 올바른지 묻는 메시지가 표시될 때까지 따르고 ​​yes를 입력하여 키를 저장합니다. 실수로 저장소에 커밋하지 않도록 .gitinore에 추가하는 것을 잊지 마십시오. 키 저장소는 비밀로 유지되어야 합니다.

    키 저장소 및 암호를 GitHub 비밀로 추가



    GitHub의 설정 > 비밀 > 작업에서 저장소에 대한 비밀을 추가할 수 있습니다.

    그러나 비밀은 문자열일 수 있고 키 저장소는 실제로 이진 데이터이기 때문에 빠르게 문제가 발생합니다.
    base64 라는 편리한 CLI 유틸리티가 있습니다. 대부분의 Linux 배포판에 사전 설치되어 있어야 합니다. 이를 사용하여 바이너리 파일을 문자열 표현으로 변환할 수 있습니다. 실행해 보겠습니다.


    base64 android/release.jks > android/release.jks.base64
    


    이제 열면android/release.jks.base64 일반 텍스트 파일이 표시됩니다.

    이제 RELEASE_KEYSTORE 라는 이름의 비밀로 추가할 수 있습니다. 다음과 같이 표시되어야 합니다.



    ℹ️ base64 표현에 대해 걱정하지 마십시오. GitHub 작업에서 파일로 다시 변환합니다.

    키 저장소 비밀번호도 RELEASE_KEYSTORE_PASSWORD 로 추가해 보겠습니다. 이제 다음과 같이 표시되어야 합니다.



    GitHub 작업 워크플로 추가



    드디어 워크플로를 추가할 시간입니다! 다음 파일을 .github/workflows/android-build.yml에 추가하십시오.


    name: Build Android
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        name: Build APK
        runs-on: ubuntu-latest
        steps:
          - name: Checkout source
            uses: actions/checkout@v2
    
          - name: Setup java
            uses: actions/setup-java@v1
            with:
                distribution: 'zulu'
                java-version: '11'
    
          - name: Setup Node.js
            uses: actions/setup-node@v1
            with:
              node-version: 16.x
    
          - name: Install app dependencies
            run: npm install
    
          - name: Build Svelte app
            run: npm run build
    
          - name: Capacitor update
            run: npx cap update
    
          - name: Capacitor copy
            run: npx cap copy
    
          - name: Build app bundle
            run: cd android && gradle bundle
    
          - name: Extract Android signing key from env
            run: |
              echo "${{ secrets.RELEASE_KEYSTORE }}" > android/release.jks.base64
              base64 -d android/release.jks.base64 > android/release.decrypted.jks
    
          - name: Sign dev build
            run: jarsigner -keystore android/release.decrypted.jks -storepass "${{ secrets.RELEASE_KEYSTORE_PASSWORD }}" -signedjar ./android/app/build/outputs/bundle/release/app-release-signed.aab ./android/app/build/outputs/bundle/release/app-release.aab release
    
          - name: Upload release bundle
            uses: actions/upload-artifact@v2
            with:
              name: app-release
              path: android/app/build/outputs/bundle/release/app-release-signed.aab
              retention-days: 60
    


    ℹ️ 빌드할 분기on, 선호하는 Java 버전 및 retention-days 구성 옵션을 사용하여 출력 아티팩트에 대해 원하는 보존 기간과 같은 몇 가지 사항을 조정할 수 있습니다.)

    변경 사항을 푸시한 후 빌드가 실행되는 것을 볼 수 있는 저장소의 작업 탭으로 이동할 수 있습니다.

    ❌ 빌드가 완료되지 않으면 위의 워크플로 단계를 사용하여 로컬에서 빌드를 시도하십시오. 커패시터 구성에 문제가 있을 수 있습니다.

    빌드가 성공적으로 실행되면 빌드 실행 페이지에서 직접 번들을 다운로드할 수 있습니다!



    여기에서 Play Console에 서명된 번들을 직접 업로드할 수 있습니다! 🚀

    ℹ️ Play 스토어에 업로드하려는 모든 새 버전에 대해 versionCode에서 android/app/build.gradle를 부딪쳐야 합니다.

    링크 및 승인



    이 게시물이 존재하지 않을 수 있었던 아래 게시물에 특별한 감사를 드립니다. 🙂
  • https://dico.duba.dev/building-a-vue-3-native-android-app-with-capacitor-on-wsl2-ubuntu-20-04
  • https://gist.github.com/B45i/2afef964613f0698d881e0647a67fb43
  • https://stefma.medium.com/how-to-store-a-android-keystore-safely-on-github-actions-f0cef9413784


  • Liam BrieseUnsplash의 사진

    좋은 웹페이지 즐겨찾기