【问题标题】:How to get environment variable in Jenkins email notification?如何在 Jenkins 电子邮件通知中获取环境变量?
【发布时间】:2017-11-03 14:15:16
【问题描述】:

在 Jenkins 作业配置中,我在构建部分的命令窗口中编写了一个 bat 脚本。在其中一个脚本命令中,我将环境变量设置为服务器机器中的系统环境变量,如下所示:

setx Analysis_URL "http://analysis_url/analysis/%analysis_id%.html

我现在的任务是将此环境变量值返回给 Jenkins,并将其包含在我的构建后通知电子邮件内容中。有简单的方法吗?

在我的研究中,我遇到了 envInject 插件,但我认为它是用于设置环境变量的,对吗?

更新 1:

事实证明,该变量可以通过电子邮件内容中的简单 $Analysis_URL 访问,但是,这引发了另一个问题,因为我的环境变量在每次构建作业后都会更改其值,但因为 Jenkins 只获取系统的副本环境变量 在每次构建我的电子邮件内容后,我都会获得相同的变量值,它只会在重新启动 Jenkins 后发生变化。有没有办法让 Jenkins 更新系统环境变量?

更新 2:

EnvInject 插件完成了我想要的工作。这些是我执行的步骤:

  1. 构建步骤“批处理命令窗口”:添加命令:

echo ANALYSIS_URL=$ANALYSIS_URL > my.properties

  1. 构建步骤“注入环境变量”:在“属性文件路径”字段中

$WORKSPACE/my.properties

  1. 构建后操作:“可编辑的电子邮件通知”,字段“默认内容”:

当前分析网址:$ANALYSIS_URL

【问题讨论】:

  • 这个方法有效,有错别字,$WORDKSPACE/my.properties应该是$WORKSPACE/my.properties

标签: jenkins jenkins-plugins


【解决方案1】:

您是否尝试过env.Analysis_URL 来访问您的环境变量?

【讨论】:

  • 您能否详细说明您的答案,我是 Jenkins 的新手。谢谢。
  • 我什至不确定这是否有效,但例如,您可以使用 env.PATH 访问您的 PATH 变量。例如:env.PATH = "C:\\test" 和另一个命令 echo "${env.PATH}"。因此,如果可行,您可以在帖子部分使用:${env.Analysis_URL} (value of)。
  • 我已将您的建议标记为答案,因为它给了我一些解决问题的提示。
  • 您能否进一步澄清这个答案?或者@sadrab 你能解释一下你做了什么来解决这个问题吗?
【解决方案2】:

在构建后电子邮件中打印变量:

  1. 将此添加到构建:执行 shell 部分:
echo count=$count > count.txt
echo distinctcount=$distinctcount > distinctcount.txt

  1. 将此添加到“属性文件路径”下的注入环境变量部分:
${WORKSPACE}/count.txt

并对第二个文件 ${WORKSPACE}/distinctcount.txt 执行相同操作(因为我有两个变量)

注 1:${WORKSPACE} 是 jenkins 的密码并列出位置)

注意 2:您实际上可以使用 echo distinctcount=$distinctcount >> count.txt 将两个变量放在一个文件中

  1. 在“可编辑邮件通知”的“默认内容”部分调用变量:
Count total:$count Distinct Count: $distinctcount

注意 确保您在电子邮件设置底部的“高级设置”下将电子邮件设置为“始终”,否则它只会在首次成功或任何失败时发送电子邮件:

【讨论】:

    【解决方案3】:

    您可以使用:${yourDefinedVriableName}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 2018-09-27
      • 2018-01-27
      相关资源
      最近更新 更多