Nasza zautomatyzowana kompilacja działa na Jenkins. Sama kompilacja działa na niewolnikach, a niewolnicy są wykonywane przez SSH.
Pojawia się błąd:
00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.
Wypróbowałem każdą sugestię, którą do tej pory widziałem w innych postach tutaj:
- Użycie bezpieczeństwa odblokowania pęku kluczy bezpośrednio przed podpisaniem w celu odblokowania pęku kluczy.
- Przeniesienie klucza podpisywania do własnego pęku kluczy.
- Przeniesienie klucza podpisu do pęku kluczy logowania.
- Przeniesienie klucza podpisywania do pęku kluczy systemu.
- Ręczne ustawianie list-pęków kluczy tylko do pęku kluczy, który zawiera klucz.
We wszystkich przypadkach pojawia się ten sam błąd.
Próbując zdiagnozować problem, próbowałem uruchomić polecenie „security unlock-keychain” na moim lokalnym terminalu i stwierdziłem, że w rzeczywistości nie odblokowuje ono pęku kluczy - jeśli spojrzę w Dostęp do pęku kluczy, symbol blokady nadal tam jest. Dzieje się tak, niezależnie od tego, czy podaję hasło w wierszu poleceń, czy też pozwolę, aby monit o to. Odblokowanie tego samego pęku kluczy za pomocą GUI spowoduje wyświetlenie monitu o hasło, a następnie odblokowanie go. Dodatkowo, jeśli uruchomię „security lock-keychain”, to zrobić patrz blokadę natychmiast po uruchomieniu komendy. To sprawia, że myślę, że odblokowanie pęku kluczy tak naprawdę nie działa. Doświadczam tego samego zachowania na Lion (którego używamy dla niewolników kompilacji) i Mavericks (na którym rozwijam).
Następnie spróbowałem dodać -v do wszystkich poleceń bezpieczeństwa:
list-keychains "-d" "system" "-s" "/Users/tester/.secret/App.keychain"
Listing keychains to see if it was added: ((
"/Library/Keychains/System.keychain"
))
unlock-keychain "-p" "**PASSWORD**" "/Users/tester/.secret/App.keychain"
build/App.app: User interaction is not allowed.
Z tego wynika, że lista-pęków kluczy jest tym, co nie działa. Może nie działa. : /
Tutaj jest podobne pytanie . Rozwiązanie jest interesujące - ustaw „SessionCreate” na true w launchctl. Ale nie opieram się na master - mój proces kompilacji jest uruchamiany z SSH na maszynie do kompilacji slave. Może istnieje sposób z wiersza poleceń, aby zrobić to, co robi launchctl po uruchomieniu „SessionCreate”?