Skip to content

[PC-1614] Billing 모듈 의존성 리팩토링 (#201) #81

[PC-1614] Billing 모듈 의존성 리팩토링 (#201)

[PC-1614] Billing 모듈 의존성 리팩토링 (#201) #81

Workflow file for this run

name: Android CD
on:
push:
branches: ["qa", "release"]
workflow_dispatch:
inputs:
target:
description: "배포 대상 환경 (qa 또는 release)"
required: true
default: "qa"
type: choice
options:
- qa
- release
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: gradle
- name: Gradle cache
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Set up local.properties
run: |
echo "KAKAO_APP_KEY=${{ secrets.KAKAO_APP_KEY }}" >> local.properties
echo "AMPLITUDE_API_KEY=${{ secrets.AMPLITUDE_API_KEY }}" >> local.properties
echo "PIECE_DEV_BASE_URL=${{ secrets.PIECE_DEV_BASE_URL }}" >> local.properties
echo "PIECE_PROD_BASE_URL=${{ secrets.PIECE_PROD_BASE_URL }}" >> local.properties
echo "PIECE_NOTICE_URL=${{ secrets.PIECE_NOTICE_URL }}" >> local.properties
echo "PIECE_PRIVACY_AND_POLICY_URL=${{ secrets.PIECE_PRIVACY_AND_POLICY_URL }}" >> local.properties
echo "PIECE_TERMS_OF_USE_URL=${{ secrets.PIECE_TERMS_OF_USE_URL }}" >> local.properties
echo "PIECE_CHANNEL_TALK_URL=${{ secrets.PIECE_CHANNEL_TALK_URL }}" >> local.properties
echo "PIECE_MARKET_URL=${{ secrets.PIECE_MARKET_URL }}" >> local.properties
echo "GOOGLE_WEB_CLIENT_ID=${{ secrets.GOOGLE_WEB_CLIENT_ID }}" >> local.properties
- name: Decode keystore file
run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > ./app/upload-keystore.jks
- name: Set up keystore.properties
run: |
echo "STORE_FILE_PATH=./upload-keystore.jks" >> keystore.properties
echo "STORE_PASSWORD=${{ secrets.STORE_PASSWORD }}" >> keystore.properties
echo "KEY_ALIAS_RELEASE=${{ secrets.KEY_ALIAS_RELEASE }}" >> keystore.properties
echo "KEY_PASSWORD_RELEASE=${{ secrets.KEY_PASSWORD_RELEASE }}" >> keystore.properties
echo "KEY_ALIAS_DEBUG=${{ secrets.KEY_ALIAS_DEBUG }}" >> keystore.properties
echo "KEY_PASSWORD_DEBUG=${{ secrets.KEY_PASSWORD_DEBUG }}" >> keystore.properties
- name: Create google-services.json
run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json
- name: KtlintCheck
run: ./gradlew ktlintcheck
- name: Test
run: ./gradlew test --stacktrace
- name: Build QA APK
if: github.ref == 'refs/heads/qa' || inputs.target == 'qa'
run: ./gradlew assembleqa --stacktrace
- name: Install Firebase CLI
if: github.ref == 'refs/heads/qa' || inputs.target == 'qa'
run: curl -sL firebase.tools | bash
- name: Upload QA APK to Firebase App Distribution
if: github.ref == 'refs/heads/qa' || inputs.target == 'qa'
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
run: |
firebase appdistribution:distribute app/build/outputs/apk/qa/app-qa.apk \
--app ${{ secrets.FIREBASE_APP_ID }} \
--release-notes "QA 버전 배포 (Build: ${{ github.run_number }})" \
--groups "puzzly-내부-qa"
- name: Build Release Bundle (AAB)
if: github.ref == 'refs/heads/release' || inputs.target == 'release'
run: ./gradlew bundleRelease --stacktrace
- name: Upload Release AAB to Artifact
if: github.ref == 'refs/heads/release' || inputs.target == 'release'
uses: actions/upload-artifact@v4
with:
name: app-release-bundle-${{ github.run_number }}
path: app/build/outputs/bundle/release/app-release.aab