„Interakcja użytkownika nie jest dozwolona”, próbując podpisać aplikację OSX za pomocą codeign

Nasza zautomatyzowana kompilacja działa na Jenkins. Sama kompilacja działa na urządzeniach podrzędnych, a slave są wykonywane przez SSH.

Dostaję błąd:

00:03:25.113 [codesign-app] build/App.app: User interaction is not allowed.

Wypróbowałem wszystkie sugestie, które dotychczas widziałem w innych postach tutaj:

Używanie zabezpieczenia odblokowującego pęku kluczy bezpośrednio przed podpisaniem w celu odblokowania pęku kluczy.Przeniesienie klucza podpisywania do własnego pęku kluczy.Przeniesienie klucza podpisującego do pęku kluczy logowania.Przenoszenie klucza podpisu do pęku kluczy systemowych.Ręczne ustawianie list-keychains tylko na 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 faktycznie nie odblokowuje pęku kluczy - jeśli zajrzę do Dostępu do pęku kluczy, symbol blokady nadal istnieje. Jest tak w przypadku, gdy przekazuję hasło w wierszu poleceń lub jeśli pozwolę, by mnie o to poprosiło. Odblokowanie tego samego pęku kluczy za pomocą interfejsu GUI spowoduje wyświetlenie pytania o hasło, a następnie odblokowanie go. Dodatkowo, jeśli uruchomię „blokadę bezpieczeństwa - pęku kluczy”, jarobić zobacz blokadę klawiszy natychmiast po uruchomieniu polecenia. To sprawia, że ​​myślę, że odblokowanie pęku kluczy nie działa. Doświadczam tego samego zachowania w Lionie (którego używamy dla kompilacji niewolników) i Mavericks (które rozwijam).

Następnie pró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.

Wydaje się, że to nie działa. Może nie działa. : /

Tam jestpodobne pytanie tutaj. Rozwiązanie jest interesujące - ustaw „SessionCreate” na true w launchctl. Ale nie buduję na master - mój proces budowania jest uruchamiany z SSH na maszynie do tworzenia slave. Może istnieje sposób wiersza poleceń, aby zrobić to, co program uruchamiający uruchamia „SessionCreate”?

questionAnswers(15)

yourAnswerToTheQuestion