.xcscheme 파일과 관련하여 확실히 올바른 길을 가고 있습니다. 내 프로젝트를 설정하는 동안이 문제가 나타났습니다!
후손이나 적어도 검색을 통해 여기로 오는 사람을 위해, 여기에 두 가지 버전이 있습니다. "나는 바빠서 사실 만 알려주세요"버전과 좀 더 관련된 토론과 근거입니다. 두 버전 모두 작업 공간 파일에서 빌드하려고한다고 가정합니다. 그렇지 않다면 대부분 작업 공간 기반 프로젝트에 적용되므로 사과드립니다.
요약 된 'Fix-it'버전
근본 원인은 Schemes의 기본 동작이 특별히 공유로 표시 될 때까지 스키마를 '비공개'로 유지하는 것입니다. 명령 줄에서 시작된 빌드의 경우 Xcode UI는 실행되지 않으며 xcoderun 도구에는 작업 할 자체 스키마 캐시가 없습니다. 목표는 Bamboo가 실행하기를 원하는 스킴을 생성, 공유 및 커밋하는 것입니다.
- 코드의 깨끗한 작업 복사본에서 프로젝트의 작업 영역을 엽니 다.
- 제품 메뉴에서 체계> 체계 관리 ...를 선택합니다.
- 프로젝트에 대해 정의 된 구성표 목록이 나타납니다.
- Bamboo가 실행하려는 구성표를 찾습니다.
- 해당 구성표에 대해 '공유'상자가 선택되어 있고 '컨테이너'설정이 프로젝트 파일 자체가 아닌 작업 공간으로 설정되어 있는지 확인하십시오.
- '확인'을 클릭하여 구성표 관리 시트를 닫습니다.
- 새 .xcscheme 파일이 WorkspaceName.xcworkspace / xcshareddata / xcschemes의 프로젝트에 생성되었습니다.
- 이 파일을 저장소에 커밋하고 Bamboo 빌드를 실행합니다.
심층 토론 및 근거
Xcode 4는 관련 Xcode 프로젝트를 연결하고, 대상을 빌드하고, 구성을 함께 빌드하는 메커니즘을 처리하는 데 내재 된 혼란을 해결하는 데 도움이되는 방법으로 작업 공간 및 체계를 도입했습니다. 작업 공간 자체에는 포함 된 데이터의 작은 '상자'각각을 설명하는 자체 구성 데이터 세트가 있으며 .xcodeproj 파일을 첨부하기위한 스켈레톤과 각 개발자 시스템 또는 CI 시스템에 미러링되는 공유 구성 데이터 세트로 작동합니다. . 이것은 작업 공간의 힘이자 함정입니다 .1) 100 % 올바르게 구성했지만 잘못된 컨테이너에 넣거나 2) 올바른 컨테이너에 넣었지만 잘못 구성하여 데이터를 렌더링하는 방법이 많이 있습니다. 시스템의 다른 부분에서 액세스 할 수 없습니다!
Xcode 4 체계의 기본 동작은 프로젝트가 작업 공간 파일에 추가 될 때 새 체계를 자동으로 생성하는 것입니다. 여러 .xcodeproj 파일을 추가 한 사용자는 특히 프로젝트 파일이 추가 된 후 제거 된 다음 동일한 작업 공간으로 읽어 들일 때 구성표 목록이 빠르게 처리되지 않는 것을 알아 차렸을 것입니다. 자동 생성되거나 수동으로 생성 된 모든 체계는 기본적으로 .xcuserdata 파일이 프로젝트의 데이터 및 구성으로 커밋 된 경우에도 현재 사용자에게만 표시되는 '개인'체계입니다. 이것이 xcodebuild에서 Bamboo가보고하는 숨겨진 빌드 오류의 근본 원인입니다 .Bamboo는 Xcode UI가 아닌 명령 줄을 통해 빌드를 작동하기 때문에 Scheme이 자동으로 생성 될 기회가 없으며 해당 UI에만 의존합니다. 작업 공간 자체에서 정의됩니다.
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
xcodebuild는 < 'workspace'Parameter Value> / xcshareddata / xcschemes에있는 < 'scheme'Parameter Value> .xcscheme 파일을 찾습니다.
분명히 Bamboo와 작업 공간을 모두 구성 할 수있는 여러 가지 방법이 있으므로 고유 한 구성이 여기에 표시된 것과 100 % 매핑되지 않을 수 있습니다. 핵심 사항 :
- Xcode UI가 마술처럼 처리하는 특정 자동화 작업은 Xcodebuild CLI를 통해 사용할 수 없습니다.
- 스킴을 첨부하고 구성 데이터를 '컨테이너 계층 구조'의 여러 위치에 빌드 할 수 있습니다. 데이터가 올바른 컨테이너 (작업 공간, 프로젝트 및 / 또는 빌드 대상)에 있는지 확인합니다.
- 컨테이너 계층 구조에서 xcodebuild 도구가 구성 데이터를 찾을 수있는 위치를 고려하십시오. 검색이 시작되는 위치에 대한 훌륭한 지표는 '-workspace'또는 '-project'인수를 사용하는 것입니다.
'공유 됨'상자는 이미 선택되어 있습니다. 이제 무엇을할까요?
내 Bamboo 인스턴스에서 이와 동일한 문제가 발생했습니다. 내 저장소에서 커밋 된 체계가 구식이고 최신 버전의 명령 줄 도구가 제대로 처리하지 않는 것으로 나타났습니다. 이것이 이전에 존재했기 때문에 구성표에 대해 눈에 띄는 사용자 정의가 없는지 설정을 살펴보고 구성표를 삭제하고 다시 생성하여 '공유 됨'으로 표시하고 새 .xcscheme 파일을 저장소.
모든 것이 좋아 보이고 다시 빌드해도 문제가 해결되지 않으면 컨테이너 설정을 다시 확인하십시오. 계층 구조의 잘못된 컨테이너에 해당 스키마를 연결하는 것은 정말 쉽습니다!