Add multiple extends support
What does this MR do?
Add support for multiple extends
targets in .gitlab-ci.yml
job definition.
Current extends
syntax
job:
extends: .base
becomes simplification of the new form (just like with the script
property)
job:
extends:
- .base
so the change is fully backward compatible.
Extending algorithm
Last extends
member always wins, so
.a:
script: a
.b:
script: b
.c:
extends: .a
d:
extends:
- .b
- .c
renders d
's script
value to a
. The alternative option is "closest scope wins". It's harder to implement and less intuitive (in my opinion).
TODO
-
documentation -
write tests -
maybe better error messages
What are the relevant issue numbers?
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
Documentation created/updated via this MR -
Documentation reviewed by technical writer or follow-up review issue created -
Tests added for this feature/bug -
Tested in all supported browsers -
Conforms to the code review guidelines -
Conforms to the merge request performance guidelines -
Conforms to the style guides -
Conforms to the database guides -
Link to e2e tests MR added if this MR has Requires e2e tests label. See the Test Planning Process. -
Security reports checked/validated by reviewer
Closes #53134 (closed)