프로그래밍/Android

Bitrise에서 버전명(혹은 버전코드) 환경변수로 사용하기

Lou Park 2022. 7. 13. 21:03

Bitrise로 CI/CD를 구축하려하면 심심찮게 환경변수들을 만들고, 저장해야하는데, 사실상 변수만드는 법만 익히면 나머지는 알아서 줄줄 풀린다. Bitrise에서 정말 많은 환경변수들이 미리 정의되어있지만, 버전명이나 버전코드에 대한 환경변수는 설정되어있지 않다. 그래서 간단하게 버전명을 환경변수로 저장하는 방법에 대해서 적어보려한다.

task("printVersionName") {
    println(android.defaultConfig.versionName)
}

build.gradle/app에 다음과 같이 사용자 정의 task를 추가한다. 

./gradlew printVersionName -q

제대로 설정했자면 터미널에서 task를 실행하면 버전명이 그대로 찍힐 것이다. 여기서 -q는 quiet을 뜻하며, task 실행시 나타나는 수많은 로그들을 셧업~하게 해준다.

 

workflow > Script

Bitrise의 Workflow Editor 내부로 돌아와서, Script 스텝을 하나 추가한다. Shellscript를 적고 실행할 수 있게 해주는건데,  Script content에 다음과 같이 적어주면 된다.

#!/usr/bin/env bash
########################################
# Version string 뽑기
########################################
version_name=$(./gradlew printVersionName -q)

envman add --key VERSION_NAME --value "$version_name"

echo "==== VERSION NAME ===="
echo "$version_name"

확인을 위해 version_name이라는 변수를 하나 추가했으나, envman에 바로 add 해버려도 상관없다. envman은 Bitrise에서 환경변수를 관리하는 툴인데, 간단한 사용법은 다음과 같다.

# MY_RELEASE_NOTE라는 환경변수에 This is the release note라는 값을 할당
envman add --key MY_RELEASE_NOTE --value "This is the release note"

# ./some/file/path 내용을 MY_RELEASE_NOTE 환경변수로 만듦
envman add --key MY_RELEASE_NOTE --valuefile ./some/file/path

 

끝이다! 정말...간단했다.

 

이제 Script 다음의 어느 Step에서든 버전 이름이 필요한곳에 $VERSION_NAME으로 변수를 사용해주면된다. 나는 Github Release를 추가해서 Tag명을 "v0.0.0" 식으로 자동으로 올라가게 설정해두었는데, 동적으로 정의한 환경변수 예시로 첨부한다.