【问题标题】:How to inject external environment variables to jenkins configuration and pipeline jobs?如何将外部环境变量注入到 jenkins 配置和管道作业中?
【发布时间】:2017-05-07 20:54:55
【问题描述】:

我们正在使用 docker-compose 在 docker 容器中运行 Jenkins。

我们的目标是能够运行可通过 docker-compose 命令提供的环境变量配置的生产和测试环境。

我们在docker-compose.yml文件中定义了几个环境变量,比如:

environment:
         - gitlabrepourl=http://url-of-our-git-repo/repo-name
         - hosturl=http://jenkins-host-url

环境变量在运行 bash shell 时存在于容器中,但我们在 Jenkins 配置和管道脚本中使用它们时遇到问题。

一些例子:

  • 在创建管道作业并选择“来自 SCM 的管道脚本”-> git -> 存储库 URL = ${gitlabrepourl} 时。管道作业能够克隆存储库以获取 Jenkinsfile,但是在运行“checkout scm”时它会失败,因为 ${gitlabrepourl} 未解析。 (可能是 Jenkins 错误??)
  • 尝试在 Jenkins 系统配置中使用环境变量时,它们并没有在所有地方都得到解决。例如当尝试使用 ${hosturl} 作为我们的“Jenkins URL”配置时,它没有得到解决。或者尝试在我们的“Gitlab 主机 URL”配置中使用 ${gitlabrepourl} 时,它没有通过连接测试。

总结:

  1. jenkins配置中如何使用环境变量,如何知道哪些字段支持使用环境变量?
  2. 如何将 docker 容器中存在的环境变量注入到管道脚本中?
  3. 我们将不胜感激任何可以帮助我们实现任何目标的方式。

谢谢。

【问题讨论】:

    标签: jenkins docker environment-variables docker-compose jenkins-pipeline


    【解决方案1】:

    可能有更好的方法,但这是我为 docker 做的:

    我创建了一个 .env 文件,其中包含以下内容:

    CONFLUENCE_VERSION=6.1.1
    MYSQL_CONNECTOR_VERSION=5.1.41
    

    Docker-compose 会自动将它们作为环境变量拉入。

    然后我将它们作为参数传递给docker-compose.yml 的构建部分:

    version: '2'
    services:
      app:
        build:
          context: .
          args:
          - CONFLUENCE_VERSION=${CONFLUENCE_VERSION}
          - MYSQL_CONNECTOR_VERSION=${MYSQL_CONNECTOR_VERSION}
    

    从 Jenkinsfile 中的 .env 读取 CONFLUENCE_VERSION:

    CONF_VER = sh(returnStdout: true, script: 'grep -e "CONFLUENCE_VERSION" .env | awk -F\'=\' \'{print $2}\'').trim()
    

    【讨论】:

    • 这也是我目前找到的唯一方法
    【解决方案2】:

    您可以从某个文件中注入变量,例如 .dockerproperties - 在您的 SCM 存储库中的文件 如果在这个文件中你有行 varName1=测试 您可以以 ${varName1} 格式使用它 另外,如果你想使用来自 git 的一些信息,比如标签或提交 id,你应该安装插件https://wiki.jenkins-ci.org/display/JENKINS/Git+Parameter+Plugin

    【讨论】:

    • Inject 环境变量由于某种原因对我不起作用。我在 Jenkinsfile 中的属性下定义了它。
    猜你喜欢
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    相关资源
    最近更新 更多