Skip to content

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?

#53134 (closed)

Does this MR meet the acceptance criteria?

Closes #53134 (closed)

Merge request reports