我正在管道的CI / CD中运行脚本。目标是获得一个字符串来使用。
当我得到该结果时,我将其保存到变量中并将结果保存在dockerfile的yaml文件中。
我想将该变量从CI环境传递到docker-compose容器中。所以,我试图将其导出为另一个导出的东西,但是它不起作用:
ci/pdf/jenkins-changes.sh
LOG="$(cat ".log")"
export LOG
我添加了一个如下所示的variables.env文件:
LOG=LOG
然后修改docker-compose.yaml以读取var:
pdf:
image: thisimage/this
build:
context: ../
dockerfile: ./docker/Dockerfile.name
args:
git_branch: ${GIT_BRANCH}
env_file:
- variables.env
environment:
- LOG=${LOG}
volumes:
- do-build:/src/do-build
在最终运行docker-container的脚本中,我也有 宣布它: 来自ubuntu:16.04 as pdf-builder
ARG log
ENV log=${log}
RUN LOG=${log}
RUN export $LOG
然后,我运行需要变量的script.sh,但是,它返回Unbound变量并中断。
LOG=${log}
echo ${LOG}
答案 0 :(得分:0)
这个问题的答案是:
ci/pdf/jenkins-changes.sh
LOG="$(cat ".log")"
export LOG
然后将其作为参数传递,而不是变量:
pdf:
image: thisimage/this
build:
context: ../
dockerfile: ./docker/Dockerfile.name
args:
git_branch: ${GIT_BRANCH}
env_file:
- variables.env
environment:
- LOG=${LOG}
volumes:
- do-build:/src/do-build
然后,在dockerfile中调用它并定义它。
ARG log
这应该让任何脚本都使用它是全局的。