簡體   English   中英

jenkins / docker與環境變量

[英]jenkins/docker with environment variables

我正在嘗試在Jenkins中使用docker機器,並讓該機器具有環境變量(FOO)集。 我在jenkins配置中使用docker模板成功設置了一個圖像。 意思是,這可能不是我的問題點。 問題是我似乎無法使環境變量可用。 如果我創建一個jenkins項目,只是嘗試做“echo $ FOO”,我得到的只是一個空白行。

我的Dockerfile基於ubuntu-14.04,以: CMD ["/usr/sbin/sshd", "-D"]

我試過的事情:

  • 在jenkins配置頁面的“docker template”部分中,我在“environment”字段中添加了“FOO = 1”。 但是,當我單擊“保存”時,不會保存此更改。

  • 添加到Dockerfile的各種方法來設置FOO:

    • RUN echo“export FOO = 1”>> / etc / profile

    • ENV FOO 1

    • RUN echo輸出FOO = 1 >>〜/ .bashrc

  • EnvInject插件 這有效,但需要您檢查每個jenkins計划中的復選框。 我希望有一個解決方案,我只需要做一次。

參考文獻:

  • 詹金斯蟲 您無法在Jenkins環境中設置FOO並期望將其傳遞到docker容器。

  • Docker的建議 此頁面建議(我認為)將env變量添加到/ etc / profile。 正如我所提到的,這對我來說失敗了。

  • 通過ssh傳遞env 這解釋了如何修改ssh調用以傳遞env變量,但我不知道如何在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"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM