在Jenkins中将变量从shell传递到email-ext

时间:2013-03-15 16:01:36

标签: jenkins jenkins-plugins

我有Jenkins的作业,它有执行shell部分,我有一些变量 构建动态填充。

构建执行后,我想将此变量传递给email-ext插件默认内容,以便能够显示它的值。

我尝试了几种方法但没有成功:

  1. 无法识别在默认内容中传递此$ {BUILD}值(在此上下文中仅显示Jenkins环境变量)
  2. 定义了新的Jenkins全局环境变量并尝试在shell上下文中覆盖其初始值,这显然是不可能的
  3. 关于如何做到这一点的任何想法?

4 个答案:

答案 0 :(得分:3)

就我而言,我不是管理员,所以我无法安装插件。但是可以通过变通办法来完成。

Content Token Reference帮助中,您可以找到有用的工具。

${PROPFILE,file="FILENAME",property="PROPERTYNAME"}
  

扩展为属性文件中属性的值。文件名是   相对于构建工作区的根。

然后将值保存在Build > Execute Shell内的属性文件中:

rm -f ${WORKSPACE}/env.properties
touch ${WORKSPACE}/env.properties 
store="/opt/current/store"

echo "store.folder=${store}" >> ${WORKSPACE}/env.properties

echo "${store}"

并使用以下内容从Post-build Actions > Editable Email Notification中进行阅读:

${PROPFILE,file="env.properties",property="store.folder"}

答案 1 :(得分:2)

您可以使用以下命令将构建参数传递给电子邮件ext插件:

$ {ENV,VAR ="资本化:VAR_NAME"}

通过这种方式,我在收到的邮件中看到了变量值。

答案 2 :(得分:1)

在“shell部分”中写入该文件后,使用EnvInject Plugin从文件中读取变量。


通常,环境变量永远不会从子进程回到父进程,这是Windows和Unix操作系统系列的基本功能。子项总是获取父项环境的副本,如果它修改了它,它会修改它自己的副本(如果它启动任何子进程,则会复制到任何子进程等)。但是为了获得更改,必须使用其他一些方法,例如子项写入对文件的所需更改,然后由父级解析,然后父级可以根据它来编辑它自己的环境。

答案 3 :(得分:1)

简单易用:

在“执行外壳”中

echo "test log" > /some/file/path/logFile.txt

然后在“可编辑的电子邮件通知-默认内容”中

${FILE,path="/some/file/path/logFile.txt"}

构建,您将收到一封包含“测试日志”内容的电子邮件


要查看更多电子邮件令牌,请单击“可编辑电子邮件通知”部分中“内容令牌参考”旁边的问号。