안드로이드 빌드 자동화 도구
- 서버 인프라 : Google Cloud Platform Compute Engine
- 서버 언어 : kotlin
- 서버 프레임워크 : Ktor
- 클라이언트 : Slack Command, Bitrise Script Step
- CI 서비스 : Bitrise
- API 서비스 : Github API, Jira API, Slack API, Deploygate API
-
매일 정해진 시간대(7시, 17시)에 qa브랜치가 빌드된다.
1-1. 빌드 결과물의 앱버전이 새로운 앱버전일 때 버전네임(m.n.p.b) 빌드번호가 1로 초기화 된다.
1-2. 빌드 결과물의 앱버전이 기존 앱버전과 같을 때 버전네임(m.n.p.b) 빌드번호가 1씩 올라간다.
1-3. 빌드 결과물은 디플로이게이트에 배포된다.
1-4. READY FOR QA 상태의 지라 이슈들의 상태가 QA IN PROGRESS로 바뀐다.
1-5. 상태가 바뀐 지라 이슈들의 목록이 슬랙으로 전송된다.
-
슬랙에서 /build 명령어를 입력하면 qa브랜치 빌드가 시작된다.
1번에 대한 구현
-
주기적으로 bitrise에서 빌드하기(오전 7시, 오후 5시)
-
bitrise에서 git으로부터 버전네임을 읽어오기(github api, app/build.gradle의 버전네임)
-
bitrise가 서버에게 빌드를 진행해도 되는지 물어보기(/builds/can?app_version=9.9.1)
-
서버는 READY FOR QA 상태의 지라 이슈 유무를 확인하기(https://docs.atlassian.com/software/jira/docs/api/REST/8.4.2/#api/2/search-search)
-
이슈가 있으면 bitrise에게 true로 응답하기
-
-
빌드 시 bitrise에서 서버로부터 새 빌드번호를 받아오기(/build_numbers/new?app_version=9.9.1)
- 서버에서 json db에 앱버전별로 빌드번호를 관리하고 새 빌드번호를 bitrise에 넘겨주기(json db library)
-
빌드 완료 시 bitrise에서 서버로 READY FOR QA 지라 이슈들의 상태를 다음 단계로 바꿔달라고 요청하기(/issues/status/change?app_version=9.9.1)
-
서버에서 READY FOR QA 지라 이슈들의 상태를 QA IN PROGRESS로 바꾸기
-
상태가 바뀐 이슈들의 목록을 텍스트로 응답하기
-
bitrise가 이슈 목록 텍스트를 slack로 전송하기
-
bitrise가 apk를 디플로이게이트로 배포하기
-
2번에 대한 구현
-
슬랙에서 서버로 build를 요청하기(/builds/request)
- 서버에서 bitrise trigger api를 호출하기