Bitbucket Pipeline 구축 - Android

꾸안드·2023년 9월 1일
0

개발용 / 배포용을 구분해서 빌드하는게 바쁜 시간에는 번거로워 Build 과정 중 Human Error를 줄이고자 구축하는 방법을 기술합니다.

구현방식

  • Git Tag에서 Develop으로 시작하는 단어가 있으면 Develop 버전으로 빌드 start
  • Tag가 생성된 위치에서 이전 Tag - 1 위치까지의 커밋 내용을 모두 들고와 release_notes.txt를 만든다.(commit message를 jira issue title로 하기 때문에 이런 방식으로 구성함.)
  • 만들어진 apk file을 firebase를 통해 배포

사전조건

  • Firebase App Distribution에 접근 가능한 계정이 있어야 한다.
  • Firebase CLI 참조 해당 링크로 접속해 firebase-tools를 설치 후 firebase login(Firebase App Distribution에 접근 가능한 계정으로 로그인)을 통해 발급된 token을 다른곳에 잘 저장한다
  • Bitbucket에서 Pipeline에 접근 할 수 있도록 접근 권한을 변경한다(이미 되어 있다면 skip)

구축 방법

프로젝트에 최상단 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

Repository settings 설정

FIREBASE_APP_KEY, FIREBASE_TOKEN, TEST_GROUP_NAME이 저장된 위치는 Bitbucket 프로젝트 내에 Repository settings > Repository variablesKey, Value를 설정하면 됩니다.

profile
꾸준하게 안드로이드 개발

0개의 댓글