我对Jenkins Pipeline脚本有问题。类WorkFlowScript没有此类属性

时间:2019-07-01 12:51:12

标签: jenkins groovy jenkins-pipeline

当我创建新工作时,该工作的结果詹金斯会发送所有团队的电子邮件,但是当我们创建测试工作(我们可以通过工作名称理解它)时,我们应该仅向工作创建者发送电子邮件。 确实如此,并且有效:

  pipe(..){
   timeout(..){
   if(env.JOB_NAME =~ /somePattern/){
    BuildEmailExt email = new BuilEmailExt(this, SENDER)
   }
   else{
    BuildEmailExt email = new BuilEmailExt(this, Emails.allTeams())
   }
   someCode..
  }
}

然后我添加:

{{1}}

我得到异常:类:WorkFlowScript没有此类属性电子邮件 我在做什么错了?

1 个答案:

答案 0 :(得分:1)

通过在ifelse内定义变量,该变量在该范围之外不存在,因此在条件之外无法访问。

您可以将定义移至if之外,然后按如下所示进行设置:

pipe(..){
    timeout(..){
        BuildEmailExt email
        if(env.JOB_NAME =~ /somePattern/){
            email = new BuilEmailExt(this, SENDER)
        }
        else {
            email = new BuilEmailExt(this, Emails.allTeams())
        }
        someCode..
    }
}

您也可以这样做,看起来更简洁(ymmv)

pipe(..){
    timeout(..){
        BuildEmailExt email = new BuilEmailExt(this, (env.JOB_NAME =~ /somePattern/) ? SENDER : Emails.allTeams())
        someCode..
    }
}