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"]