6

Estoy usando Jenkins para hacer construcciones de integración continua. Tengo bastantes trabajos que tienen mucho del mismo código de configuración. Estoy en medio de sacar todo esto a un archivo de script común que me gustaría ejecutar antes y después de compilar.Establecer variables de entorno global dentro de la secuencia de compilación Xcode ejecutar secuencia de comandos

No he podido averiguar cómo configurar algunas variables de entorno dentro de esa secuencia de comandos, de modo que tanto el comando de compilación de Xcode como la compilación de Jenkins puedan verlas.

¿Alguien sabe si esto es posible?

+0

Quizás esta respuesta podría ser útil - http://stackoverflow.com/a/32743908/67824. No le permite definir variables de entorno globales, pero sí le permite cambiar las configuraciones de construcción de xcodeproj, que es presumiblemente para lo que quiere las variables de entorno (al menos ese es el caso para mí). –

Respuesta

5

No es posible hacer exactamente lo que pide. Un proceso no puede cambiar las variables de entorno de otro proceso. Los pasos de compilación pre, post y real se ejecutan en diferentes procesos.

Pero puede crear un script que establezca las variables de entorno comunes y comparta ese script entre todas sus construcciones.

The le llame primero a su shell para ejecutar los comandos en el guión y luego llamar xcodebuild:

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

El guión podría tener este aspecto:

export VARIABLE1=value1 
export VARIABLE2=value2 

Cómo exactamente a sus puestos de trabajo compartirán la script depende de su entorno y caso de uso. Puede

  • lugar el guión de algún lugar bien conocido en el host Jenkins o
  • lugar la secuencia de comandos en el árbol fuente controlada versión si todos los trabajos de compartir el mismo repositorio o
  • lugar el script en un repositorio propio y crea una compilación de Jenkins que archiva el guión como un artefacto de construcción. Todos los otros trabajos usarían el plugin Copy Artifact para obtener una copia del script de los artefactos del trabajo de script.
+0

No veo cómo esto ayuda. La razón por la que yo (y muchos otros) estamos investigando esto es que la capacidad de un paso de construcción afecte a los siguientes pasos de creación mediante la configuración de variables de entorno. En mi caso, incluso establecer una macro de procesador predefinida sería suficiente, pero tu respuesta tampoco. ¿O tal vez quiere decir que un cierto paso de compilación debería ESCRIBIR PARA DISCUTIR la secuencia de comandos que exporta variables, y que es ejecutada por todos los demás objetivos? –

0

De Apple's Technical Q&A QA1067 parece que si se crea el archivo /Users/YOU/.MacOSX/environment.plist y rellenarla con las variables de entorno deseados que todos los procesos (lanzado por el usuario con el archivo environment.plist en su directorio home) recogerá estas variables de entorno . Es posible que deba reiniciar su computadora (o simplemente cerrar la sesión y volver a iniciarla) antes de que un proceso recién lanzado recoja las variables.
This article también afirma que Xcode también pasará estas variables a un script de compilación de fase. Aún no lo he probado, pero la próxima vez que reinicie mi MacBook, le dejaré saber si funcionó.

De 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.

Hay un archivo de entorno especial que loginwindow búsquedas de cada vez que un usuario inicie sesión. El archivo de entorno es: ~/.MacOSX/environment.plist (tenga cuidado, distingue entre mayúsculas y minúsculas). Donde '~' es el directorio de inicio del usuario que nos interesa.Deberá crear el directorio .MacOSX usted mismo usando el terminal (por escribiendo mkdir .MacOSX) . También deberá crear el archivo de entorno usted mismo. El archivo de entorno está realmente en formato XML/plist (asegúrese de agregar la extensión .plist al final del nombre de archivo o esto no funcionará).

+0

¿Funcionó? No he podido obtener xcode para ver mis variables usando este método ... – brendanjerwin

+0

@brendan, no, tampoco funcionó para mí, desafortunadamente. – chown

Cuestiones relacionadas