5

我想根据参数化作业的布尔参数值取消电子邮件发送。该参数名为“skip.email”。

我尝试编写具有以下内容的预发送脚本,但它不起作用:

def env = System.getenv()
logger.println("Should I skip email ? " + env['skip.email'])
cancel = env['skip.email']

这是我在日志中看到的:

Should I skip email ? null

我试图打印出所有环境变量,但我的参数化 Jenkins 作业的参数都没有在列表中。

请帮帮我,提前谢谢你!

4

4 回答 4

7

预发送脚本提供了一个名为“build”的变量,它是从AbstractBuild继承的类型。使用getBuildVariables方法检索包含参数化变量的 Map。

例子

我有一个名为“target”的参数化变量,它描述了一个部署环境。如果目标环境是 QA 的环境,我希望仅将电子邮件发送给 QA。

if (!build.getBuildVariables().get("target").equals("qa")) {   
  // cancel variable cancels the email send when set to true
  cancel = true
}
于 2015-07-22T13:13:34.950 回答
3

tday03 答案似乎正确,但对我不起作用,我正在使用Environment Injector Plugin注入变量,我不知道这是否是问题所在。无论如何,我最终得到了这个脚本:

def env = build.getEnvironment()
String official = env['OFFICIAL'];

if ((official != null) && official.equals("true")) {
  cancel = false;
} else {
  cancel = true;
}
于 2016-06-23T15:06:05.727 回答
0

build.getEnvironment(TaskListener.NULL)如果在前面的步骤中注入环境变量。如果只是为了获取构建参数,build.buildvariables应该可以正常工作。

于 2017-05-01T17:44:38.053 回答
0

参数化作业的参数不是环境变量!!不能以这种方式访问​​它们。如果要访问它们,请使用环境注入插件将它们作为构建步骤添加到环境中,然后按照以下步骤操作。它应该可以解决您的问题。

于 2015-07-08T14:24:26.673 回答