---이전 글---
2021.02.17 - [안드로이드] - [안드로이드] Github Actions으로 구글 플레이스토어 배포
안녕하세요 오늘은 Github Action 으로 배포 하는 이야기를 해보려고 합니다.
먼저 문제의 상황은 Github Actions 으로 배포를 하는 것은 좋은 데, google-services.json 이나 Map key 를 어떻게 숨기겠느냐? 라는 문제 상황입니다.
저도 이러한 부분이 보안에 치명적일 수 있음을 인지를 하였고 항상 해결책을 찾으려고 했습니다.
제가 여기서 해결한 방법은 2가지 입니다.
1. local.properties, google-services.json 을 secrets 를 통해 관리를 하고 Actions가 실행이 될떄, 이러한 파일 들이 만들어질 수 있도록 하는 것입니다.
2. local.properties 작성하는 API 값도 플러그인을 통하여 간편하게 작성을 하는 것입니다. (아래 링크가 정확합니다.)
https://developers.google.com/maps/documentation/android-sdk/get-api-key?hl=ko
그러면 어떻게 secrets를 관리할까요?
고민의 시간이 있음에도 불구하고 그 과정은 엄청 심플 합니다. `echo` 를 잘 사용하는 것입니다. 기존 yml 를 보게 되면
이런 방식으로 secrets 에 추가를 하고 echo로 actions 가 작동하는 시간에 파일을 만들어주는 것입니다.
이를 똑같이 응용해서
기존 yml 에서 빌드시 오류가 나는 부분들을 secrets 의 기재를 하였고 스크립트를 추가하여 주었습니다.
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2.3.4
- name: set up JDK 11
uses: actions/setup-java@v2.3.0
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '11'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Access MAPS_API_KEY
env:
APOD_API_KEY: ${{ secrets.MAPS_API_KEY }}
run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json
- name: Access MAPS_API_KEY
env:
APOD_API_KEY: ${{ secrets.MAPS_API_KEY }}
run: echo MAPS_API_KEY=\"$MAPS_API_KEY\" > ./local.properties
- name: Build with Gradle
run: ./gradlew build
- name: Build Release AAB
id: buildRelease
run: ./gradlew bundleRelease
- name: Sign AAB
id: sign
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/build/outputs/bundle/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
- name: Upload AAB
id: uploadArtifact
uses: actions/upload-artifact@v2.2.4
with:
name: app
path: app/build/outputs/bundle/release/app-release.aab
- name: Create service_account.json
id: createServiceAccount
run: echo '${{ secrets.SERVICE_ACCOUNT_JSON }}' > service_account.json
- name: Deploy to Play Store (BETA)
id: deploy
uses: r0adkll/upload-google-play@v1.0.15
with:
serviceAccountJson: service_account.json
packageName: com.keelim.nandadiagnosis
releaseFiles: app/build/outputs/bundle/release/app-release.aab
위 yml 파일을 전체적으로 보시면서 이해하시는 것도 좋은 방법입니다.
https://github.com/keelim/project_cnuBus/blob/master/.github/workflows/android.yml
오늘은 Github Actions 로만 배포를 하기 위해 yml을 적절히 수정하는 방법에 대해 알아보았습니다.
요약을 하자면
1. 빌드를 위해 꼭 필요하지만 Github 에서 관리하기 껄끄럽다면 secrets
2. 이를 사용하기 위해서는 적절한 scripts 와 echo
로 정리할 수 있습니다.
궁금한 내용이나 틀린 부분에 대해서는 언제든지 환영합니다.
'안드로이드' 카테고리의 다른 글
[안드로이드] ksp (kotlin symbol processing) 적용기 (0) | 2021.09.08 |
---|---|
[안드로이드] Rendering sandbox errorProperty access not allowed during rendering (0) | 2021.08.27 |
[알고리즘] Level Order, N-array Tree Postorder, Preorder (0) | 2021.08.06 |
[안드로이드] Flow를 정말 간단히 먼저 사용해보자. (0) | 2021.08.01 |
[안드로이드] 그래 이게 UseCase 야. (2) | 2021.06.27 |
댓글