jenkins/docker与环境variables
我试图在Jenkins中使用docker机器,并让该机器设置一个环境variables(FOO)。 我在jenkinsconfiguration中使用docker模板成功设置了一个图像。 意思是,这可能不是我的问题点。 问题是,我似乎无法让环境variables可用。 如果我创build一个试图做“echo $ FOO”的jenkins项目,我所得到的只是一个空行。
我的Dockerfile基于ubuntu-14.04,结束于: CMD ["/usr/sbin/sshd", "-D"]
我试过的东西:
-
在jenkinsconfiguration页面的“docker模板”部分,我在“环境”字段中添加了“FOO = 1”。 但是,当我点击“保存”,这个改变不会被保存。
-
添加到Dockerfile的各种方法来设置FOO:
-
RUN echo“export FOO = 1”>> / etc / profile
-
ENV FOO 1
-
RUN echo export FOO = 1 >>〜/ .bashrc
-
-
EnvInject插件 。 这是有效的,但是需要你检查每一个jenkins计划中的checkbox。 我希望有一个解决scheme,我只需要做一次。
参考文献:
-
jenkins的bug 。 您不能在Jenkins环境中设置FOO,并期望将其传递给Docker容器。
-
Docker的build议 。 本页build议(我认为)将envvariables添加到/ etc / profile。 正如我所说,这对我来说是失败的。
-
通过SSH传递env 。 这解释了如何修改一个ssh调用来传递envvariables,但是我不知道如何访问jenkins中的那部分命令。 (注意,在命令行中公开这个variables是很好的。)
-
SSH设置用户环境 。 这个答案似乎有点矫枉过正,我没有testing看它是否工作。 大概我会有Dockerfile添加.ssh /环境,我将不得不启用PermitUserEnvironment。
我有jenkins运行在docker集装箱,我用它来运行其他容器。 Jenkins通过ssh连接到容器来构buildAndroid应用程序,但环境variables总是被ssh清除。 我通过将环境variables写入/ etc / environment来解决问题,然后在login时自动加载它们。 这是我的dockerfile的最后一个步骤:
RUN env | grep _ >> /etc/environment EXPOSE 22 USER jenkins CMD ["/usr/sbin/sshd", "-D"]