Bitrise Workflows and Steps

박형석·2021년 11월 23일
0

CI / CD

목록 보기
4/7
post-thumbnail
post-custom-banner

Workflow 제작하기 with Step

지난 글에서 이야기했듯이 Bitrise의 핵심에는 workflow와 step이 있다. 앱 빌드가 수동이나 자동으로 트리거되면 workflow에 있는 step들이 각각 실행된다. 이 step는 Github SSH키 활성화, Repository 복제, 인증 받기 등을 순차적으로 수행하게 된다. 지난 번에 우리가 만든 Primary Workflow는 기본 단계만을 담고 있다. 오늘은 필요한 몇 가지 단계를 추가하고 빌드를 성공시켜보자.

1. Primary Workflow

기본 단계에 있는 Steps부터 살펴보자.

Activate SSH key (RSA private key)

Bitrise가 저장소에 액세스 할 수 있고 애플리케이션을 가상 머신에 복제 할 권한이 있는지 확인한다. 우리는 사전에 등록을 해놓았기 때문에 사용할 수 있고, 다른 입력 변수를 수정할 필요가 없으니 그대로 두자.

Git Clone Repository

이름에서 알 수 있듯이 앱 저장소의 복제본을 생성하는 데 사용된다.

Bitrise.io Cache:Pull

가상 머신은 매번 보안 문제 때문에 삭제되지만 그렇다고 빌드를 매번 처음부터 해야 하는 것은 아니다. 이 단계에서 빌드 시간을 단축하기 위해 캐시를 가져온다.

Script

사용자 지정 스크립트를 실행한다. 그러나 지금은 필요하지 않으니 삭제.

2. + Steps

Input Variables 입력 변수
입력 변수를 변경할 때 환경 변수를 먼저 언급해야 한다. 환경 변수(Env Vars)는 키와 값으로 구성되며 Bitrise에서 $VAIABLES_NAME처럼 표현한다. 환경 변수는 Bitrise CLI에 의해 노출되거나 환경 변수 탭 내부에서 수동으로 추가되거나 Step의 output으로 생성될 수 있다. Step이 출력 변수를 생성할 때 이후 단계에서 사용할 수 있다.

Get Xcode project version

프로젝트의 번들 버전 및 빌드 번호를 가져온다. 이 단계에는 .xcodeproj 및 info.plist 경로가 필요 합니다. 아래 이미지에서 볼 수 있듯이 $BITRISE_SOURCE_DIR은 Bitrise의 환경 변수 중 하나다. 이건 기본적으로 Bitrise가 실핼되는 디렉토리고 출력 변수를 생성한다. 즉 필요한 경우 다음 단계에서 사용할 수 있다.

Set Xcode Project Build Number

Info.plist 파일에 있는 iOS 앱의 번들 버전을 Version Number로 설정한다.
환경 변수 $BITRISE_BUILD_NUMBER는 Bitrise의 빌드 번호다. Version Number를 이전 단계에서 생성 된 $XBV_PROJECT_VERSION으로 설정 한 것을 볼 수 있다. 이 단계 덕분에 빌드 번호를 자동으로 올릴 수 있다.

Certificate and profile installer

.p12 인증서 파일 및 프로비저닝 프로파일을 설치한다. codesigndoc 도구를 사용해서 적절한 파일을 내보내고 업로드 할 수 있다. 이 이전 단계에서 코드사이닝 단계를 모두 거쳐야 한다. 애플 관련한 코드 사이닝은 다른 글에서 다루자. 아래 링크에 따라 codesigndoc을 실행하면 자동으로 진행된다.

code sign file 보내기 with codesigndoc
https://devcenter.bitrise.io/en/code-signing/ios-code-signing/collecting-and-exporting-code-signing-files-with-codesigndoc.html

code sign file 관리하기 : iOS 자동 프로비저닝 with Apple Connect API
https://devcenter.bitrise.io/en/code-signing/ios-code-signing/managing-ios-code-signing-files---automatic-provisioning.html

*M1 + Xcode 13 이슈가 있다. 만약 가지고 있는 프로비저닝 파일에 UDID에 해당하는 Mac Mini Device가 없다고 뜨면, 터미널에 다음 명령어로 실행하자.

curl -fL https://github.com/bitrise-io/codesigndoc/releases/download/2.4.3/codesigndoc-Darwin-x86_64 > codesigndoc
chmod +x codesigndoc
./codesigndoc scan xcode --xcodebuild-sdk "iphoneos15.0"

결과는 아래와 같이 CodeSigning에서 확인할 수 있다.

Run CocoaPods install

cocoapods을 설치하는 pod install 명령을 실행한다.

Xcode Archive & Export for iOS

iOS용이다. xcode build archive를 실행하고 IPA파일을 내보낸다. 이곳에서 Scheme Name, Configuration Name, Export Method를 설정해야 한다. Configuration과 Scheme은 Xcode 프로젝트에 실제로 있는 이름으로 넣어야 한다. 아마 환경 변수로 자동 설정되어 있을 것이다.

Deploy to Bitrise.io - Apps, Logs, Artifacts

사용자가 사용할 수 있는 빌드 아티팩트를 배포한다. 이건 나중에 Firebase App Distribution이랑 연동해서 테스트 아티팩트를 배포할 예정이다.

Bitrise.io Cache:Push

마지막으로 매번 23분이나 걸리는 아까운 돈을 아끼기 위해서 Cache를 설정한다. (난 23분...)

Build

이제 빌드를 실행하면 된다. 여기서 필자는 M1 & Xcode 13을 사용해서 개발했기 때문에 stack을 Xcode 13으로 설정해서 빌드했다. 이외에도 Firebase App Distribution 연동, Slack과 연동해서 빌드 실패와 성공을 알림받고, 빌드를 실행하는 트리거까지 웹훅으로 설정할 수 있다.

Slack과 연동 후에 빌드 완료 메시지 받기

Slack에서 트리거 한 빌드 후 완료 메시지 받기

슬랙으로 트리거시 준수해야 하는 문법

profile
IOS Developer
post-custom-banner

0개의 댓글