6

Jenkins를 사용하여 지속적인 통합 빌드를 수행하고 있습니다. 동일한 구성 코드가 많은 작업이 꽤 있습니다. 필자는이 모든 것을 일반적인 스크립트 파일로 가져 와서 사전 빌드 및 게시 빌드를 실행하고 싶습니다.Xcode 빌드 단계 실행 스크립트 내에서 전역 환경 변수 설정

Xcode 빌드 명령과 젠킨스 빌드가 모두 볼 수 있도록 해당 스크립트 내에서 환경 변수를 설정하는 방법을 알아 내지 못했습니다.

가능하면 누구에게 알리십니까?

+0

아마도이 대답이 도움이 될 수 있습니다. - http://stackoverflow.com/a/32743908/67824 그것은 당신이 글로벌 환경 변수를 정의 할 수는 없지만 환경 변수를 원하는 xcodeproj 빌드 설정을 변경할 수있게 해줍니다 (적어도 저에게는 그러한 경우가 있습니다). –

답변

5

당신이 물어 보는 것을 정확히 할 수는 없습니다. 프로세스는 다른 프로세스의 환경 변수를 변경할 수 없습니다. 사전 및 사후 및 실제 빌드 단계는 서로 다른 프로세스에서 실행됩니다.

그러나 공통 환경 변수를 설정하고 모든 빌드간에 해당 스크립트를 공유하는 스크립트를 만들 수 있습니다.

는 xcodebuild 먼저 스크립트에서 명령을 실행하는 쉘을 호출하고 부를 것이다 :

# Note the dot in the beginning of the next line. It is not a typo. 
. set_environment.sh 
xcodebuild myawesomeapp.xcodeproj 

스크립트는 다음과 같이 수 :

export VARIABLE1=value1 
export VARIABLE2=value2 

당신의 작업이 정확히 어떻게 공유합니다 스크립트는 환경 및 유스 케이스에 따라 다릅니다. 당신은

  • 장소 잘 알려진 젠킨스 호스트의 위치 또는
  • 장소에 스크립트는 버전 제어 소스 트리에있는 스크립트는 모든 작업이 동일한 저장소 또는
  • 장소 스크립트를 공유 할 수있는 경우 자체의 저장소이며 스크립트를 빌드 아티팩트로 보관하는 Jenkins 빌드를 만듭니다. 다른 모든 작업은 Artifact 플러그인을 사용하여 스크립트 작업의 아티팩트에서 스크립트의 사본을 가져옵니다.
+0

이것이 어떻게 도움이되는지 모르겠습니다. 저와 다른 많은 사람들이 이것을 조사하는 이유는 환경 변수 설정을 통해 다음 구축 단계에 영향을주는 빌드 단계의 능력을 갖추는 것입니다. 필자의 경우에는 미리 정의 된 프로세서 매크로를 설정하는 것만으로도 충분하지만 답은 없습니다. 또는 특정 빌드 단계에서 변수를 내보내는 스크립트를 디스크에 기록해야하며 다른 모든 대상에서 실행해야합니다. –

0

Apple's Technical Q&A QA1067에서 당신이 파일 /Users/YOU/.MacOSX/environment.plist을 생성하고 모든 프로세스가 (자신의 홈 디렉토리에있는 environment.plist 파일을 사용자에 의해 시작) 원하는 환경 변수로 채우 경우 이러한 환경 변수를 선택할 것으로 보인다 . 새로 시작한 프로세스가 변수를 선택하기 전에 컴퓨터를 다시 시작하거나 로그 아웃 한 다음 다시 로그인해야 할 수 있습니다.
This article 또한 Xcode가 이러한 변수를 빌드 단계 스크립트에 전달한다고 주장합니다. 아직 테스트하지는 않았지만 다음 번에 MacBook을 다시 시작하면 제대로 작동하는지 알려드립니다.

http://developer.apple.com/library/mac/#/legacy/mac/library/qa/qa1067/_index.html

Q: How do I set environment for all processes launched by a specific user?


A: It is actually a fairly simple process to set environment variables for processes launched by a specific user.

에서 때마다 에 대한 사용자 로그를 검색 loginwindow 특별한 환경 파일이 있습니다. 환경 파일 is : ~/.MacOSX/environment.plist (대소 문자를 구분하십시오). Where '~'는 관심이있는 사용자의 홈 디렉토리입니다. 은 터미널을 사용하여 직접 .MacOSX 디렉토리를 만들어야합니다 ( 입력 mkdir .MacOSX). 파일을 직접 만들어야합니다. 환경 파일은 실제로 XML/plist 형식 입니다 (파일 이름의 끝에 .plist 확장자를 추가해야합니다. 그렇지 않으면 이 작동하지 않습니다).

+0

작동 했습니까? 나는이 방법을 사용하여 내 변수를 볼 xcode를 얻을 수 없었어요 ... – brendanjerwin

+0

@brendan 아니, 그것은 불행히도 나를 위해 일하지 않았다. – chown