주저리

flutter CI/CD는 작년에 설정을 해뒀는데 codemagic docs가 워낙 잘되어있어서 작성할까 말까 고민하다가 이번에 새계정에 설정할 겸 안드로이드 셋팅할 겸 작성합니당 :D (이슈가 있다면 언제든 댓글로 소통해주세요!)

가격 정책

저는 Get started 요금제로 진행 할 예정입니다.



1. codemagic Sign up

1. https://codemagic.io/start/ 접속 후 start now

2. 사용하고있는 버전관리시스템 선택
(저는 Bitbucket 사용 중이라 선택 후 Bitbucket으로 가입했습니당)


3. 완료 🎉
Bitbucket에 있는 두개의 프로젝트가 app으로 linking된것을 확인할 수 있습니다



2. build setting

1. flutter project Set up build 클릭


잠깐 쉬어가는 느낌으로 light 모드로 바꾸고 갈게요~!
(User Setting에서 500시간의 무료 빌드시간 중 얼마나 썼는지도 알 수 있어용)

2. build setting > version

flutter project 버전 확인 후 동일하게 설정해주세요 :D
참고로 제 환경은 다음과 같습니다

  • Flutter 1.22.6
  • Xcode 12.4
  • cocoapods 1.10.1

3. build setting > Android, iOS

빌드시 추가로 해줬던 옵션들이 있다면 arguments로 추가해주세요
(저는 기존에 다음과 같은 command로 안드로이드 앱번들을 빌드했습니당)

flutter build appbundle --release \
    --obfuscate --split-debug-info=build/symbols \
    --dart-define="CANDY_API_URL=https://..." \
    --flavor prod



3. Publish setting (iOS)

1. iOS code signing (=testFlight 자동 배포)


2. iOS Developer Portal integration

  • App Store Connect > Users and Access > Keys 이동
  • (+) 버튼 클릭
  • 다음과 같이 활성화된 key 생성

    key는 한번만 다운로드 되니, 잘 백업해두세용 :D


3. 다시 돌아와 iOS code signing 나머지 설정

+optional 이라고 적혀있는 Bundle identifier 입력은 필수적으로 해주세요!
설정 안 할 경우, 다음과 같은 에러가 출력됩니다

Did not find any Bundle IDs matching specified filters: identifier=io.flutter.plugins.urlLauncher, platform=IOS.
Creating new Bundle ID: identifier: io.flutter.plugins.urlLauncher, name: 'io flutter plugins urlLauncher', platform: IOS

I fixed it by specifying a bundle identifier in the Build settings -> Publish -> iOS code signing.
https://github.com/flutter/flutter/issues/67617

4. 아래 마지막에 있는 AppStoreConnect 까지

암호 생성
https://appleid.apple.com/account/manage




4. Publish setting (Android)

안드로이드 설정은 기존에 생성해둔 key저장소를 사용할 예정이라, 생성해둔 key가 없다면 아래 링크를 확인 해주세요!

1. android code signing

2. Google Play

https://docs.codemagic.io/knowledge-base/google-play-api/
자세한 설명은 위 하나의 문서에 정말 잘 나와있습니다! 그대로 따라해주시면 되고 api access로 접근하시려면 권한이 필요하다는 점만 유의해주시고, 그대로 create new service account 진행해주시면 됩니다!

추가로 Create new service account 버튼 누르시고 Google Cloud Platform에서 "Google Play Console Developer" 프로젝트가 생기는데 오래걸리니 그점만 유의해주시고 프로젝트가 생성된 다음 docs에 나온 그대로 따라주시면 됩니다 :)



5. (optional) Build Triggers

저는 tag가 생성될때마다 빌드를 하게끔 처리하겠습니다.



6. (optional) flutter project setting

  • 21.11.05 뒤늦게 추가
    codemagic.yaml파일 없이 workflow 수정해주면 최신 workflow setting에 따라 바로 먹힙니다!

저장 후 flutter project root 경로로 저장



7. start new build

처음만 Start your first build를 클릭해줍니당
(위 5번 설정을 해주셨다면 tag push되는 순간 trigger가 작동해 자동으로 빌드 해줍니당)


완료 🎉🎉🎉🎉

8. [결과] 안드로이드 테스트 앱 배포

android/app/build.gradleflutterVersionCode는 각 빌드마다 고유성을 가져야 합니다.

9. [결과] iOS 테스트 앱 배포

xcode에서 Version에 따른 Build값이 고유성을 가져야 합니다.

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

8개의 댓글

comment-user-thumbnail
2021년 4월 15일

글 잘 읽었습니다! 좋은 글 감사합니다!! ☺️

1개의 답글
comment-user-thumbnail
2021년 4월 26일

배포까지 되는 건가요 너무 좋네요

1개의 답글
comment-user-thumbnail
2021년 8월 18일

포스트 잘봤습니다! 혹시 코드매직에서 .env 파일 있을 때 세팅해보셨나요?

1개의 답글
comment-user-thumbnail
2021년 10월 16일

좋은 글 잘 읽었습니다! tag는 어떻게 push 하는 건가요?

1개의 답글