11

我有执行 shell 部分的 Jenkins 作业,其中我有一些动态填充的变量 BUILD。

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

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

  1. 无法识别在默认内容中传递此 ${BUILD} 值(在此上下文中仅可见 Jenkins 环境变量)
  2. 定义了新的 Jenkins 全局环境变量并试图在 shell 上下文中覆盖它的初始值,这显然是不可能的

关于如何做到这一点的任何想法?

4

4 回答 4

6

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

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"}
于 2018-08-31T03:45:28.063 回答
3

简单易行:

在您的“执行外壳”中

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

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

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

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


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

于 2018-06-22T09:52:42.870 回答
1

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


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

于 2013-03-18T11:40:03.243 回答
1

您可以使用以下方法将构建参数传递给电子邮件分机插件:

${ENV,var="CAPITALIZED:VAR_NAME"}

这样,我在收到的邮件中看到了变量值。

于 2016-06-22T12:21:24.147 回答