As requested in GitHub, I’m raising this here first
There’s a particular use case that we have where we’re running a long pipeline with many tests, but for some reason (maybe a connection timeout or a resource is broken) we want to restart a build/test from the step that it failed, rather than going back to the start of the pipeline and executing everything again.
GitLab CI does this well, in this case allowing us to re-run our pipeline from the end-to-end test that failed when the connection to the third-party browser test company failed.
In Drone, it’d be great if we could do the same. For example, we could restart this build from the third step rather than having to start from the first one (it’s just an example - we’ve got much more complex pipelines than this)
There are some issues / discussions that have taken place that touch on this capability. For example the ability to execute specific steps in the CLI https://github.com/drone/drone-cli/issues/38
I think implementing something in the CLI is a great first step to get the building blocks in place, at which point it should be pretty trivial to add to the user interface.
This feature would be great, we have a similar use case, a build with 4 long running pipelines that consume runners in a third party service. Being able to restart at the failed step would be great, it’d even be an improvement if we can trigger one of the 4 pipelines just so we don’t tie up the runners and drone agents.
@bradrydzewski Do you see this as something that is achievable in the near future?
Being able to restart at the failed step would be great
A key difference between GitLab and Drone is the concept of the workspace. The workspace is a shared volume available to all pipeline steps. The workspace is used to share files and artifacts among pipeline steps.
Gitlab, on the other hand, does not have this concept and requires caching and restoring artifacts to share files and folders with other pipeline steps.
There are pros and cons to each approach. The workspace simplifies your pipeline by removing the need to remotely cache files. It also improves performance since you do not need to constantly download and restore files. The con is that, without a cached state, you cannot easily restore the pipeline at a specific step.
Because Drone cannot easily restore the pipeline state for a particular step, I do not see any way we could implement this feature.
it’d even be an improvement if we can trigger one of the 4 pipelines just so we don’t tie up the runners and drone agents.
This is something we definitely plan to implement, however, it is not on our immediate roadmap so I cannot provide a timeline.