Xcode cloud ci/cd 도입 및 xcconfig 이슈 해결 #265
jeongdung-eo
started this conversation in
General
Replies: 1 comment
|
와 이거 ㄹㅇ 야물딱지다 ........ |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
앱을 업데이트할 때마다 빌드하고 Archive하는 과정을 자동화하기위해 Xcode Cloud CI/CD를 도입하기로 했습니당
이 과정에서 발생했던 이슈를 ,, 공유하기위해 ,,, 작성하게 되었슴다..!!
먼저 CI/CD란?
CI를 사용하면 다양한 시뮬레이션 및 디바이스 환경에서 Build, Test, Action을 동시에 수행 할 수 있다.
CI가 완료되면 CD를 통해 TestFlight 또는 App Store에 Archive하여 새로운 버전의 앱을 배포할 수 있다.
CI/CD를 구축하는 다양한 방법 중에서 Xcode Cloud를 선택한 이유는 다음과 같다.
https://medium.com/daily-monster/xcode-cloud%EB%A1%9C-ci-cd-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-1-45b74a7ed167
를 참고하여 CI/CD를 구축했으나 ,,, 문제가 발생했다.
Config.xcconfig 파일을 찾을 수 없어서 발생한 오류임 ,,,

현재 진행 중인 프로젝트에서는 base URL을 포함한 보안을 고려해야하는 정보들을 .xcconfig 파일에서 관리하고 있으며, 이를 .gitignore에 넣어 두었다.
Xcode Cloud가 Xcode 빌드를 할 때 remote reporitory를 clone하여 빌드를 진행하기 때문에 Github에 올라와 있지 않은 Config파일을 찾을 수 없어서 발생한 이슈였다,,
이를 해결하기 위해 여러 방법을 찾아보다가
Xcode Cloud custom build script를 알게 되었다!
출처: https://medium.com/daily-monster/xcode-cloud-with-xcconfig-ft-삽질-️-4d1aae000604
ci_post_clone.sh
Xcode Cloud가 Github 레포를 클론한 이후에 ci_post_clone.sh 가 실행된다.
추가적인 툴을 설치하거나, plist에 새로운 값을 추가할때 사용할 때 사용할 수 있다.
ci_pre_xcodebuild.sh
Xcode Cloud가 xcodebuild 커맨드를 실행하기 전에 실행된다.
이 스크립트는 추가적인 종속성(외부 라이브러리, 서브모듈 등)을 컴파일 할 때 사용할 수 있다.
ci_post_xcodebuild.sh
Xcode Cloud가 xcodebuild를 성공적으로, 또는 실패하더라도 실행한 후에 실행된다. 빌드 과정에서 생성된 파일들로, 실행 가능한 애플리케이션, 라이브러리, 디버그 정보, 로그 파일, 테스트 결과등의 artifacts를 저장소나, 외부 서비스에 업로드 할때 사용할 수 있다.
현재 문제를 해결하기 위해서는 Xcode Cloud의 CI/CD 설정에서 post-clone 시점에 실행되도록 구성해야한다!
이를 위해 다음 과정을 거쳐야한다.
ci_post_clone.sh스크립트를 생성해야한다.ci_post_clone.shci_post_clone.sh스크립트 내에서는 xcconfig 파일에서 관리하는 값들을 환경 변수에 설정해야한다. 이러한 환경 변수를 설정함으로써 빌드 및 배포 과정에서 필요한 값들을 스크립트에서 쉽게 참조할 수 있다.ci_post_clone.shscript를 Xcode Cloud의 CI/CD 설정에서 post-clone 시점에 실행되도록 구성해야한다. 이를 통해 빌드 프로세스가 시작되기 전에 필요한 작업을 수행할 수 있다.이렇게 하면 제대로 동작해야 하는데, 여전히 문제가 해결되지 않았슴다 ,,,!
문제가 발생한 원인을 분석해보니 ,,,
스크립트 맨 앞에 shebang을 작성하지 않았다 ..
#!/bin/sh스크립트 맨 처음에 해시기호와 느낌표(#!)로 이루어진 shebange을 작성해줘야한다.
shebang은 코드 최상단에서 해당 파일을 해석해줄 인터프리터의 절대경로를 지정해주는 역할을 한다.
폴더 경로를 잘못 설정했다 ..
Config.xconfig는 Resource 안에 존재했는데
FOLDER_PATH="/Volumes/workspace/repository/�GEON-PPANG-iOS"로 작성해서 오류가 발생 ..FOLDER_PATH="/Volumes/workspace/repository/�GEON-PPANG-iOS/Resource"로 폴더 경로 변경해서 해결했다 ..경조 설정을 잘못했다 ..
script 파일은 프로젝트 저장소의 루트 디렉토리나 그 하위 디렉토리에 있어야하는데 ,,,

디렉토리 안에 넣어뒀었다 ,,,
shebang을 작성하고, script 파일 위치를 변경해주고 나니 ,,,성공,,!!!!
[참고]
https://medium.com/daily-monster/xcode-cloud%EB%A1%9C-ci-cd-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-1-45b74a7ed167
https://medium.com/daily-monster/xcode-cloud-with-xcconfig-ft-%EC%82%BD%EC%A7%88-%EF%B8%8F-4d1aae000604
All reactions