6

Sto utilizzando Jenkins per creare build di integrazione continua. Ho parecchi lavori che hanno molto dello stesso codice di configurazione. Sono nel bel mezzo di estrapolare tutto questo in un file di script comune che mi piacerebbe eseguire pre e post build.Imposta le variabili di ambiente globali all'interno dello script di esecuzione della fase di build Xcode

Sono stato in grado di capire come impostare alcune variabili d'ambiente all'interno di quello script, in modo che sia il comando Xcode costruzione, e la build Jenkins possono vederli.

Qualcuno sa se questo è possibile?

+0

Forse questa risposta potrebbe aiutare - http://stackoverflow.com/a/32743908/67824. Non ti permette di definire variabili d'ambiente globali, ma ti permette di cambiare le impostazioni di configurazione di xcodeproj che è presumibilmente ciò che vuoi per le variabili d'ambiente (almeno questo è il mio caso). –

risposta

5

Non è possibile fare esattamente quello che chiedi. Un processo non può modificare le variabili di ambiente di un altro processo. I passaggi di pre e post e di costruzione effettivi vengono eseguiti in diversi processi.

Ma è possibile creare uno script che imposta le variabili di ambiente comuni e condividere lo script tra tutta la vostra build.

L'avrebbe prima chiamare la shell per eseguire i comandi nello script e quindi chiamare xcodebuild:

# Note the dot in the beginning of the next line. It is not a typo. 
. set_environment.sh 
xcodebuild myawesomeapp.xcodeproj 

Lo script potrebbe essere la seguente:

export VARIABLE1=value1 
export VARIABLE2=value2 

Esattamente come i lavori si divideranno il lo script dipende dal tuo ambiente e dal caso d'uso. È possibile

  • posto lo script in qualche luogo ben noto sull'host Jenkins o
  • posto lo script nell'albero dei sorgenti versione controllato se tutti i vostri lavori condividere lo stesso repository o
  • posto lo script in un repository a sé stante e crea una build Jenkins che archivia lo script come artefatto di costruzione. Tutti gli altri lavori utilizzeranno quindi il plug-in Copy Artifact per ottenere una copia dello script dalle risorse del lavoro di script.
+0

Non vedo come questo aiuti. Il motivo per cui io (e molti altri) ci stiamo occupando di questo, è che l'abilità di un passo di costruzione influisce sui prossimi passi di costruzione impostando le variabili di ambiente. Nel mio caso, anche l'impostazione di una macro di processore predefinita sarebbe sufficiente, ma la tua risposta non lo fa. O forse vuoi dire che un certo passo di costruzione dovrebbe SCRIVERE PER DISCARE lo script che esporta le variabili e che viene eseguito da tutti gli altri target? –

0

Da Apple's Technical Q&A QA1067 sembra che se si crea il file /Users/YOU/.MacOSX/environment.plist e popolarlo con le variabili d'ambiente desiderate che tutti i processi (lanciato dall'utente con il file environment.plist nella loro directory home) prenderà queste variabili d'ambiente . Potrebbe essere necessario riavviare il computer (o semplicemente uscire e rientrare) prima che un processo appena avviato rilevi le variabili.
This article afferma inoltre che Xcode passerà anche queste variabili a uno script di fase di costruzione. Non l'ho ancora provato ma la prossima volta che riavvio il mio MacBook ti farò sapere se ha funzionato.

Da http://developer.apple.com/library/mac/#/legacy/mac/library/qa/qa1067/_index.html

Q: How do I set environment for all processes launched by a specific user?


A: It is actually a fairly simple process to set environment variables for processes launched by a specific user.

C'è un file ambiente speciale che loginwindow ricerche per ogni volta che un utente accede a. Il file ambiente è: ~/.MacOSX/environment.plist (fare attenzione alla distinzione tra maiuscole e minuscole). Dove '~' è la directory home dell'utente a cui siamo interessati.Sarà necessario creare la directory .MacOSX utilizzando il terminale (per digitando mkdir .MacOSX). Dovrai anche creare il file ambiente tu stesso. Il file di ambiente è in realtà in formato XML/plist (assicurati di aggiungere l'estensione .plist alla fine del nome file o non funzionerà).

+0

Ha funzionato? Non sono stato in grado di ottenere xcode per vedere le mie variabili usando questo metodo ... – brendanjerwin

+0

@brendan nope, purtroppo non ha funzionato neanche per me. – chown

Problemi correlati