Декларативный конвейер - PullRequest
0 голосов
/ 06 января 2019

Мне нужно выполнить различные типы поведения jenkinsfile, например, предположим:

  • если сборка будет запускаться вручную, jenkinsfile выполняется до сборки сцена и
  • если триггер сборки при изменении scm / timer, то нужно выполнить все этапы.

Я новичок в файле Jenkins (groovy script), поэтому кто-нибудь может мне помочь, где и как я могу применить условие в файле Jenkins. приведи пример того же с условием

Jenkinsfile

pipeline{
agent any

stage('Checkout'){

     checkout(scm)
 }
 stage('build'){
 echo "build is success"
 }
 stage('deploy'){
 echo " deployment successfully completed "
}
stage('email notify'){
emailext attachLog: true, body: 'job $job has been triggered', compressLog: true, subject: 'Email notification', to: 'mail id'
}
}

1 Ответ

0 голосов
/ 06 января 2019

Вы можете использовать директиву when: https://jenkins.io/doc/book/pipeline/syntax/#when.

В паре с чем-то вроде этого: currentBuild.rawBuild.getCauses()[0].toString().contains('UserIdCause'), этап будет выполняться независимо от того, решите ли вы (true) или нет (1007)

Это должно работать:

 when {
            expression { return currentBuild.rawBuild.getCauses()[0].toString().contains('UserIdCause') }
}

В документации по синтаксису также имеется следующее:

when {
            triggeredBy "TimerTrigger"
        }
...