내 경우 엔 거의 젠킨스 설치 방법과 관련이 있습니다.
처음에는 Jenkins를 루트 프로세스로 설치했습니다 (/Library/LaunchDaemons/org.jenkins.plist
). 그 설정에서 그것은 UserName
키 아래에 내 사용자 이름을 가지고 있었고 whoami
을 실행하는 것이 올바른지를 보여 주었지만 OSX가 실행되는 방식과 함께 Daemons
대 LaunchAgents
이 여기에 중요하다는 것을 보여주었습니다.
그 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 지옥을 통과 한 다른 사람들에게 도움이되기를 바랍니다.
해당 오류 메시지에는 많은 잠재적 인 원인이 있습니다. Xcode는 코어에서 Simulator.app를 시작하여 분산 알림을 기다린 다음 분산 알림을 보내고 CoreSimulator.framework에서 XPC 메시지를 기다립니다.이 오류 메시지는 해당 Distnote를 얻지 못했거나 CoreSimulatorService에서 메시지를 수신하지 못했음을 의미합니다. sysdiagnose (sudo sysdiagnose -q) 파일을 가지고 레이더 파일과 ~ seaders/Library/Logs/CoreSimulator 파일을 만들 수 있다면 좀보고 싶을 것입니다. –
Xcode 8.2에는 이러한 문제에 대해 CI를 훨씬 더 부드럽게 만들기위한 몇 가지 수정 사항이 있습니다. 시뮬레이터의 CI 테스팅에서 신뢰할 수없는 결과를 얻는 데 일부 원인을 시용하고 수정하는 데 약간의 시간을 보냈습니다. (버그에 대한 진정한 수정과 다른 문제에 대한 해결 방법 추가). 특히 엘 캡 (El Cap)의 커널 버그 인 한 가지 문제 (빌드 중에 ibtool 걸기)가 있으며 호스트 OS를 시에라 (Sierra)로 업그레이드해야 문제를 해결할 수 있다는 점에 유의하십시오. –
안녕하세요 @ JeremyHuddlestonSequoia, 답장을 보내 주셔서 감사합니다. 우리는 현재 CI 프로세스를보다 분산 된 방식으로 재구성하고 있으며, 다시 얻으면 sysdiagnose를 얻고 로그를 사용하여 레이더 파일을 만듭니다. – seaders