Używam serwera CI Jenkins na komputerze z systemem OS X. Serwer działa jako standardowy użytkownik "john" i jest uruchamiany przez uruchomienie programu launchctl. Jedną z rzeczy, którą robi ten serwer, jest budowanie projektów XCode za pomocą kluczy i certyfikatów przechowywanych w pęku kluczy "xcode.keychain":Keychain nie odblokuje się ze skryptu Jenkins, chyba że użytkownik jest zalogowany
Jenkins (który działa pod użytkownikiem "john" według monitora aktywności) wywołuje te polecenia z poziomu skrypt, gdy użytkownik naciśnie przycisk w interfejsie internetowym.
security default-keychain -s /Users/john/Library/Keychains/xcode.keychain
security unlock-keychain -p password /Users/john/Library/Keychains/xcode.keychain
xcodebuild ...
Jeśli zdarza mi się być zalogowany na serwerze jako „John” za pośrednictwem interfejsu użytkownika, keychain zostaje odblokowany prawidłowo gdy Jenkins zwraca te polecenia. Ale jeśli nie jestem zalogowany, xcode.keychain nie zostanie odblokowany i kompilacja nie powiedzie się. Jakieś pomysły?
Moving wszystkie klucze i certyfikatów do System.keychain stałe ten problem. Zgaduję, że ma to coś wspólnego z Jenkinsem, który pracuje z launchctl, ale wciąż ciekaw, dlaczego dokładnie to nie działało wcześniej. –
Jak dokładnie to zrobiłeś? Próbowałem powtórzyć twoje rozwiązanie, ale nadal dostaję błąd :( – Zsub
YMMV, ale właśnie przeniosłem moje klucze i certyfikaty do pęku kluczy systemu zgodnie z zaleceniami powyżej i zadziałało to dla mnie. – makdad