drone / proposal

Drone Project Design Documents
13 stars 4 forks source link

Parallel by default #10

Closed stevenleeS0ht closed 3 years ago

stevenleeS0ht commented 3 years ago

Currently inside a pipeline, Drone execute sequentially by default. If add depend_on entry, it will be done in parallel.

If there is different pipeline in a .drone.yml, I don't if they are executed in parallel or sequential.

But why not make it be executed in parallel by default. if no special depend_on entry provided, it will execute all the task under a pipeline in parallel.

If user want it be sequential, simply add an entry for a pipeline parallel: false, or something else similar.

These also apply for drone-cli.

Concurrency is the heart of modern CI.

@bradrydzewski What is your opinion?

bradrydzewski commented 3 years ago

Thank you for taking the time to submit a proposal. We have strict promise toward backward compatibility and we want to avoid breaking existing pipelines as much as possible (see below statement from the readme). Setting aside the merits of the proposal (parallel vs sequential) I would recommend against this change due to the fact that it would have a significant, negative impact on our existing users and their existing pipelines.

Drone is a mature project with thousands of active installations, as such, significant or breaking yaml changes are unlikely to be accepted.

stevenleeS0ht commented 3 years ago

@bradrydzewski , Is there any way to explicitly enable the parallelism?

If in a pipeline, each step is relevant (same arch, same os) but not dependent to each other, how to make them run in parallel?

bradrydzewski commented 3 years ago

pipeline steps are sequential. pipeline stages are parallel by default

When you define multiple Pipeline objects in the same configuration file, pipelines are spread across runners and executed in parallel [1]

I am going to close and decline this proposal since it would require breaking changes. Please keep in mind Drone is a large project used by hundreds of thousands of repositories, and we cannot make changes that would break the pipelines for hundreds of thousands of repositories.

[1] https://docs.drone.io/pipeline/configuration/#multiple-pipelines