我有几个Jenkins工作,我希望根据输入参数触发(或不触发)电子邮件。
用例是每个项目有一个部署作业,但该作业是针对每个环境进行参数化的。我们您运行的工作可以选择要部署到哪个环境(Dev1,Dev2,QA等)。理想情况下,当新的构建发送到QA时,我想发送通知电子邮件,但我不想在向Dev发送新构建时发送通知电子邮件,因为这种情况一直发生(每个开发人员提交)和会淹没电子邮箱。
我试过谷歌搜索但尚未找到解决方案。我目前正在使用email-ext插件。
谢谢。
在email-ext中,您可以添加“Script - Before Build”或“Script - After Build”触发器,该触发器将触发指定的groovy脚本是返回true还是false。该脚本的帮助如下:
使用此区域在groovy中实现您自己的触发器逻辑。最后一行将被评估为布尔值,以确定触发器是否应该导致发送电子邮件或现在。
他们没有提供脚本中可用内容的许多细节,但是从Github上的源代码来看,它看起来至少有“构建”和“项目”,并为您完成了一些常见的导入:
cc.addCompilationCustomizers(new ImportCustomizer().addStarImports(
"jenkins",
"jenkins.model",
"hudson",
"hudson.model"));
Binding binding = new Binding();
binding.setVariable("build", build);
binding.setVariable("project", build.getParent());
binding.setVariable("rooturl", JenkinsLocationConfiguration.get().getUrl());
binding.setVariable("out", listener.getLogger());
警告,我没试过这个,但这应该作为一个示例脚本:
build.buildVariables.get("MY_DEPLOYMENT_ENV") == "QA"
应该获取您创建的名为“MY_DEPLOYMENT_ENV”的String或Choice参数的值,并在当前值为“QA”时触发电子邮件
这是解决问题的一种非常讨厌的方法,但如果你不能通过任何其他手段来做到这一点......
根据参数的值创建一个主要存在于传递/失败的依赖作业,该参数将作为参数传递给作业。然后,您可以将作业的决定链接到电子邮件通知。
当然,如果您打算这样做,最好只使用javax.mail编写一个小的参数化电子邮件发件人,并让Jenkins通过“构建”实际调用“java”任务的ANT项目来运行它。然后你有自己的电子邮件发件人(完全控制),并可以使其成为其他任务的依赖工作。
我希望有人能以更简单的方式进入...