Flutter 프로젝트 마무리 후 이제 CI/CD 를 도입을 해보려고 해요.
많은 CI\CD 프로그램, 사이트들이 있는데,
저는 돈이 없으니까 무료로 어느정도 사용이 가능한 Codemagic 을 이용해서
자동으로 Firebase App Distribution에 배포 하도록 진행 할 거에요.
시작하기전 Firebase, Codemagic, Github 에 가입이 되어 있다고 가정을 하고 진행할거에요.
당연히 이미 Firebase에 프로젝트도 등록이 되어있어야 해요.
자 그럼 시작해 볼게요.
1. Firebase console (https://console.firebase.google.com/) 에서
프로젝트 개요 옆에 톱니바퀴 버튼을 누르고 프로젝트 설정 에 들어가요.
2. 아래로 스크롤 하면 내 앱 항목이 보일거에요.
여기에 Android, iOS 앱 ID 를 복사해 두세요.
노란색 네모칸 부분이 저희가 사용할 앱 ID 에요
3. 한번에 너무 많이 복사해 뒀다가 나중에 사용하면 까먹으니까
코드매직으로 가서 하나씩 설정을 해볼게요.
코드매직 사이트로 이동해 볼까요?
4. 아마 처음 가입하시면 프로젝트 생성이 파로 시작되시는 분들도 있으실꺼고,
취소를 하셨으면 아래처럼 Add Application 이라는 버튼이 보일 거에요.
처음 가입과 동시에 프로젝트 생성이 시작 되시는 분들도 그냥 따라해 주시면 돼요.
5. 저는 Github에 프로젝트 Repository가 있기 때문에 Github 를 선택할게요.
6. Select Repository 를 눌러서 본인 프로젝트를 선택해주시고,
저는 Flutter App을 배포 할거기 때문에 Select project type을 Flutter App(via ...)를 선택하고 넘어갈게요.
7. 이제 앱 배포 설정들을 채워 볼게요.
Build for platforms 는 배포를 원하는 OS를 선택해주세요.
저는 Android 를 테스트 하고 싶어서 Android 만 선택 했어요.
Run build on
이건 빌드를 시킬 서버인데 무료로 사용하시는 분은 따로 변경하지 않으셔도 돼요.
무료 빌드시간은 대략 월 500분 정도인데
한번 빌드 하는데 저같은 경우는 대략 7~ 9분 사이 정도 인거 같아요.
한달에 넉넉 잡아 대략 5 ~60 번정도 빌드가 가능하니 이점 참고 해주세요.
8. Build triggers 다음은 빌드를 동작시킬 트리거 설정이에요.
아래 설정에 조건을 설정하면 해당 조건을 충족시킬시 자동 빌드를 시작해요.
저 같은 경우는 특정 태그를 추가하면 동작하도록 설정했어요.
먼저 Trigger on tag creation을 선택하고, Watched tag patterns 에서
아해와 같은 패턴을 입력했어요. 코드매직에서 제공해주는 샘플 패턴인데
저도 어차피 테스트 용도라 아래 패턴대로 사용했어요.
참고로 사용 방법은 커밋에 v1.0.0 형식으로 태그를 하고 origin으로 푸시를 해주면 실행이 되는 구조에요.
v+([0-9]).+([0-9]).+([0-9])
9. Environment variables는 여러가지 환경 변수에 대한 설정인데 저는 사용하지 않기 때문에 사용하실분은
아래 문서를 참고 해주세요.
https://docs.codemagic.io/yaml-basic-configuration/environment-variables/
나머지 Dependency caching, Tests 항목도 마찬가지로 사용을 안해서 넘어갈게요 문서 참고 부탁드려요.
10. Build 이제 엄청 중요한 부분이에요.
- Flutter version, Xcode version, CocoaPod version 은 기존에 프로젝트와 동일하게 선택해 주세요. (위에 이미지는 제가 설정한 값이에요 참고 하세요.)
- project path는 따로 변경하지 않으셔도 돼요.
- Android build format은 원하시는 형태의 설치 파일을 선택하시면 돼요.
- Build argments 는 각 OS 별 빌드시 필요한 명령어들을 넣어줄 수 있어요.
--flavor product -t lib/main.dart --build-number=$(($PROJECT_BUILD_NUMBER + 30))
저는 Dev 와 Product 가 flavor를 통해 나누어져 있어서 --flavor product 를 추가 했고
--build-number=$(($PROJECT_BUILD_NUMBER + 30)) 는 빌드시 Build Number 값을 자동으로 변경해주는 명령어에요.
빌드 번호는 Codemagic빌드 회수 이고, 빌드를 할때 마다 변경이 돼요.
+30은 제가 기존에 사용하던 빌드넘버와 맞추기 위해 +30 을 추가했어요.
만약 2번째 빌드고 +30 이 되어있다면, bulid number 는 32가 돼요.
11. Distibution 은 배포에 필요한 설정이에요.
저는 Android 기준으로 설명할게요.
Android code signing 부분은 안드로이드 배포 키값 설정과 동일하게 설정해주세요.
Google Play는 아직 따로 배포 하지 않았기 때문에 스킵 할게요.
Firebase App Distribution이 핵심이에요. 어려울수도 있으니
꽉잡고 따라와주세요.
먼저 아래는 제가 설정한 값이에요.
- Enable publishing to Firebase App Distribution 파이어베이스 앱배포 사용 여부에. 체크해주세요.
- Firebase authentication method 인증 방법은 2번째를 사용했어요 1번째는 이제 지원을 안하는 방향으로 가는듯 해요.
- https://console.cloud.google.com/iam-admin/serviceaccounts 에 들어가면 아래와 같이 화면이 나올거에요.
작업 항목에 더보기를 누르고 키관리를 눌러주세요.
- 키 추가를 누르고 JSON 을 선택후 만들기를 눌러주시면 json 파일이 다운받아 질거에요.
다시 Code magic 으로 돌아가서 추가해주세요. Firebase service account*
에 추가하시면 돼요.
참고로 구성원에 Firebase 앱 배포 관리자 권한이 있어야 정상적으로 배포가 가능해요.
그렇지 않으면 아래와 같은 에러와 만날수 있어요.
12. 이제 11 에서 남은 항목 들을 채워주세요.
- https://api.codemagic.io/hooks/xxxxxxxx 를 복사해주세요.
- Github에 Repository -> setting -> webhooks -> Add webhook을 눌러주세요.
14. Payload URL 은 13번에서 복사한 주소를 입력 하면 되구요.
나머지는 아래와 같이 설정해 주세요.
Which events would you like to trigger this webhook? 항목은 꼭
Let me select individual events. <<<<<이거를 선택해 주셔야
상세 설정이 가능해요.
15. 상세 설정 항목중 체크해야할 3개지는 아래와 같아요.
Branch or tag creation, Pull requests, Pushes
16. 마지막으로 Add webhook을 눌러서 마무리 해주세요.
17. 이제 빌드 테스트를 한번 해볼게요.
- Codemagic 콘솔에 Start new build를 눌러주세요.
- 빌드하고자 하는 브랜치를 선택해주시고 빌드를 시작해 보세요.
18. 실제 커밋에 Tag를 추가해서 빌드도 시켜보세요.
v1.0.0 <<<형식으로 태그를 달아서 origin 에 push 까지 해보시면 정상적으로 자동 빌드가 시작 될거에요.
엄청 글이 길어졌네요.
저는 이제 저녁밥 먹으러 가볼게요.
'공부방 > Flutter' 카테고리의 다른 글
Flutter Bloc 필수적으로 사용하는 위젯 (0) | 2023.03.23 |
---|---|
플러터 상태관리 bloc (0) | 2023.03.23 |
How to install sentry in flutter (플러터 센트리 설치 방법) (0) | 2023.03.07 |
How to use flutterActivity and flutterFragmentActivity in android (Flutter 안드로이드에서 flutterActivity 와 flutterFragmentActivity 사용 방법) (0) | 2023.03.06 |
How to install opencv in flutter for android(플러터 opencv 설치 방법 Android) (0) | 2023.02.20 |
행복한 코딩을 위하여!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!