-
Notifications
You must be signed in to change notification settings - Fork 2
100 lines (86 loc) · 4.5 KB
/
deployGooglePlay.yml
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
# YDS StoryBook을 Google Play에 배포하는 워크플로입니다.
name: Delploy YDS StoryBook to Google Play
# Github에서 수동으로 실행해야 하며, 배포할 브랜치와 트랙을 선택할 수 있습니다.
# 현재 내부 테스트와 프로덕션 트랙만 사용하며, 주석을 해제하여 비공개/공개 테스트 트랙을 사용할 수 있습니다.
# '배포 없이 스토어 등록정보만 수정'을 선택하면 트랙과 상관없이 스토어 정보만 업데이트됩니다.
on:
workflow_dispatch:
inputs:
track:
description: '배포할 Google Play 트랙 선택'
required: true
default: 'internal'
type: choice
options:
- internal
# - alpha(closed)
# - beta(open)
- production
metadata:
description: '배포 없이 스토어 등록정보만 수정'
required: false
type: boolean
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# Github 저장소를 로컬로 복사합니다.
- uses: actions/checkout@v3
# fastlane 사용을 위해 ruby를 세팅합니다.
- uses: ruby/setup-ruby@v1
with:
ruby-version: '2.6'
bundler-cache: true
# 빌드에 필요한 환경변수를 세팅합니다.
- name: Setting env
run: |
echo "BUILD_NUMBER=$(($GITHUB_RUN_NUMBER+20))" >> $GITHUB_ENV
echo "STORE_PASSWORD=${{ secrets.STORE_PASSWORD }}" >> $GITHUB_ENV
echo "KEY_ALIAS=${{ secrets.KEY_ALIAS }}" >> $GITHUB_ENV
echo "KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> $GITHUB_ENV
# fastlane 배포에 필요한 Google Play 인증 정보를 생성합니다.
- name: Generate Credential File for Fastlane
run: |
echo "$PLAY_STORE_CREDENTIALS" > play-store-credentials.json.b64
base64 -d -i play-store-credentials.json.b64 > play-store-credentials.json
env:
PLAY_STORE_CREDENTIALS: ${{ secrets.PLAY_STORE_CREDENTIALS }}
# version.properties에 명시된 버전명을 읽어옵니다.
- name: Read versionName property
id: release_version
uses: christian-draeger/[email protected]
with:
path: './version.properties'
properties: 'versionName'
# 버전명.txt으로 작성된 changelogs를 fastlane이 인식할 수 있게 버전코드.txt로 변경합니다.
- name: Apply changelogs
working-directory: ./fastlane/metadata/android/ko-KR/changelogs
run: |
mv ${{ steps.release_version.outputs.versionName }}.txt $BUILD_NUMBER.txt
# 스토어 등록정보만 업데이트합니다.
- name: Update Google Play metadata
run: bundle exec fastlane update_metadata
if: ${{ inputs.metadata }}
# 내부 테스트 트랙에 배포합니다.
- name: Submit to internal track
run: bundle exec fastlane internal
if: ${{ !inputs.metadata && inputs.track == 'internal' }}
# 비공개 테스트 트랙에 배포합니다.
# - name: Submit to alpha(closed) track
# run: bundle exec fastlane alpha
# if: ${{ !inputs.metadata && inputs.track == 'alpha(closed)' }}
# 공개 테스트 트랙에 배포합니다.
# - name: Submit to beta(open) track
# run: bundle exec fastlane beta
# if: ${{ !inputs.metadata && inputs.track == 'beta(open)' }}
# 프로덕션 트랙에 배포합니다.
- name: Submit to production track
run: bundle exec fastlane production
if: ${{ !inputs.metadata && inputs.track == 'production' }}
# 슬랙에 스토어 정보 수정 완료 메시지를 전송합니다.
- name: Send metadata update message to Slack
run: curl -d "text=YDS StoryBook의 스토어 등록 정보를 업데이트했슈~ https://play.google.com/store/apps/details?id=com.yourssu.storybook" -d "channel=${{ secrets.SLACK_CHANNEL_ID_ANDROID }}" -H "Authorization:Bearer ${{ secrets.SLACK_WORKSPACE_TOKEN }}" -X POST https://slack.com/api/chat.postMessage
if: ${{ inputs.metadata }}
# 슬랙에 완료 메시지를 전송합니다.
- name: Send message to Slack
run: curl -d "text=YDS StoryBook ${{ steps.release_version.outputs.versionName }} 버전을 ${{ inputs.track }} 트랙에 배포했슈~ https://play.google.com/store/apps/details?id=com.yourssu.storybook" -d "channel=${{ secrets.SLACK_CHANNEL_ID_ANDROID }}" -H "Authorization:Bearer ${{ secrets.SLACK_WORKSPACE_TOKEN }}" -X POST https://slack.com/api/chat.postMessage