2016-04-19 50 views
3

我所以下設置:環境變量泊塢窗,內部組成詹金斯

詹金斯環境中運行的碼頭工人,撰寫,但我需要的環境變量傳遞給YML文件:

樣品泊塢窗 - 撰寫。陽明海運

version: '2' 

services: 
    logon_server: 
    build: . 
    image: my_server:0.0.1 
    ports: 
     - "9200:9200" 
    command: ${DOCKER_CMD_EXEC} 
    networks: 
     - my_ntwrk 

networks: 
    my_ntwrk: 

當我運行從我的Mac shell提示符下面的腳本,我可以通過不同的命令來執行,一切工作:

exec-tests.sh

#!/bin/bash 

chmod 755 docker/exec-*.sh 

# Setup env variables 
export DOCKER_CMD_EXEC=/ci_e2e.sh 

# Optional: record current versions 
docker -v && docker-compose -v 

echo `whoami` 

echo `sudo -E -u admin printenv` 

# Build, deploy and run E2E test cases 
sudo -E -u admin docker-compose up --no-color --abort-on-container-exit 

當我跑我的詹金斯的工作裏面的腳本,在「構建環境」 - >「執行shell」 - >「命令」,這裏是什麼我的圖像談到:

Example of shell command

我得到以下錯誤:

The DOCKER_CMD_EXEC variable is not set. Defaulting to a blank string 

我試圖運行此爲根,作爲默認用戶「管理員」這就是詹金斯運行的。我試圖讓環境變量是可以繼承的,試着打印env的,一切看起來都不錯。

我可以只是取消設置DOCKER_CMD_EXEC重新產生錯誤我的Mac上,但我不明白爲什麼這種情況發生在詹金斯!

任何幫助,將不勝感激!

謝謝。

Ĵ

回答

1

這裏是我的解決方案:

碼頭工人腳本:

#!/bin/bash 
export COMPOSE_HTTP_TIMEOUT=120 
export DOCKER_CMD_EXEC=/app/docker/ci_run.sh 
export DOCKER_LINKED_CMD=/app/docker/ci_run.sh 
export DOCKER_NODE_ENV=staging 
export DOCKER_IMAGE_TAG=${DOCKER_IMAGE_TAG:=staging} 
export DOCKER_RELOAD_DB=${PARAM_RELOAD_DB:=true} 
export DOCKER_HTTP_PROXY='' 

# Optional: record current versions 
docker -v && docker-compose -v 

# Startup container(s) 
cat compose.yml | envsubst | docker-compose -f - up 

compose.yml文件:

version: '2' 

services: 
    app: 
    build: . 
    image: ${DOCKER_IMAGE_TAG} 
    environment: 
     - MONGODB_HOST=mongodb 
     - NODE_ENV=${DOCKER_NODE_ENV} 
     - HTTP_PROXY=${DOCKER_HTTP_PROXY} 
    ports: 
     - "8000:8000" 
    command: ${DOCKER_CMD_EXEC} 
    volumes: 
     - /dev/shm:/dev/shm 
    networks: 
     - server-ntwk 

networks: 
    server-ntwk: 

的bash腳本和撰寫文件是在同一目錄:

./docker/exec-build.sh