2012-11-21 1 views
21

Jenkins를 사용하여 CI 시스템을 설정 중이며 xcodebuild가 실행시 스키마가 없기 때문에 빌드가 실패했다는 것을 알았습니다. 줄xcodebuild 명령이 Jenkins에서 실행될 때와 다른 경우 명령 줄에서 실행될 때

-xcodebuild -workspace XXX -scheme NNN.

왜 이런 일이 벌어 질 수 있는지 알 수 없기 때문에 내 작업 공간에 뭔가있는 것을 없애기 위해 Xcode를 사용하여 새 프로젝트 템플릿을 만들었고 모든 xcodebuild 명령의 동작에 차이가 있음을 발견했습니다. 모든 작업 공간/프로젝트.

템플릿 프로젝트는 스크랩을 불렀다와 터미널 명령 줄에서 내가 예를 들어이 명령을 실행하면 :

xcodebuild -list 

Information about project "scrap": 
    Targets: 
     scrap 

    Build Configurations: 
     Debug 
     Release 

    If no build configuration is specified and -scheme is not passed then "Release" is used. 

    Schemes: 
     scrap 

를 출력하지만 xcodebuild -list는 젠킨스 내에서 실행하는 경우 출력은 다음과 같습니다.

Building in workspace /Users/Shared/Jenkins/Home/workspace/scrap 
[scrap] $ /bin/sh -xe /var/folders/ph/s6dvlfq9769741g_yzmjlmz000007c/T/hudson3765407964219991487.sh 
+ xcodebuild -list 
Information about project "scrap": 
    Targets: 
     scrap 

    Build Configurations: 
     Debug 
     Release 

    If no build configuration is specified and -scheme is not passed then "Release" is used. 

    This project contains no schemes. 

이것은 젠킨스 작업 중 가장 간단합니다. l 새로운 일자리를 만들고 그것을 자유형 소프트웨어 프로젝트로 설정 한 다음 Execut 셸 빌드 단계를 추가하고 xcodebuild -list 명령을 추가하면됩니다.

왜 xcodebuild가있을 때 스키마가 없다고 말합니까? 젠킨스에서 달리면 왜 다르게 행동합니까?

+0

확장명없이 이름을 전달해 보셨습니까? – Eimantas

+0

나는 훨씬 일반적인 문제를 발견하여 제 질문을 수정했습니다. 단순히 "xcodebuild -list"를 실행하면 Jenkins에서와 같이 명령 행에서 다른 결과를 얻을 수 있습니다. – Gruntcakes

답변

32

당신이해야 할 일은 공유 구성표를 설정하는 것입니다. 구성표> 구성표 관리 "공유"가 선택되어 있는지 확인하십시오.

이는 이제 젠킨스 상자에 나타납니다 소스 제어 및 기법에 새 폴더/파일 .../xcshareddata/xcschemes/???. xcscheme

확인이 파일을 생성합니다.

+0

이 구성표는 어디에 있습니까?> 구성표 관리? –

+0

XCode 5에서 대상 ("중지"버튼 오른쪽에 있음)을 클릭하면 "구성표 관리" – poxion

0

.gitignore 파일에서 .xcodeproj/xcuserdata/ .xcuserdatad를 무시해야합니다. xcodebuild -list .xcodeproj/xcuserdata/ .xcuserdatad/xcschemes의 스키마를 가져옵니다. 젠킨스 서버에는이 파일이 없으므로 스키마가 없으므로 젠킨스 서버에서 * .xcodeproj를 열 수 있습니다. 파일을 만들고 xcodebuild -list에서 현재 스키마를 가져올 수 있습니다. 동일한 문제가 있으며 메서드로 해결할 수 있습니다. 위.

관련 문제