개발용 / 배포용을 구분해서 빌드하는게 바쁜 시간에는 번거로워 Build 과정 중 Human Error를 줄이고자 구축하는 방법을 기술합니다.
Develop
으로 시작하는 단어가 있으면 Develop 버전으로 빌드 start Tag - 1
위치까지의 커밋 내용을 모두 들고와 release_notes.txt
를 만든다.(commit message를 jira issue title로 하기 때문에 이런 방식으로 구성함.)firebase login(Firebase App Distribution에 접근 가능한 계정으로 로그인)
을 통해 발급된 token을 다른곳에 잘 저장한다프로젝트에 최상단 bitbucket-pipelines.yml
파일을 만든다.
image: amazoncorretto:11
pipelines:
tags: # pipeline definition for all branches
"Develop*": # Develop 태그가 있을 때 배포가 시작됩니다.
- step: # step to build Android debug application
name: Android Debug Application
image: alvrme/alpine-android:android-33-jdk11
caches: # caching speed up subsequent execution https://support.atlassian.com/bitbucket-cloud/docs/cache-dependencies/
- gradle
script:
- cd ./*(현재 위치를 확인할 필요가 있음 - 회사 프로젝트는 파일 위치가 달라 이동함)
- chmod +x ./gradlew
- ./gradlew assembleDevelopDebug --stacktrace
artifacts:
download: true # do not download artifacts in this step
paths:
- (회사 프로젝트 이름)/app/build/outputs/apk/develop/debug/*.apk # artifacts are files that are produced by a step https://support.atlassian.com/bitbucket-cloud/docs/use-artifacts-in-steps/
- step:
name: Install Firebase | Tools Make release_notes | Firebase Deploy
image: node:18
caches:
- node
script:
- npm install -g firebase-tools
- TAG=$(git describe --tags --abbrev=0) # 현재 Git 태그를 가져옵니다.
- PREVIOUS_TAG=$(git describe --tags --abbrev=0 $TAG^) # 이전 Git 태그를 가져옵니다.
- COMMIT_MESSAGES=$(git log $PREVIOUS_TAG..$TAG --pretty=format:"%s") # 이전 태그부터 현재 태그까지의 커밋 메시지를 가져옵니다.
- echo "$COMMIT_MESSAGES" > release_notes.txt # 커밋 메시지를 release_notes.txt 파일에 저장합니다.
- firebase appdistribution:distribute (회사 프로젝트 이름)/app/build/outputs/apk/develop/debug/*.apk --app "$FIREBASE_APP_KEY" --token "$FIREBASE_TOKEN" --groups "$TEST_GROUP_NAME" --release-notes-file release_notes.txt
FIREBASE_APP_KEY
, FIREBASE_TOKEN
, TEST_GROUP_NAME
이 저장된 위치는 Bitbucket 프로젝트 내에 Repository settings
> Repository variables
에 Key, Value
를 설정하면 됩니다.