① 배운 것
깃헙액션을 이용해 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을 이용해 스토어에 직접 올리는 것도 도전해봐야겠다.
재미있다 굿
③ 개선을 위한 방법