Xcode Cloud Environment to Info.plist

서론

개인 프로젝트들은 현재 Bitrise에서 Xcode Cloud로 CI/CD를 전부 이전한 상태입니다. 근데 이전하면서 발생한 문제가 있는데, Environment 값을 누락하는 경우가 생기고 있습니다.. 그래서 Xcode Cloud에서 Environment 값들을 어떻게 주입하는지 기록해봅니다.

본론

기존에 동작하는 Workflow를 수정해주어야 합니다.

Edit Workflow를 클릭

Environment 탭을 선택한 뒤 + 버튼을 통해 값 추가/- 버튼을 통해 값 삭제를 할 수 있습니다. Secret 체크의 여부는 CI/CD툴 log에서 값을 숨길 지 말지 결정합니다. 중요한 정보라면 꼭 체크해주어야 보안이 강화되겠죠?

완료되었다면 Save 클릭한 뒤 화면을 빠져나옵니다.

이제 Xcode Cloud에서 해당 Workflow가 xcodebuild 명령어를 수행하기 전에 실행할 스크립트를 만들겁니다. 문서에서는 아래와 같은 흐름으로 각각의 스크립트가 실행된다고 합니다. 저는 ci_pre_xcodebuild.sh 에서 수행하면 될 것 같습니다.

프로젝트 폴더내에 ci_scripts 폴더를 생성한 뒤 ci_pre_xcodebuild.sh를 생성합니다.

#!/bin/sh

echo "Environment scripts has been activated .... "

cd ..

# GITHUB_API_KEY와 GITHUB_API_SECRET 환경변수의 값을
# Info.plist와 같은 PRtify.plist 파일의 GITHUB_API_KEY, GITHUB_API_SECRET 키의 값을 교체한다
plutil -replace GITHUB_API_KEY -string $GITHUB_API_KEY ./Targets/PRtify/Resources/iOS/PRtify.plist
plutil -replace GITHUB_API_SECRET -string $GITHUB_API_SECRET ./Targets/PRtify/Resources/iOS/PRtify.plist

plutil -p ./Targets/PRtify/Resources/iOS/PRtify.plist

echo "Environment scripts has been DONE .... "

exit 0

위처럼 스크립트를 작성하였다면 이제 아래와 같이 실행 권한을 부여합니다.

$ chmod +x ci_scripts/ci_pre_xcodebuild.sh

이제 빌드를 수행해보면 아래와 같이 값이 제대로 설정되어 들어가는 것을 확인할 수 있습니다.(필자는 Secrets를 체크해서 마스킹 처리됨)

결론

Xcode Cloud 겁나 편하다.