본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
IT 이야기

[jenkins] jenkins에서 멀티 Xcode 사용 설정하기

by 마즈다 2016. 1. 6.
반응형

기존에 개인 업무용 iMac에 jenkins와 SVN 서버를 구축하고 사용을 하고 있었다.

그런데 개발용으로 사용하는 iMac에 서버를 구축해놓으니 리소스가 너무 후달려 아무래도

제대로 사용하기가 어려웠다.


마침 이번에 철수하는 인력이 사용하던 iMac을 그대로 사용할 수 있게 되어 서버로 사용하기로 했다.

그래서 개발용 iMac에 있던 각종 서버들을 서버용 iMac으로 옮기기로 했다.

(사실 iOS만 개발할 것 같으면 OSX Server를 사용했을텐데 안드로이드도 함께 개발하다보니

 역시 jenkins가 가장 나은 선택인 것같다.)


안드로이드 설정이야 별 어려움 없이 진행했다. 추가로 N’SIQ Collector 플러그인까지 설치하고,

(추후 PMD까지 설치 예정)


문제는 iOS였다...

개발 PC에 구축만 해놓고 한동안 사용을 안했는데 그 사이에 관리해야 할 앱이 하나 추가된 것이다.

문제가 되는 상황은 기존 앱은 하이브리드 앱으로 외부 라이브러리 문제로 Xcode 5.1.1에 SDK를

6.0밖에 사용 못한다는 것이다. 그리고 후에 추가된 앱은 네이티브로 개발된 앱으로 최신 버전의

SDK를 사용 가능하다.


결국 각각 빌드 시 해당 프로젝트에 맞는 SDK를 이용해서 빌드해야 하는데 이 방법을 몰랐던 것이다.


우선 Xcode를 2개 이상 설치한 상황에서 디폴트 Xcode를 선택하는 명령어가 다음과 같다는 것은 알았다.


sudo xcode-select -s /Applications/Xcode.app

sudo xcode-select -s /Users/khiin/Applications/Xcode5.1.1.app 


jenkins 위키 페이지에도 이 내용은 언급되어있다.


https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin


이 곳에 보면 Xcode를 멀티로 설치하는 방법과 디폴트로 사용할 Xcode를 선택하는 방법

그리고 런타임 시 Xcode 버전을 선택하는 방법이라는 내용이 있다.


처음에는 런타임 시 Xcode 버전을 선택하는 방법만 사용하면 될 줄 알았다.

천만의 말씀 만만의 콩떡이었다...ㅠ.ㅠ


결과적으로는 위의 2가지 내용을 조합하는 것이 방법이었다.


잡설이 길어졌으니 이만 줄이고 본론으로 가자


jenkins에서 2개 이상의 Xcode 버전을 런타임시 선택적으로 사용하여 빌드하는 방법


*** 기본적으로 jenkins에서 Xcode 빌드 설정은 완료된 것으로 생각하고 설명한다. 기본적인 jenkins에서의 Xcode 플러그인 설정

방법이 필요하신 분은 아래 주소로...


http://mazdah.tistory.com/519


1. 당연히 2개 이상의 서로 다른 버전의 Xcode가 설치된 것을 전제로 한다.


2. jenkins에서 빌드 전에 환경을 설정해주기 위해 Environment Injector Plugin라는 플러그인을 설치해준다. 



3. 각각의 iOS 프로젝트로 이동하여 구성(설정 또는 config) 화면으로 이동한다.


4. 이름과 설명 밑에 나오는 가장 위에있는 선택 옵션을 보면  Prepare an environment for the run이라는 옵션이 추가되어있다. 체크하자


5. 디폴트 상태에서 Script Content에 다음과 같이 입력한다. (파일에 등록한 후 Script File Path를 지정해도 될 것으로 믿어 의심치 않는다...-.-)



6. 일단 jenkins 설정은 끝이다. 그런데 여기서 또하나의 문제가 발생한다. 바로 sudo 명령어...현재 나는 jenkins를 standalone 형태로

    사용 중인데 이렇게 해놓고 빌드하면 위의 스크립트 실행 후 jenkins 콘솔에 패스워드 입력 프롬프트가 떡하니 나타나서 멈춘 상태로

    있다.


7. 그래서 sudo를 패스워드 입력 없이 수행할 방법을 구글링...역시 없는 게 없는 구글...매우 위험한 방법이지만 내부에서만 사용하는 

   서버이니 한 번 사용해보기로 했다. 바로 sudores 파일 편집


    /etc/sudoers 파일을 편집한다. 강력하게 접근 권한 및 소유권이 지정되어있어 잘 편집이 안된다.

   우선 Finder로 파일을 찾아가서 사용 가능한 계정으로 읽기 쓰기 권한을 준 후 편집하였다. 물론 편집 후 권한은 원위치


   대략 다음과 같은 내용이 나오는 위치로 이동하여


   # Same thing without a password

 # %wheel        ALL=(ALL) NOPASSWD: ALL


  다음과 같은 내용을 추가해주었다.


  jenkins         ALL=(ALL) NOPASSWD: ALL


  의미는 jenkins 계정으로 모든 콘솔에서 모든 명령에 대해 sudo를 이용하여 처리할 때 패스워드를 입력받지 않아도 되는

  권한을 주는 것이다. 매우 위험해보인다...-.-


8. 여기까지 하면 5번 단계의 설정에 따라 런타임 시 각기 다른 Xcode 버전과 SDK 버전을 사용하여 빌드할 수 있게 된다.


요고하느라 하루 그냥 보냈다...ㅠ.ㅠ

반응형