Github Action으로 CD환경 구축하기
오늘은 저번 글(Github Action으로 CI구축하기)에 이어서 이번에는 Github Action을 이용하여 CD환경을 구축하는 방법에 대해 이야기해보려 합니다!
CD란 뭘까?
CD는 Continuous Delivery(지속적인 제공), Continuous Deployment(지속적인 배포) 2가지 의미를 모두 포함하는 단어입니다.
먼저 Continuous Delivery(지속적인 제공)의 의미부터 알아보도록 하겠습니다.
Continuous Delivery(지속적인 제공)는 빌드 및 테스트 과정을 거쳐 검증된 코드를 공유 저장소로 자동 릴리스하는 것을 의미합니다. 자동 릴리즈 후 운영팀, QA팀에서 제품을 확인하고 프로덕션 환경으로 빠르게 배포를 진행할 수 있도록 합니다. Continuous Delivery(지속적인 제공) 환경을 구축하기 위해서는 앞서 말씀드렸던 것처럼 코드 검증이 필요합니다, 따라서 효율적인 Continuous Delivery(지속적인 제공) 환경을 구축하기 위해선 CI가 필수적인 요소라고 볼 수 있죠.
다음은 Continuous Deployment(지속적인 배포)의 의미에 대해 알아보도록 하겠습니다.
Continuous Deployment(지속적인 배포)는 검증된 코드를 실제 프로덕션 환경까지 바로 배포하는 것을 의미합니다. 이런 Continuous Deployment(지속적인 배포) 환경을 구축하게 된다면, 좀 더 작은 단위의 작업도 손쉽게 배포할 수 있게 됩니다. 하지만 프로덕트를 사람이 직접 검증하는 것이 아닌 CI 등의 자동화에 의존하기 때문에 검증 자동화 환경을 단단하게 구축할 필요가 있습니다.
한 줄로 정리하면, CD는 검증된 코드를 자동으로 팀 또는 프로덕션에 제공하는 기술이라고 할 수 있을 것 같습니다.
Github Action으로 Android CD환경 구축하기
초반 환경 세팅 과정은 이전 글 (Github Action으로 CI 구축하기)와 동일합니다, 따라서 이 부분은 생략하고 CD관련 예제만 작성하도록 하겠습니다. 내용이 궁금하시다면 이전 글 확인 부탁드립니다!
1. APK or AAB 추출하기
테스트앱 제공 또는 배포를 위해 APK나 AAB를 추출해야 합니다, AAB를 추출하고 싶은 경우엔 ./gradlew bundle{build type}를, APK를 추출하고 싶은 경우에는 ./gradlew assemble{build type}를 사용하시면 됩니다.
- name: Build release APK
run: ./gradlew assembleRelease # Release 타입 APK 생성
- name: Build release AAB
run: ./gradlew bundleRelease # Release 타입 AAB 생성
만약 프로젝트의 build Variants가 여러 개 설정되어 있다면 각각의 케이스마다 APK 또는 AAB가 모두 추출되기 때문에 build Variants 개수만큼 파일 추출에 많은 시간이 소요됩니다, 이를 해결하기 위해 특정 build Variants만 빌드하고 싶다면 APK 추출의 경우엔./gradlew assemble {name}{Release or Debug}을, AAB 추출의 경우엔 ./gradlew bundle{name}{Release or Debug}을 사용하시면 됩니다.
2. APK or AAB 업로드하기
APK 또는 AAB를 추출하였다면 이제 업로드할 차례입니다.
- name: Upload release APK to Firebase App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{ secrets.RELEASE_FIREBASE_APP_ID }}
serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }}
groups: "tester group 1, tester group 2"
file: app/build/outputs/apk/product/release/app-release.apk
저희 프로젝트에선 Firebase App Distribution을 통해 앱 QA를 진행하고 있습니다. 테스트앱 업로드를 위해 wzieba의 Firebase-Distribution-Github-Action@v1을 사용하였습니다.
이를 통해 간편하게 테스터 그룹 지정, 릴리즈 노트 작성 등의 과정을 통하여 APK또는 AAB를 업로드할 수 있습니다.
+ wzieba 공식 깃허브 보러 가기, Firebase App Distribution 공식문서 보러 가기
추가로 파이어베이스가 아닌 플레이 스토어에 바로 배포하고 싶다면 r0adkll의 공식 깃허브를 참고하시면 도움이 되실 것 같습니다!
마무리
오늘은 Github Action을 통해 Android에서 CD환경을 구축하는 방법을 알아보았습니다.
실제 프로젝트에서 CD를 사용해 보았을 때 파일을 추출하고, 테스트앱을 등록하는 과정이 모두 자동화되다 보니 시간을 확보할 수 있어 좋았습니다, 하지만 Github Action 같은 경우 프로젝트 상황에 따라 (프로젝트 규모나 난독화 유무 등등..) CD의 시간이 천차만별이더군요.. 따라서 각 프로젝트별 상황을 잘 고려하여 사용해야 할 것 같습니다.
오늘도 글 읽어주셔서 감사합니다, 글에 대한 피드백은 언제나 환영입니다!
'ETC' 카테고리의 다른 글
[ETC] Github Action을 이용해 Android CI환경 구축하기 (0) | 2024.06.25 |
---|---|
[Android/ETC] android studio resource manager로 리소스 간편하게 관리하기! (0) | 2024.03.24 |