我对Jenkins管道脚本有问题。类WorkFlowScript没有此类属性
当我创建新作业时,jenkins会将此作业的结果发送给所有团队的电子邮件,但当我们创建测试作业时(我们可以通过作业的名称来理解),我们应该只向作业的创建者发送电子邮件。 是这样的,它起作用了:我对Jenkins管道脚本有问题。类WorkFlowScript没有此类属性,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,当我创建新作业时,jenkins会将此作业的结果发送给所有团队的电子邮件,但当我们创建测试作业时(我们可以通过作业的名称来理解),我们应该只向作业的创建者发送电子邮件。 是这样的,它起作用了: pipe(..){ timeout(..){ BuildEmailExt email = new BuilEmailExt(this, Emails.allTeams()) someCode.. } } 然后,如果: pipe(..){ timeout(..){ if(en
pipe(..){
timeout(..){
BuildEmailExt email = new BuilEmailExt(this, Emails.allTeams())
someCode..
}
}
然后,如果:
pipe(..){
timeout(..){
if(env.JOB_NAME =~ /somePattern/){
BuildEmailExt email = new BuilEmailExt(this, SENDER)
}
else{
BuildEmailExt email = new BuilEmailExt(this, Emails.allTeams())
}
someCode..
}
}
我得到一个例外:类:WorkFlowScript没有这样的属性电子邮件
我做错了什么?通过在
if
和else
中定义变量,它不存在于该范围之外,因此无法在条件之外访问
可以将定义移到if之外,然后将其设置为:
pipe(..){
timeout(..){
BuildEmailExt email
if(env.JOB_NAME =~ /somePattern/){
email = new BuilEmailExt(this, SENDER)
}
else {
email = new BuilEmailExt(this, Emails.allTeams())
}
someCode..
}
}
您也可以这样做,这样看起来更干净(ymmv)
我们需要更多的上下文来回答这个问题,例如这是否是一个有效的构造函数,
email
对象以后可能会在哪里使用(如果是无效的代码),以及该代码被封装在哪里。@MattSchuchard email在我们添加一些关于作业的信息时在这个脚本中使用:email.addBodyBlock(someEntryMap)。最后我们会发送电子邮件
pipe(..){
timeout(..){
BuildEmailExt email = new BuilEmailExt(this, (env.JOB_NAME =~ /somePattern/) ? SENDER : Emails.allTeams())
someCode..
}
}