Tengo una canalización de compilación que ejecuta una imagen acoplable con algún programa java que se ejecuta con maven.
El paso de canalización seleccionado Ejecutar pruebas de automatización está iniciando docker-compose que inicia mi programa java dentro de docker, como puede ver, también establecí el valor del entorno del sistema FEATURES_LIST con algún valor de prueba, ahora dentro de mi programa java, traté de devolver el valor como lo hago normalmente hacer para las variables de entorno:
System.getenv("FEATURES_LIST");Pero nunca lo encuentra. Si, por otro lado, especifico la variable de entorno, dentro de mi archivo de composición de ventana acoplable, la encuentra (alguna variable de entorno diferente establecida en la parte inferior del archivo de composición de ventana acoplable, ver más abajo)
version: '3.4' services: # SELENIUM GRID selenium-hub: image: selenium/hub ports: - 4444:4444 chrome: image: selenium/node-chrome-debug ports: - 5900:5900 environment: - HUB_PORT_4444_TCP_ADDR=selenium-hub - HUB_PORT_4444_TCP_PORT=4444 depends_on: - selenium-hub # AUTOMATION PROJECT image_name: image: imagepathhere:latest volumes: - ./:/usr/src/app/ network_mode: "host" depends_on: - chrome environment: - TARGET_TEST_ENV=uatEl problema es que realmente me facilitaría la vida, si pudiera especificar una variable de entorno dentro de la canalización de compilación de Azure, ¿hay algo que esté haciendo mal?
Las "Variables de entorno" en la tarea Docker Compose no inyectan las variables en los contenedores, por lo que la aplicación Java no puede leerlas, pero estarán disponibles en el agente durante el proceso.
Las variables se usan en docker-compose.yml de esta manera: ${variableName} .
Entonces puede definir en la variable de tarea Docker Compose: FEATURE_LIST=blabla y en docker-compose.yml inyectar la variable en el contenedor:
image:ubuntu:latest environment: - FEATURE_LIST=${FEATURE_LIST} De esta forma, puede especificar variables de entorno dentro de Azure Build Pipeline (pero también debe definirlas en docker-compose.yml ).