241105 TIL

나고수·2024년 11월 5일
0

2024 TIL

목록 보기
79/94
post-thumbnail

① 배운 것
깃헙액션을 이용해 firebase app distribution에 자동배포하기
참고한 블로그
CREDENTIAL_FILE_CONTENT 파일 얻는법


저 블로그에서는 pr을 올릴 때 깃헙액션이 실행되도록 했는데
나는 푸시할때 깃헙액션이 실행되도록했다.
그래서 원래 글에 있었던 pr타이틀에서 버전을 가져오는 부분은 gradle에서 가져오도록 수정했다.

gradle에서 버전을 가져오려면 build.gradle에 task를 넣어줘야한다.

tasks.register("printVersionName") {
    doLast {
        println(android.defaultConfig.versionName)
    }
}

tasks.register("printVersionCode") {
    doLast {
        println(android.defaultConfig.versionCode)
    }
}

원래 블로그에서는 Release모드일때 앱디스트리뷰션에 올리는것을 구현했는데 나는 그냥 테스트용으로 debug모드일때 올리는 것을 구현했다.
그래서 중간중간에 apk파일 위치도 release -> debug로 다 바꾸고
처음에 앱 빌드하는 명령어를 ./gradlew :app:assembleDebug 으로 바꿨다.


전체 workflows

name: Android CD - Dev

env:
    GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false"
    GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true

on:
    workflow_dispatch:
    push:
        branches:
            - dev

permissions:
    contents: write

jobs:
    cd-build:
        runs-on: ubuntu-latest

        steps:
            -   name: Checkout
                uses: actions/checkout@v4

            -   name: Set up JDK 17
                uses: actions/setup-java@v3
                with:
                    distribution: 'corretto'
                    java-version: 17
                    
            -   name: Generate local.properties
                run: |
                    echo '${{ secrets.LOCAL_PROPERTIES }}' | base64 --d >> ./local.properties

            -   name: Generate google-services.json
                run: echo '${{ secrets.GOOGLE_SERVICE_JSON }}' | base64 --d > ./presentation/google-services.json

            -   name: Extract Version Name
                run: |
                    echo "VERSION_NAME=$(./gradlew -q printVersionName)" >> $GITHUB_ENV
                    echo "VERSION_CODE=$(./gradlew -q printVersionCode)" >> $GITHUB_ENV
                id: extract_version

            -   name: Build Release APK
                run: |
                    ./gradlew :app:assembleDebug

            -   name: Upload Release Build to Artifacts
                uses: actions/upload-artifact@v3
                with:
                    name: debug-artifacts
                    path: app/build/outputs/apk/debug/
                    if-no-files-found: error

            -   name: Create Github Release
                uses: softprops/action-gh-release@v1
                with:
                    tag_name: "${{ env.VERSION_NAME }}.${{ env.VERSION_CODE }}"
                    release_name: "${{ env.VERSION_NAME }}.${{ env.VERSION_CODE }}"
                    generate_release_notes: true
                    files: |
                        app/build/outputs/apk/debug/app-debug.apk

            -   name: Upload artifact to Firebase App Distribution
                uses: wzieba/Firebase-Distribution-Github-Action@v1
                with:
                    appId: ${{secrets.FIREBASE_APP_ID}}
                    serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }}
                    groups: tester
                    file: app/build/outputs/apk/debug/app-debug.apk

성공!! 🎉

👇 출시노트는 자동으로 커밋id, 커밋등록한사람, 커밋내용 으로 들어가는 것 같다~

② 회고 (restropective)
최근에 깃헙액션을 써볼 일이 좀 있었는데 몇번해보니 조오금 익숙해진것같다. cicd를 진짜해보고싶었는데 깃업액션을 이용하니 앱디스트리뷰션에 올리는것까지는 간단한것 같다. ios도 해보고 fastlane을 이용해 스토어에 직접 올리는 것도 도전해봐야겠다.
재미있다 굿

③ 개선을 위한 방법

profile
되고싶다

0개의 댓글