이전 작업

flutter CI/CD codemagic 시작하기


들어가기전.. 주절주절..

1년전에 auto increment build number를 하고싶었는데

codemagic build 공식문서에 나와있는 Build versioning 두가지 방법 이 있는데

그 중 Increment app version using environment variables 방법 환경변수로 줬는데 아무리 안먹혀서

Set Xcode project build number via command line 방식으로 했는데 여기서 과거에 제가 실수를 했는데..!

바보처럼 xcode -> Target -> build Phases에 script올려놓고 로컬 환경에서 개발할 때 run할때마다 +1 되서 빼고

수동으로 1년간 buildNumber를 수동으로 올려줬었습니다..ㅎ

그러다가 불편함을 느껴.. codemagic 셋팅을 다시 ..시도했는데
과정이 짧진 않아서.. 공유드려야겠다 싶어 가져왔습니다...!



1. Increment app version using environment variables 방법 시도

Codemagic내에서 사용가능 한 변수 두가지가 있습니다.

https://docs.codemagic.io/configuration/build-versioning/#build-versioning-from-codemagic-environment-variables

  • BUILD_NUMBER. Holds the total count of builds (including the ongoing build) for a specific workflow in Codemagic. In other words, if you have triggered 10 builds for some workflow in Codemagic, the next time you build it, BUILD_NUMBER will be exported as 11.

    • Codemagic 의 특정 워크플로 에 대한 총 빌드 수(진행 중인 빌드 포함)를 보유합니다.
  • PROJECT_BUILD_NUMBER. Holds the total count of builds (including the ongoing build) for a project (application) in Codemagic. In contrast with BUILD_NUMBER, PROJECT_BUILD_NUMBER will increase every time you build any of the workflows of the app.

    • Codemagic 의 프로젝트 (응용 프로그램)에 대한 총 빌드 수(진행 중인 빌드 포함 )를 보유합니다.

= 그 중 저희는 PROJECT_BUILD_NUMBER를 택했습니다.
workflow를 release Dev, release Prod 나눠서 관리하는데 buildNumber는 겹치면 안되서 PROJECT_BUILD_NUMBER로 관리해주었습니다.

작업 방법

--build-number=$(($PROJECT_BUILD_NUMBER + 100))

뒤에 인수옵션들은 무시해주시고! 하이라이팅 되어있는 부분만 집중해주세요!

  • +1 해주셔도 되는데 저희는 기존 versionCode(Android)가 높아서 100부터 reset해준다 생각으로 +100으로 해줬습니다.
  • 다음과 같이 인수를 주면 끝! 간단하죠..?

+하이라이팅 외 나머지 인수들은 codemagic과 관련 없는 flavor 셋팅 옵션들입니다.

android 결과 O

성공적으로 versionCode 변경되어 올라갑니다.

iOS 결과 X

자 똑같이 213..이라고는 바뀌었지만?

올라갈 땐 --build-number 인수값을 따르는게 아닌,
xcode내 적혀있는 build 번호!! 를 보고있는겁니다.

info.plist에 CURRENT_PROJECT_VERSION라고 적혀있는데, project.pbxproj에 작성되는 CURRENT_PROJECT_VERSION를 따르고 있는거죠..ㅠㅠ



2. Set Xcode project build number via command line 방법 시도

그래서 두번째 방법인 Set Xcode project build number via command line을 다시 봤는데..
결론부터 말하면 이걸로 해결됐습니다..!

설정방법


+ 클릭

pre build script 작성

#!/bin/sh
set -e
set -x

cd ./ios
agvtool new-version -all $(($PROJECT_BUILD_NUMBER + 100))

설정 후 돌리면 됩니다. 끝!!!

  • 아! 물론 build args는 android만 살려주면 됩니다.

설명


저 script를 테스트 삼아 직접 명령어 실행보시면 알 수 있습니다.
그러고 변경사항 다시 롤백해주세요!

  • agvtool new-version -all $(($PROJECT_BUILD_NUMBER + 100)) 명령어를 쳤을 때 CURRENT_PROJECT_VERSION를 바라보는게 아닌 고정된 숫자 100으로 다 바뀌는 것을 볼 수 있습니다!
  • 참고로 그냥 단순 돌렸을 땐 PROJECT_BUILD_NUMBER 값이 codemagic이 아닌 /ios환경에선 무엇인지 모르니 0으로 되고 +100이 된 모습입니다.
  • set -e는 명령어 돌다가 에러가 났을 경우 중단
  • set -x는 추적 기능이 생겨서 표준 에러로 커멘드 출력 (? 잘 모르겠습니다..)

결과


Pre-build script가 돌고 수동으로 다 바꿔준 상태인거죠.

android, iOS buildNumber..결과!

제가 --build-number 인수값을 뺀줄 알았는데 안뺐네요..
여러분들은 iOS build args --build-number 부분 빼주시면 됩니다!
위에 설명했다싶이 배포시 안 먹힙니다!!

publishing에는 아름답게 Pre-build에 돌렸던
결과를 증명하듯 version code가 할당되었네요!




다들 환경셋팅에 많은 시간 쓰지마시고.. 다들 해결 잘 되시길 바랍니다..즐코..🙋🏻‍♀️

profile
𝙸 𝚊𝚖 𝚊 𝚌𝚞𝚛𝚒𝚘𝚞𝚜 𝚍𝚎𝚟𝚎𝚕𝚘𝚙𝚎𝚛 𝚠𝚑𝚘 𝚎𝚗𝚓𝚘𝚢𝚜 𝚍𝚎𝚏𝚒𝚗𝚒𝚗𝚐 𝚊 𝚙𝚛𝚘𝚋𝚕𝚎𝚖. 🇰🇷👩🏻‍💻

1개의 댓글

comment-user-thumbnail
2022년 1월 19일

안녕하세요? 플러터 관련해서 좋은글 많이 보고 있습니다. 한가지 여쭤볼게 안드로이드 같은 경우 코드매직에서 빌드버전을 올리는 방식을 사용하면 실제 코드에서는 어떻게 관리하시나요?
실제 코드에서도 버전을 올리고 사용하시는지 궁금합니다

답글 달기