У меня проблема со сценарием Jenkins Pipeline.Нет такого свойства для класса WorkFlowScript - PullRequest
1 голос
/ 01 июля 2019

Когда я создаю новую работу, результаты этой работы Дженкинс отправляет на электронные письма всех команд, но когда мы создаем тестовую работу (мы можем понять это по названию работы), мы должны отправлять электронную почту только создателю работы. Так было и работает:

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 Что я делаю не так?

1 Ответ

1 голос
/ 01 июля 2019

Определяя переменную внутри if и else, она не существует вне этой области, поэтому не доступна вне условной.

Вы можете переместить определение за пределыесли, а затем установите его так:

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

Вы также можете сделать это, что может выглядеть чище (мммм)

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