-
Notifications
You must be signed in to change notification settings - Fork 0
144 lines (123 loc) · 6.19 KB
/
android_cd.yml
File metadata and controls
144 lines (123 loc) · 6.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: Clody CD
on:
pull_request:
branches: [ staging ]
jobs:
cd:
name: Continuous Deployment
runs-on: ubuntu-latest
steps:
# Checkout
- name: Checkout code
uses: actions/checkout@v4
# Gradle Cache
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# JDK
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'corretto'
cache: gradle
# Android SDK
- name: Setup Android SDK
uses: android-actions/setup-android@v3
# gradlew 권한
- name: Change gradlew permissions
run: chmod +x gradlew
# Install Firebase CLI
- name: Install Firebase CLI
run: curl -sL https://firebase.tools | bash
# google-services.json
- name: Decode google-services.json
env:
FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET }}
run: echo $FIREBASE_SECRET | base64 --decode > app/google-services.json
# keystore 복호화
- name: Decode keystore file
env:
STORE_FILE: ${{ secrets.STORE_FILE }}
run: |
mkdir -p app/keystore
echo "$STORE_FILE" | base64 --decode > app/keystore/clody_release.jks
# local.properties
- name: Generate local.properties
env:
BASE_URL: ${{ secrets.BASE_URL }}
TEST_BASE_URL: ${{ secrets.TEST_BASE_URL }}
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }}
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }}
GOOGLE_ADMOB_APP_ID: ${{ secrets.GOOGLE_ADMOB_APP_ID }}
GOOGLE_ADMOB_UNIT_ID: ${{ secrets.GOOGLE_ADMOB_UNIT_ID }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: |
echo "clody.base.url=$BASE_URL" >> local.properties
echo "clody.test.url=$TEST_BASE_URL" >> local.properties
echo "kakao.api.key=$KAKAO_API_KEY" >> local.properties
echo "amplitude.api.key=$AMPLITUDE_API_KEY" >> local.properties
echo "GOOGLE_ADMOB_APP_ID=$GOOGLE_ADMOB_APP_ID" >> local.properties
echo "GOOGLE_ADMOB_UNIT_ID=$GOOGLE_ADMOB_UNIT_ID" >> local.properties
echo "storeFile=keystore/clody_release.jks" >> local.properties
echo "storePassword=$STORE_PASSWORD" >> local.properties
echo "keyAlias=$KEY_ALIAS" >> local.properties
echo "keyPassword=$KEY_PASSWORD" >> local.properties
# Debug APK 빌드
- name: Build Debug APK
run: ./gradlew assembleDebug --stacktrace
# Set up Firebase Service Account Credentials
- name: Set up Firebase Service Account Credentials
env:
GOOGLE_APPLICATION_CREDENTIALS_JSON: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS_JSON }}
run: |
echo "$GOOGLE_APPLICATION_CREDENTIALS_JSON" | base64 --decode > $HOME/firebase-credentials.json
echo "🔥 Firebase Credentials JSON 생성 완료!"
ls -l $HOME/firebase-credentials.json
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json
echo "GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS"
# Firebase CLI 인증 확인
- name: Check Firebase CLI Authentication
run: |
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json
echo "📌 GOOGLE_APPLICATION_CREDENTIALS 설정 값:"
echo $GOOGLE_APPLICATION_CREDENTIALS
ls -l $GOOGLE_APPLICATION_CREDENTIALS
echo "📌 현재 Firebase 프로젝트 목록 확인:"
firebase projects:list || (echo "❌ Firebase 인증 실패!"; exit 1)
# Firebase App Distribution Upload
- name: Upload APK to Firebase App Distribution
env:
GOOGLE_APPLICATION_CREDENTIALS: $HOME/firebase-credentials.json
FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
run: |
echo "🔥 FIREBASE_APP_ID 확인: $FIREBASE_APP_ID"
# 만약 FIREBASE_APP_ID가 없으면 에러 출력 후 종료
if [ -z "$FIREBASE_APP_ID" ]; then
echo "❌ ERROR: FIREBASE_APP_ID가 설정되지 않았습니다. GitHub Secrets에서 확인하세요."
exit 1
fi
# GOOGLE_APPLICATION_CREDENTIALS 재 설정
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json
echo "GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS"
firebase appdistribution:distribute app/build/outputs/apk/debug/app-debug.apk \
--app "$FIREBASE_APP_ID" \
--release-notes "🍀 새로운 테스트 버전이 업로드되었습니다~" \
--groups "clody-tester-group"
# Discord Notification
- name: Notify Discord
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
run: |
curl -H "Content-Type: application/json" \
-X POST \
-d '{"content": "🍀 새로운 테스트 버전이 업로드되었습니다~\nAPK 다운로드: https://appdistribution.firebase.google.com"}' \
$DISCORD_WEBHOOK_URL