Improve retry functionality

Currently our retry operation is very simple: we retry only single build and trigger processing of all future builds.

However, retry operation is more complicated, because:

  • builds can have dependencies,
  • dependencies can have artifacts which can expire and be erased,
  • builds can trigger future stages of pipeline, for example on failure,

We currently only support a subset of options, enqueuing future builds that were not yet executed (were marked as skipped). This is limiting and can lead to edge cases when pipeline did fail and only a part of pipeline go triggered.

This leads me to conclusion that we should probably move retry out of Ci::Build to separate service to make it easier to handle processing of such operation.

Assignee Loading
Time tracking Loading