About HERREN
home
Media
home

Github Actions으로 안드로이드 CI/CD 구축하기

0. 소개

안녕하세요.
안드로이드를 담당하고 있는 다나입니다.
안드로이드의 업무 환경을 개선하기 위해 Github Actions으로 CI/CD 구축했던 과정을 소개하려 합니다.

1. 배경

기존의 안드로이드 빌드 및 배포 과정은 아래와 같았습니다.
공비서 CRM의 경우 Google Play Store 업로드 .apk와 수기 배포 .apk를 각각 따로 생성해야 했기 때문에, Android Studio에 묶여 있는 시간이 두배로 소요 되었습니다.
QA를 위한 내부테스트 배포 또한, 직접 Slack에 dev.apk 파일을 전달하거나 직접 USB케이블로 빌드하는 방식으로 한 번 빌드 당 평균 3~5분 정도 소요되었습니다.
정리하면, 한 번의 출시를 하기 위해서는 빌드 및 배포로만 총 50분이 소요됩니다.
QA를 위해 테스트 기기에 직접 빌드: 약 5개 * 5분 = 25분
Google Play Store 업로드 .apk 파일 생성: 10분
수기 배포 환경 설정 및 .apk 파일 생성: 3분 + 10분 = 13분
Slack 배포: 2분
이는 업무 시간의 공백을 만들어내기도 하고 특히 중간 중간 들어오는 기기에 직접 빌드 요청일 경우, 업무의 집중도 및 몰입도 저하를 초래할 수 있습니다.
또한 Google Play Store 업로드, 수기 배포, QA 용 .apk 생성을 직접 수기로 설정하다보니 Human Issues가 발생 할 수도 있습니다.
CI/CD를 구축하면 빌드 및 배포 자동화로 인해 해당 과정에서 소요되는 시간을 절약할 수 있고, 빌드에 대한 인터럽트를 방지할 수 있어 오로지 업무에 집중할 수 있는 환경을 만들어 줄 수 있다 생각했습니다.
또한 Human Issues를 방지할 수 있다 생각해, 빌드 및 배포 과정을 개선하게 되었습니다.

2. 선택

CI/CD Tool로는 Circle CI, TeamCity등이 있지만, 다음과 같은 이유로 Github Actions을 선택했습니다.
헤더들은 이미 GitHub 계정을 가지고 있다.
헤렌의 프로젝트들은 GitHub Repository에 코드를 관리를 하고 있다.
이로 인해 다른 Tool보다는 좀 더 접근이 쉽다.

3. 과정

1.
개발용 devBracnh를 default로 두고, 기존에 출시를 위한 mainBranch를 총 세개로 분리
Branches
Server
용도
dev(default)
-
기능 개발
featureBranch를 통해 기능 개발 → dev로 PR 요청 후 merge
release
release
Google play store 업로드
release_note_release.txt 작성 및 dev → release 로 pull만 가능
releaseBlog
release
수기 배포
release_note_release_blog.txt 작성 및 dev → releaseBlog 로 pull만 가능
2.
내부 테스트를 위해 Firebase App Distribution에 테스터 및 그룹을 생성
groups: 공비서crm테스터
3.
각 Branch에 .yml파일을 생성해 Workflow 정의
Secrets Action Key 세팅
Event 정의
push: Push, PR 모두 해당
Workflows .yml 파일 생성
distribute_release.yml → branches: [release] releaseNotesFile: deploy/release_notes_release.txt
distribute_release_blog.yml → branches: [releaseBlog] releaseNotesFile: deploy/release_notes_release_blog.txt
4.
배포 테스트
개발 완료 후 dev → 각 branches 로 pull
각 branches에 해당하는 release_note.txt에 작업내역 작성 후 commit and push
빌드 및 배포 확인 (약 8분 소요)
5.
Slack 알림 확인

4. 결과

Firebase App Distribution에 배포까지 무사히 구현이 완료되었습니다!
Github에서 Actions탭을 들어가 보시면 빌드부터 배포까지 약 8분이 소요되는 걸 볼 수 있습니다.
크게 개선되었다고 느낀점은 다음과 같습니다.
기존에는 2개의 .apk파일을 생성하기 위해 20분이 소요되었지만, Github Actions 는 동시에 workflow 실행이 가능하기 때문에 약 10분안에 끝낼 수 있었습니다. 배포까지 생각한다면 40분을 절약했다고 볼 수 있습니다.
빌드 및 배포 도중 다른 작업을 할 수 없었는데 Github Actions가 대신 해주니 이제 다른 작업이 가능해졌습니다.
배포 관련 branch를 용도에 따라 2개로 나누어 더 이상 내부 환경 세팅 Human Issues가 제거 되었습니다.
일일이 기기에 직접 빌드를 하지않고, 메일을 통해 버전 별 설치가 가능합니다. (App Tester 앱을 사용하면 더욱 간편합니다.)
앞으로도 업무 환경 개선에 기여할 수 있는 방법을 찾아 헤렌의 개발팀의 오로지 업무에만 집중할 수 있는 환경을 만들기에 도움이 되었으면 좋겠습니다!
감사합니다
저희와 함께 하고 싶은 분들은 헤렌의 채용 담당자 에게 커피챗을 요청해 보세요! 헤렌은 현재 다양한 개발 직군을 적극적으로 채용하고 있습니다