2016-11-20 5 views
2

내 컴퓨터에 로컬 컴퓨터에 Jenkins 버전이 설치되어 있으며 개발 용으로 사용하는 El Capitan이 MacBook Pro입니다. 디버깅 목적으로 구성을 CI 빌드로 푸시하기 전에XCode 8 및 iOS 시뮬레이터가있는 Jenkins : "시뮬레이터가 부팅 될 때까지 120 초 동안 대기, 현재 상태는 1"

최근 내가 엑스 코드 8로 업그레이드 이후 생각, 우리는 시험에 대한 명령이 충분히 xcodebuild 간단

iOSSimulator: Timed out waiting 120 seconds for simulator to boot, current state is 1. 

이 시간 초과 오류를 받기 시작

xcodebuild clean test -scheme UnitTests -destination OS=9.3,name='iPhone 6' -sdk iphonesimulator -configuration Release ONLY_ACTIVE_ARCH=YES GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES -enableCodeCoverage=YES 

그러나 일부

이유는 최근에이 오류가 팝업되기 시작했습니다.이 오류는이 환경의 로컬 버전을 실행할 수 있다는 점에서 실제로 영향을 받았습니다.

+0

해당 오류 메시지에는 많은 잠재적 인 원인이 있습니다. Xcode는 코어에서 Simulator.app를 시작하여 분산 알림을 기다린 다음 분산 알림을 보내고 CoreSimulator.framework에서 XPC 메시지를 기다립니다.이 오류 메시지는 해당 Distnote를 얻지 못했거나 CoreSimulatorService에서 메시지를 수신하지 못했음을 의미합니다. sysdiagnose (sudo sysdiagnose -q) 파일을 가지고 레이더 파일과 ~ seaders/Library/Logs/CoreSimulator 파일을 만들 수 있다면 좀보고 싶을 것입니다. –

+0

Xcode 8.2에는 이러한 문제에 대해 CI를 훨씬 더 부드럽게 만들기위한 몇 가지 수정 사항이 있습니다. 시뮬레이터의 CI 테스팅에서 신뢰할 수없는 결과를 얻는 데 일부 원인을 시용하고 수정하는 데 약간의 시간을 보냈습니다. (버그에 대한 진정한 수정과 다른 문제에 대한 해결 방법 추가). 특히 엘 캡 (El Cap)의 커널 버그 인 한 가지 문제 (빌드 중에 ibtool 걸기)가 있으며 호스트 OS를 시에라 (Sierra)로 업그레이드해야 문제를 해결할 수 있다는 점에 유의하십시오. –

+0

안녕하세요 @ JeremyHuddlestonSequoia, 답장을 보내 주셔서 감사합니다. 우리는 현재 CI 프로세스를보다 분산 된 방식으로 재구성하고 있으며, 다시 얻으면 sysdiagnose를 얻고 로그를 사용하여 레이더 파일을 만듭니다. – seaders

답변

2

내 경우 엔 거의 젠킨스 설치 방법과 관련이 있습니다.

처음에는 Jenkins를 루트 프로세스로 설치했습니다 (/Library/LaunchDaemons/org.jenkins.plist). 그 설정에서 그것은 UserName 키 아래에 내 사용자 이름을 가지고 있었고 whoami을 실행하는 것이 올바른지를 보여 주었지만 OSX가 실행되는 방식과 함께 DaemonsLaunchAgents이 여기에 중요하다는 것을 보여주었습니다.

그 plist에서 나는 을 true으로 설정했는데, 이런 상황에서 문제를 일으키는 것으로 알려져 있습니다.

<key>SessionCreate</key><false/> 확실히 편집하려면/false를 명시 적으로 "false"로 설정해야합니다. 사용자 및 그룹 이름 키가 정확한 로그인 사용자로 선택되어야합니다. 내 상황에서는 모두 함께 시작해야합니다. PLIST 내 상황에

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
    <dict> 
    <key>UserName</key> 
    <string>seaders</string> 
    <key>GroupName</key> 
    <string>staff</string> 
    <key>SessionCreate</key> 
    <false/> 
    <key>EnvironmentVariables</key> 
    <dict> 
     <key>JENKINS_HOME</key> 
     <string>/Users/Shared/Jenkins/Home</string> 
    </dict> 
    ... 

, 나는 젠킨스 루트의 LaunchDaemons 내 자신의 사용자의 LaunchAgent 디렉토리에의 구성 PLIST는,

$ # If jenkins is currently loaded from root, it needs unloading 
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins.plist 
$ sudo mv /Library/LaunchDaemons/org.jenkins.plist ~/Library/LaunchAgents/ 
$ # If jenkins had run under root, and used the regular log paths, we need to change the ownerships of a few places, my full command is 
$ sudo chown -R seaders:staff ~/Library/LaunchAgents/org.jenkins.plist /var/log/jenkins/ /Users/Shared/Jenkins/Home 
$ launchctl load ~/Library/LaunchAgents/org.jenkins.plist 

이의 전반적인 효과는 J 있음을 이동하는 데 필요한처럼 보인다 enkins는 귀하의 이 현재에 로그인 한 상태로 실행됩니다. 프로세스는 귀하의 것이고, 사용자 및 그룹 이름은 귀하의 것으로, 귀하는 명시 적으로 새로운 세션을 생성하지 말라고 말하고 있습니다.

그, 일을 실행, 아이폰 OS와 이런 식으로 일을 서명 할 때, 당신은 더 이상 키 체인 잠금을 해제해야한다, 그러나 당신이 경우에,이,

우리는 젠킨스와 함께 사용하는 지나치게 편집증 스크립트의 상단에

,

$ security unlock-keychain -p ${USERPASS} ${HOME}/Library/Keychains/login.keychain $ security list-keychains -s ${HOME}/Library/Keychains/login.keychain $ security -v list-keychains -s ${HOME}/Library/Keychains/login.keychain $ security list-keychains # so we can verify that it was added if it fails again $ security -v unlock-keychain -p ${USERPASS} ${HOME}/Library/Keychains/login.keychain 

그러나 다시, 경우 앱에 서명하도록 허용 제대로 개발 상자로 기계를 설치 한 후 keysign 오류로 실행하고 있으며, 젠킨스가 진정으로 사용자로 실행중인 당신은 실제로 안 더 이상 키 체인을 잠금 해제해야합니다.

호프는이 모바일 CI 지옥을 통과 한 다른 사람들에게 도움이되기를 바랍니다.

+0

LaunchAgent로 설정하면 LaunchAgent로 만들 때 UserName/GroupName이 필요하지 않습니다. 또한 사용자가 로그인하면 작업이로드되고 실행됩니다. 젠킨스를 LaunchDaemon으로 실행할 수 있어야합니다. 많은 사람들이 잘하고 있지만 개인적으로는 아닙니다. –

+0

우리는 LaunchDaemons로 설정 한 것을 사용했지만 시뮬레이터를 실행하고 UI 레이어에 액세스 할 때 사용 권한 문제가 발생하는 곳이었습니다. 열쇠 고리의 잠금 해제는 문제의 일부를 다루는 것이 었 습니다만, 문제가 해결 되었더라도 열쇠 고리의 잠금을 해제하지 않으면 키 체인을 도울 수 있기를 바랍니다. – seaders

+0

그레이트!. 내 문제를 해결했다. :) –