我在我的计算机上安装了本地版本的Jenkins,MacBook Pro
使用El Capitan,我将其用于开发和调试目的,然后再将配置推送到我们的CI版本中。
最近,我认为自升级到XCode 8后,我们开始收到此超时错误
iOSSimulator: Timed out waiting 120 seconds for simulator to boot, current state is 1.
要测试的命令很简单xcodebuild
,
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 :(得分:2)
在我的情况下,这几乎与我安装Jenkins的方式有关。
我最初在/Library/LaunchDaemons/org.jenkins.plist
中安装了Jenkins作为根进程。在该配置中,它在UserName
密钥下面有我的用户名,并且运行whoami
表明这是正确的,但是OSX如何运行Daemons
与LaunchAgents
的关键是关键
在那个plist中,我也SessionCreate
设置为true
,这在这种情况下会导致问题。
这需要编辑/明确设置为&#34; false&#34;可以肯定的是,<key>SessionCreate</key><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>
...
对于我的情况,我需要将Jenkins配置plist从root LaunchDaemons
移到我自己用户的LaunchAgent
目录中,
$ # 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
这样做的整体效果是Jenkins真正以当前登录用户身份运行,流程属于您,用户和群组名称属于您,并且您明确告诉它不是完全创建一个新会话。
除此之外,在使用iOS签名,以这种方式运行时,您不再需要解锁钥匙串,但如果这样做,这就是我们使用的过于偏执的脚本詹金斯,
$ 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
但是,如果如果在将计算机正确设置为开发框之后就会遇到密钥错误,允许对应用进行签名,并且Jenkins真正以您的用户身份运行,你不应该再解锁钥匙链了。
希望这可以帮助那些经历过移动CI的人。