Xcode cloud ci/cd 도입 및 xcconfig 이슈 해결 #265
jeongdung-eo
started this conversation in
General
Replies: 1 comment
-
와 이거 ㄹㅇ 야물딱지다 ........ |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
앱을 업데이트할 때마다 빌드하고 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.sh
ci_post_clone.sh
스크립트 내에서는 xcconfig 파일에서 관리하는 값들을 환경 변수에 설정해야한다. 이러한 환경 변수를 설정함으로써 빌드 및 배포 과정에서 필요한 값들을 스크립트에서 쉽게 참조할 수 있다.ci_post_clone.sh
script를 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
Beta Was this translation helpful? Give feedback.
All reactions