[gitlab-ci] new "when" values for "retry" attribute acting on job's script output log with regex and/or exit code
Problem to solve
As a dev/devops, I want my pipeline jobs to retry automatically on functional/technical script errors, so that I don't have to do it myself :)
Intended users
- devops
- dev
User experience goal
We use acceptance tools to guarantee the quality of our code, e.g. we use sonarQube, Fortify etc ... The problem is that sometimes the api called by the scripts of our jobs do not respond and we get timeouts on our scripts that we log functionally or for which we have a specific exit code.
Proposal
currently the "retry" attribute in the gitlab ci allows us to use several "when" corresponding to gitlab or gitlab-runner errors, we would also like to be able to decide on a retry based on the exit code of our script or on a regex search of the job output log.
Further details
test:
script: rspec
retry:
max: 2
when: job_exit_code_equals
exit_code: 3
test:
script: rspec
retry:
max: 2
when: job_exit_code_less_than
exit_code: 3
test:
script: rspec
retry:
max: 2
when: job_exit_code_greater_than
exit_code: 3
test:
script: rspec
retry:
max: 2
when: job_output_log_contains
regex: /.*reset by peer.*/
Permissions and Security
Anyone with gitlab-ci.yml write rights :)
Documentation
Availability & Testing
What does success look like, and how can we measure that?
What is the type of buyer?
Is this a cross-stage feature?
Links / references
Edited by Filipe Pinto