Skip to content

Enhance allow_failure to capture failure reasons

Release notes

Allow_failure keyword will prevent a failed job to fail an entire pipeline, previously allow_failure accepts only binary value (true or false), in this release, we enhanced the allow_failure keyword to accept different exit code of a job, this will allow you to have better control on when to prevent the pipeline to fail base on the job exits codes.

Problem to solve

We've had an internal meeting about how to proceed on #16733 (closed) and we feel like the issue is too broad and both of the proposals mentioned in there are complex and will affect the simplicity/reliability of the whole system. We should keep how we mark a build as failed or successful as simple as possible and if we can make it even more simple and even more reliable. But we should not change it in a way that it makes it more brittle and error prone.

The overall conclusion was to start with something simple that augments allow_failure to accept a list of exit codes for which the job will be marked as passed with warnings. Extra functionality can be built on top of this, like updating retry to use those reasons for its when policy.

Recording: https://www.youtube.com/watch?v=DiicryT-W9M

Intended users

User experience goal

Proposal

Implement exit_codes: integer or array for allow_failure::

test_job:
  script:
    - execute_script_that_will_fail 
# if the script exit code is 137 or 255 the job will allow to be failed and the pipeline will continue to run
  allow_failure:
    exit_codes: # User defined exit code
      - 137
      - 255
test_job:
  script:
    - execute_script_that_will_fail
  allow_failure:
    exit_codes: 137
  • Change the API to accept the exit code from the Runner
  • Change the Runner to send the exit code back to Rails
  • Implement YAML syntax changes
  • Use the exit code to flag the job as allowed to fail.

Further details

Permissions and Security

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

This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.

Edited by 🤖 GitLab Bot 🤖