本文介紹了Azure構建管道,塢站組成-設置環境變量的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個構建管道,它運行帶有某個使用Maven運行的Java程序的docker映像。
選定的管道步驟運行自動化測試正在啟動docker-compose,它在docker內部啟動我的java程序,正如您可以看到的那樣,我還使用一些測試值設置了系統環境值FEATURES_LIST
,現在在我的java程序中,我嘗試像通常對環境變量所做的那樣返回值:
System.getenv("FEATURES_LIST");
但是它永遠找不到它,如果另一方面,我在我的docker合成文件中指定環境變量,它會找到它(在docker合成文件底部設置了一些不同的環境變量,見下文)
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=uat
問題是,如果我可以在Azure Build管道中指定環境變量,這真的會讓我的生活變得更輕松,我是不是做錯了什么?
推薦答案
docker編寫任務中的”環境變量”不會將變量注入到容器中,因此JAVA應用程序無法讀取它們,但它們將在該過程中在代理中可用。
變量在docker-compose.yml
中的使用方式如下:${variableName}
。
您可以在Docker Compose任務變量中定義:FEATURE_LIST=blabla
,在docker-compose.yml
中將變量注入容器:
image:ubuntu:latest
environment:
- FEATURE_LIST=${FEATURE_LIST}
通過這種方式,您可以在Azure生成管道中指定環境變量(但您還必須在docker-compose.yml
中定義它們)。
這篇關于Azure構建管道,塢站組成-設置環境變量的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,