Xcode Cloud Environment to Info.plist
서론
개인 프로젝트들은 현재 Bitrise에서 Xcode Cloud로 CI/CD를 전부 이전한 상태입니다. 근데 이전하면서 발생한 문제가 있는데, Environment 값을 누락하는 경우가 생기고 있습니다.. 그래서 Xcode Cloud에서 Environment 값들을 어떻게 주입하는지 기록해봅니다.
본론
기존에 동작하는 Workflow를 수정해주어야 합니다.
![](https://byeon.is/wp-content/uploads/2024/01/image-22.png)
Edit Workflow를 클릭
![](https://byeon.is/wp-content/uploads/2024/01/image-23-1024x672.png)
Environment 탭을 선택한 뒤 + 버튼을 통해 값 추가/- 버튼을 통해 값 삭제를 할 수 있습니다. Secret 체크의 여부는 CI/CD툴 log에서 값을 숨길 지 말지 결정합니다. 중요한 정보라면 꼭 체크해주어야 보안이 강화되겠죠?
완료되었다면 Save 클릭한 뒤 화면을 빠져나옵니다.
이제 Xcode Cloud에서 해당 Workflow가 xcodebuild 명령어를 수행하기 전에 실행할 스크립트를 만들겁니다. 문서에서는 아래와 같은 흐름으로 각각의 스크립트가 실행된다고 합니다. 저는 ci_pre_xcodebuild.sh 에서 수행하면 될 것 같습니다.
![](https://byeon.is/wp-content/uploads/2024/01/image-25-1024x199.png)
프로젝트 폴더내에 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를 체크해서 마스킹 처리됨)
![](https://byeon.is/wp-content/uploads/2024/01/image-26-1024x718.png)
결론
Xcode Cloud 겁나 편하다.
최신 댓글