Just a reminder that this thread is to propose breaking changes that we cannot make in the 1.x release cycle. It is not a generic feature wishlist
This is a running list of changes I want to see in a Drone 2.0 release. These are breaking changes that we cannot otherwise include in 1.x releases. I want to be clear that there are no immediate plans for a 2.0 release and for the next year we plan to focus on 1.x only.
1. Environment Substitution
Emulating bash substitution for ${variable}
syntax and escaping variables with $${variable}
syntax is probably one of my biggest regrets. This behavior is non-obvious and causes a lot of confusion for newcomers.
In Drone 2.0 I would like to change the syntax to ignore ${variable}
and to only substitute variables with $${variable}
syntax. This means $$
syntax will cause substitution as opposed to prevent substitution.
We can probably make this a feature toggle so that existing installations can upgrade to 2.0 but revert back to 1.x behavior.
2. Strict Yaml Validation
Enable strict yaml parsing. This means parsing will fail when the yaml contains unknown keys or structures. This will make it easier for teams to catch errors.
This has breaking implications for teams declaring anchors, since these tend to be freeform fields and would fail validation. Atlassian solves this issue by requiring all anchors be defined under a definitions section of the yaml.
definitions:
steps:
- step: &build-test
name: Build and test
script:
- mvn package
artifacts:
- target/**
pipelines:
branches:
develop:
- step: *build-test
master:
- step: *build-test
We can probably make this a feature toggle so that existing installations can upgrade to 2.0 but revert back to 1.x behavior.