지난 글에서 이야기했듯이 Bitrise의 핵심에는 workflow와 step이 있다. 앱 빌드가 수동이나 자동으로 트리거되면 workflow에 있는 step들이 각각 실행된다. 이 step는 Github SSH키 활성화, Repository 복제, 인증 받기 등을 순차적으로 수행하게 된다. 지난 번에 우리가 만든 Primary Workflow는 기본 단계만을 담고 있다. 오늘은 필요한 몇 가지 단계를 추가하고 빌드를 성공시켜보자.
기본 단계에 있는 Steps부터 살펴보자.
Bitrise가 저장소에 액세스 할 수 있고 애플리케이션을 가상 머신에 복제 할 권한이 있는지 확인한다. 우리는 사전에 등록을 해놓았기 때문에 사용할 수 있고, 다른 입력 변수를 수정할 필요가 없으니 그대로 두자.
이름에서 알 수 있듯이 앱 저장소의 복제본을 생성하는 데 사용된다.
가상 머신은 매번 보안 문제 때문에 삭제되지만 그렇다고 빌드를 매번 처음부터 해야 하는 것은 아니다. 이 단계에서 빌드 시간을 단축하기 위해 캐시를 가져온다.
사용자 지정 스크립트를 실행한다. 그러나 지금은 필요하지 않으니 삭제.
Input Variables 입력 변수
입력 변수를 변경할 때 환경 변수를 먼저 언급해야 한다. 환경 변수(Env Vars)는 키와 값으로 구성되며 Bitrise에서 $VAIABLES_NAME처럼 표현한다. 환경 변수는 Bitrise CLI에 의해 노출되거나 환경 변수 탭 내부에서 수동으로 추가되거나 Step의 output으로 생성될 수 있다. Step이 출력 변수를 생성할 때 이후 단계에서 사용할 수 있다.
프로젝트의 번들 버전 및 빌드 번호를 가져온다. 이 단계에는 .xcodeproj 및 info.plist 경로가 필요 합니다. 아래 이미지에서 볼 수 있듯이 $BITRISE_SOURCE_DIR은 Bitrise의 환경 변수 중 하나다. 이건 기본적으로 Bitrise가 실핼되는 디렉토리고 출력 변수를 생성한다. 즉 필요한 경우 다음 단계에서 사용할 수 있다.
Info.plist 파일에 있는 iOS 앱의 번들 버전을 Version Number로 설정한다.
환경 변수 $BITRISE_BUILD_NUMBER는 Bitrise의 빌드 번호다. Version Number를 이전 단계에서 생성 된 $XBV_PROJECT_VERSION으로 설정 한 것을 볼 수 있다. 이 단계 덕분에 빌드 번호를 자동으로 올릴 수 있다.
.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에서 확인할 수 있다.
cocoapods을 설치하는 pod install 명령을 실행한다.
iOS용이다. xcode build archive를 실행하고 IPA파일을 내보낸다. 이곳에서 Scheme Name, Configuration Name, Export Method를 설정해야 한다. Configuration과 Scheme은 Xcode 프로젝트에 실제로 있는 이름으로 넣어야 한다. 아마 환경 변수로 자동 설정되어 있을 것이다.
사용자가 사용할 수 있는 빌드 아티팩트를 배포한다. 이건 나중에 Firebase App Distribution이랑 연동해서 테스트 아티팩트를 배포할 예정이다.
마지막으로 매번 23분이나 걸리는 아까운 돈을 아끼기 위해서 Cache를 설정한다. (난 23분...)
이제 빌드를 실행하면 된다. 여기서 필자는 M1 & Xcode 13을 사용해서 개발했기 때문에 stack을 Xcode 13으로 설정해서 빌드했다. 이외에도 Firebase App Distribution 연동, Slack과 연동해서 빌드 실패와 성공을 알림받고, 빌드를 실행하는 트리거까지 웹훅으로 설정할 수 있다.