我有执行 shell 部分的 Jenkins 作业,其中我有一些动态填充的变量 BUILD。
构建执行后,我想将此变量传递给 email-ext 插件默认内容以显示它的值。
我尝试了几种方法都没有成功:
- 无法识别在默认内容中传递此 ${BUILD} 值(在此上下文中仅可见 Jenkins 环境变量)
- 定义了新的 Jenkins 全局环境变量并试图在 shell 上下文中覆盖它的初始值,这显然是不可能的
关于如何做到这一点的任何想法?
我有执行 shell 部分的 Jenkins 作业,其中我有一些动态填充的变量 BUILD。
构建执行后,我想将此变量传递给 email-ext 插件默认内容以显示它的值。
我尝试了几种方法都没有成功:
关于如何做到这一点的任何想法?
就我而言,我不是管理员,所以我无法安装插件。但是可以通过解决方法来完成。
在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"}
简单易行:
在您的“执行外壳”中
echo "test log" > /some/file/path/logFile.txt
然后在您的“可编辑电子邮件通知-默认内容”中
${FILE,path="/some/file/path/logFile.txt"}
构建,您将收到一封内容为“测试日志”的电子邮件
要查看更多电子邮件令牌,您可以单击“可编辑电子邮件通知”部分中“内容令牌参考”旁边的问号。
在“shell 部分”中写入该文件后,使用EnvInject 插件从文件中读取变量。
一般来说,环境变量永远不会从子进程返回到父进程,这是 Windows 和 Unix 操作系统家族的基本特征。子进程总是获得父环境的副本,如果它修改它,它会修改它自己的副本(然后如果它启动任何子进程,则会将其复制到任何子进程等)。但是要取回更改,必须使用其他方法,例如子将所需的更改写入文件,然后由父解析,然后父可以根据它编辑自己的环境。
您可以使用以下方法将构建参数传递给电子邮件分机插件:
${ENV,var="CAPITALIZED:VAR_NAME"}
这样,我在收到的邮件中看到了变量值。