6

I am using declarative pipeline syntax. I want to re trigger my build for 3 times if it fails. I want to add this step in my pipeline may be in post step: Something like below:

post { 
    failure{ 
        retrigger //try for 3 times atleast
    }
} 
030
  • 13,383
  • 17
  • 76
  • 178
Ron Bob
  • 61
  • 1
  • 1
  • 2

3 Answers3

10

The other answer is incorrect. There is indeed a builtin to retry arbitrary sections of your job called retry.

If you want to retry the whole job three times, you can wrap your entire job in a retry block:

retry(count: 3) {
  // your job definition here
}

However, if it's safe to do so, I would recommend wrapping individual steps or stages instead:

stage('my first stage') {
  retry(count: 3) {
    sh('some-command')
    sh('some-other-command')
  }
}
jayhendren
  • 3,022
  • 8
  • 16
3

There is a retry parameter in the global options when using declarative pipeline :

pipeline {
    agent any
    options {
        retry(3)
    }
    stages {
        ...
    }
}
Wognin
  • 31
  • 1
-1

There doesn't seem to be a built in pipeline step to do this, and neither does there seem to be a existing plugin that works with pipelines. I'd recommend having a look at the stackoverflow answer: https://stackoverflow.com/a/46852240/1019835

You can implement that code as a shared library, which would allow you to share your solution between projects. Have a look at this tutorial to do that: https://jenkins.io/doc/book/pipeline/shared-libraries/

Anrich
  • 182
  • 1
  • 1
  • 6