【问题标题】:Use environment variables in blueocean without them commiting to git repo在 blueocean 中使用环境变量,而无需提交 git repo
【发布时间】:2019-08-26 17:44:50
【问题描述】:

当我使用 docker run 运行 docker 容器时

docker run -d --memory=100m --cpus=0.5 -e SECRENT_ENV=$SECRET_ENV -e name=name --network=nginx-proxy image-name

通过 jenkins 中的 blueocean 并在 blue ocean 中设置环境变量

SECRET_ENV=SECRET_DATA

环境变量以纯文本形式提交到 jenkinsfile 中的 repo。

如何将环境变量从我的主机(运行 jenkins)传递给 docker run 命令。

额外信息: - 在 centos 7 上运行
- 尝试运行 nodejs 应用程序
- Jenkins 本身在 docker 容器中运行
- 尝试通过 ./bashrc export SECRET_ENV=secret_data 在主机上设置环境变量

【问题讨论】:

    标签: docker jenkins continuous-integration continuous-deployment jenkins-blueocean


    【解决方案1】:

    首先,您可以通过 Docker 运行命令传递主机环境变量。

    export SECRENT_ENV=some-secret 在主机上导出 ENV,或者您可以从 ~/.bashrc 中使用,看起来不错。

    docker run --rm -it -e SECRENT_ENV=$SECRENT_ENV alpine ash -c "echo $SECRENT_ENV"
    

    这里的问题是您在 在 docker 内运行 Jenkins, 所以容器的其余部分将只能使用在 Jenkins 容器内定义的环境变量。要将所有环境变量设置为 Jenkins,您需要更新 Jenkins 运行命令。

    docker run --rm -it -v /home/centos/.bashrc:/root/.bashrc alpine ash -c "echo $USER"
    

    这将返回主机用户名centos,因此应该避免这种情况,因为 Jenkins 容器的所有环境变量都被主机 env 覆盖。

    因此,您只需将所需的 ENV 传递给 Jenkins,或者您可以使用 env file 给 Jenkins。

    docker run --name jenkins -e SECRENT_ENV=123 -e SECRENT_ENV2=1234 -dit jenkins/jenkins
    

    现在更新 Jenkins 文件中的 ENV。

    SECRET_ENV=${env.SECRET_ENV} 
    

    jenkins-pipeline-environment-variables

    【讨论】:

      【解决方案2】:

      您可以在 Jenkins 配置页面 (http://localhost:8080/jenkins/configure) 中创建环境变量,然后搜索环境变量。

      并添加所需的变量并在您的 Jenkins 管道中使用,请参见下文:-

      【讨论】:

        猜你喜欢
        • 2019-07-15
        • 2018-02-22
        • 1970-01-01
        • 1970-01-01
        • 2022-01-17
        • 2019-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多