gpt4 book ai didi

带有环境变量的 Jenkins /docker

转载 作者:行者123 更新时间:2023-12-01 04:57:04 26 4
gpt4 key购买 nike

我正在尝试在 Jenkins 中使用 docker 机器,并让该机器设置一个环境变量 (FOO)。我已经在我的 jenkins 配置中使用 docker 模板成功设置了一个图像。意思是,那可能不是我的问题点。问题是我似乎无法获得可用的环境变量。如果我创建一个 jenkins 项目只是尝试执行“echo $FOO”,那么我得到的只是一个空行。

我的 Dockerfile 基于 ubuntu-14.04,并以:CMD ["/usr/sbin/sshd", "-D"]
我尝试过的事情:

  • 在 jenkins 配置页面的“docker 模板”部分,我将“FOO=1”添加到“环境”字段中。但是,当我单击“保存”时,不会保存此更改。
  • 向 Dockerfile 添加各种设置 FOO 的方法:
  • 运行 echo "export FOO=1">>/etc/profile
  • ENV FOO 1
  • 运行 echo export FOO=1 >> ~/.bashrc
  • EnvInject Plugin .这有效,但需要您选中每个 jenkins 计划中的复选框。我希望有一个解决方案,我只需要做一次。

  • 引用:
  • Jenkins bug .你不能在 Jenkins 环境中设置 FOO 并期望它被传递到 docker 容器。
  • Docker's advice .此页面建议(我认为)将 env 变量添加到/etc/profile。正如我所提到的,这对我来说失败了。
  • Passing env through ssh .这解释了如何修改 ssh 调用以传递环境变量,但我不知道如何在 jenkins 中访问该部分命令。 (注意,可以在命令行上公开变量。)
  • ssh set user env .这个答案似乎有点矫枉过正,我没有测试它是否有效。大概我会让 Dockerfile 添加 .ssh/environment 并且我必须启用 PermitUserEnvironment。
  • 最佳答案

    我让 Jenkins 在 docker 容器中运行,我用它来运行其他容器。 Jenkins 通过 ssh 连接到容器以构建和 Android 应用程序,但环境变量总是被 ssh 清除。
    我通过将环境变量写入/etc/environment 解决了这个问题,然后它们会在登录时自动加载。
    这是我的 dockerfile 的最后一步:

    RUN env | grep _ >> /etc/environment

    EXPOSE 22

    USER jenkins

    CMD ["/usr/sbin/sshd", "-D"]

    关于带有环境变量的 Jenkins /docker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36367093/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com