Il nostro server di build CI Jenkins è configurato su un Mac Mini con OSX Lion (10.7.3) e ho difficoltà a farlo firmare i build iOS in modo che possano essere caricati su a TestFlight.Impossibile firmare build iOS con Jenkins
Il processo è in esecuzione come utente normale denominato jenkins ed è avviato all'avvio utilizzando launchd. (La macchina non è accessibile al mondo esterno, quindi non ci dovrebbero essere problemi di sicurezza con l'esecuzione di questo con un account utente normale.)
Ecco l'errore nell'output console da Jenkins:
[workspace] $ /usr/bin/xcodebuild -target iMobileStCloud -configuration Release clean build
=== CLEAN NATIVE TARGET MyApp OF PROJECT MyProject WITH CONFIGURATION Release ===
Check dependencies
[BEROR]Code Sign error: The identity 'iPhone Distribution' doesn't match any valid certificate/private key pair in the default keychain
Parte del problema sembra essere che solo il portachiavi di sistema è disponibile quando il processo viene avviato da launchd in fase di boot. Ho aggiunto uno script per il processo di generazione di elencare i portachiavi:
[workspace] $ /bin/sh -xe /var/folders/1y/1q3st_ss58z9ffj4dwbkdw8r0000gt/T/hudson8514187812830984272.sh
+ /usr/bin/security list-keychains
"/Library/Keychains/System.keychain"
"/Library/Keychains/applepushserviced.keychain"
"/Library/Keychains/System.keychain"
+ /usr/bin/security find-identity
sono stato in grado di trovare due soluzioni, ma nessuno dei due è davvero fattibile:
Se abbiamo accesso al server e riavviare il processo launchd ogni volta che la macchina viene riavviata jenkins quindi è in grado di caricare il portachiavi di login ed accedere ai certificati per la firma:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
Possiamo aggiungere i certificati al portachiavi di sistema, ma questo significa che non possiamo usare questa macchina per fare i build della distribuzione dell'app store. (Xcode non ama il portachiavi del sistema).
Qualcun altro ha trovato altri soluzioni alternative? C'è qualcos'altro oltre a launchd che posso usare per eseguire i processi all'avvio su OSX?
Will Xcode hanno ancora problemi se gli stessi tasti sono _both_ nel login- e il portachiavi di sistema? –
L'inserimento delle chiavi in entrambe le posizioni è un'altra soluzione, suppongo, ma dalle esperienze passate so che può davvero causare problemi con il programma Accesso Portachiavi. Sembra confondersi e non cancella le chiavi che esistono in due portachiavi. –
Vedi questa domanda di scambio dello stack per una soluzione possibile: http://stackoverflow.com/questions/6827874/missing-certificates-and-keys-in-thekeykeyin-while-using-jenkins-hudson-as-cont –