我希望能够做到这样的事情:
AOEU=$(echo aoeu)
Run Code Online (Sandbox Code Playgroud)
詹金斯设定了AOEU=aoeu.
Jenkins中的Environment Variables部分没有这样做.相反,它设置AOEU='$(echo aoeu)'.
如何让Jenkins评估shell命令并将输出分配给环境变量?
最终,我希望能够将作业的执行程序分配给可以传递到其他脚本或由其他脚本使用的环境变量.
作为Jenkins构建过程的一部分,我们运行了几个Windows批处理脚本,并希望在最后由Jenkins发送的电子邮件中报告有关这些中间步骤的一些信息.
我认为一个简单的方法是在批处理步骤中设置Windows环境变量,我们设法使用PowerShell,如下所示:
powershell.exe -Command "& {[Environment]::SetEnvironmentVariable('ThisIsATest', 'TestValue', 'Machine')}"
Run Code Online (Sandbox Code Playgroud)
在"执行Windows批处理命令"构建步骤中执行时,这会正确地设置环境变量"最终".我的意思是,如果我远程进入构建服务器,我可以验证在每次构建期间按预期创建/修改了值.
但是,尝试通过添加"在"构建后操作"下的"可编辑电子邮件通知"步骤中使用该值
Our test value: ${ENV, var="ThisIsATest"}
Run Code Online (Sandbox Code Playgroud)
到"默认内容"部分没有给出正确的结果.运用
Print full environment: ${ENV}
Run Code Online (Sandbox Code Playgroud)
还表明该值还没有?已创建.
更奇怪的是,多次运行根本没有获取有问题的环境变量 - 即使我可以在远程会话中清楚地看到它(并跟踪它的变化等).
问题:
是否有其他方法可以实现我们的目标:
"在编译/单元测试确定/失败时报告一般成功/失败但报告电子邮件正文中间步骤的其他信息"?
或者也许解释一下奇怪的(至少对我来说)关于电子邮件插件没有获取人们期望的环境变量的行为?(或许可以提供一些关于在哪里寻找解决方法的新想法)
感谢您抽时间阅读.一如既往,任何建议表示赞赏.
-T