Skip to content

Commit 0fd8be4

Browse files
committed
[setting/#1] production.yml 생성
- 버전 태그 생성 시 트리거 - google 환경 설정 - aab 프로덕션 배포
1 parent 174903a commit 0fd8be4

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# CD-GooglePlay-Production.yml - Google Play Console 프로덕션 배포 워크플로우
2+
name: Google Play Production Release CD
3+
4+
## 워크플로우 트리거 설정
5+
#on:
6+
# push:
7+
# tags:
8+
# - 'v*' # 'v'로 시작하는 태그(예: v1.0.0)가 푸시되었을 때만 트리거
9+
10+
jobs:
11+
google_play_production:
12+
name: Google Play Production Release
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: 코드 체크아웃
17+
uses: actions/checkout@v4
18+
19+
- name: JDK 17 설정
20+
uses: actions/setup-java@v4
21+
with:
22+
distribution: 'temurin'
23+
java-version: '17'
24+
25+
- name: Gradle 캐시 설정
26+
uses: actions/cache@v4
27+
with:
28+
path: |
29+
~/.gradle/caches
30+
~/.gradle/wrapper
31+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
32+
restore-keys: |
33+
${{ runner.os }}-gradle-
34+
35+
- name: local.properties 설정
36+
run: |
37+
echo "base.url=\"${{ secrets.BASE_URL }}\"" >> local.properties
38+
echo "cloud.vision.api.key=\"${{ secrets.CLOUD_VISION_API_KEY }}\"" >> local.properties
39+
40+
- name: google-services.json 설정
41+
# Firebase 서비스에 필요한 google-services.json 파일을 Secrets에서 가져옵니다.
42+
run: |
43+
echo "google-services.json 파일을 설정합니다..."
44+
echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json
45+
if [ -f ./app/google-services.json ]; then
46+
echo "google-services.json이 ./app/google-services.json에 성공적으로 생성되었습니다."
47+
else
48+
echo "오류: ./app/google-services.json에서 google-services.json을 찾을 수 없습니다."
49+
exit 1
50+
fi
51+
shell: bash
52+
53+
- name: 출시 서명 키 설정
54+
# Android App Bundle 서명을 위한 키스토어 파일을 Base64로 인코딩된 Secrets에서 디코딩하여 생성합니다.
55+
run: |
56+
echo "${{ secrets.SIGNING_KEY_BASE64 }}" | base64 --decode > android_signing_key.jks
57+
58+
- name: gradlew 실행 권한 부여
59+
run: chmod +x ./gradlew
60+
61+
- name: 릴리스 AAB 빌드 (Google Play 프로덕션용)
62+
# Google Play Console 배포를 위해 릴리스 AAB를 빌드합니다.
63+
run: ./gradlew bundleRelease
64+
env:
65+
# 서명 환경 변수
66+
ORG_GRADLE_PROJECT_signingStoreFile: android_signing_key.jks
67+
ORG_GRADLE_PROJECT_signingKeyAlias: ${{ secrets.SIGNING_KEY_ALIAS }}
68+
ORG_GRADLE_PROJECT_signingKeyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
69+
ORG_GRADLE_PROJECT_signingStorePassword: ${{ secrets.SIGNING_STORE_PASSWORD }}
70+
71+
- name: Google Play Console 프로덕션 배포
72+
# 빌드된 릴리스 AAB를 Google Play Console 프로덕션 트랙으로 배포합니다.
73+
uses: r0adkll/upload-google-play@v1
74+
with:
75+
serviceAccountJson: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_KEY }}
76+
packageName: your.package.name # 서비스명 확정 후 앱의 실제 패키지 이름으로 변경해야 합니다.
77+
releaseFile: app/build/outputs/bundle/release/app-release.aab
78+
track: production # 프로덕션 트랙으로 지정
79+
status: completed # 출시 상태를 'completed'로 설정하여 즉시 출시되도록 합니다.
80+
81+
- name: Slack 알림 (Google Play 프로덕션 배포 성공)
82+
if: success()
83+
uses: rtCamp/action-slack-notify@v2
84+
env:
85+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
86+
SLACK_CHANNEL: '#client-actions'
87+
SLACK_MESSAGE: "🚀 Google Play 프로덕션 배포 성공! 태그: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
88+
89+
- name: Slack 알림 (Google Play 프로덕션 배포 실패)
90+
if: failure()
91+
uses: rtCamp/action-slack-notify@v2
92+
env:
93+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
94+
SLACK_CHANNEL: '#client-actions'
95+
SLACK_MESSAGE: "🚨 Google Play 프로덕션 배포 실패! 태그: `${{ github.ref_name }}` 커밋: `${{ github.sha }}`"
96+
SLACK_COLOR: 'danger'

0 commit comments

Comments
 (0)