`default:` keyword for gitlab-ci.yml
Problem to Solve
Top level configuration is messy, with several keywords in place that serve as global defaults for jobs but as a new user of pipelines this isn't necessarily clear. Also, these settings are mixed in with other actual top-level context that serves different purposes (for example,
stages:) which makes things even less clear.
Move all existing top-level configuration options into
default: to clearly indicate their purpose, which
is to define default configuration options for all other jobs.
The configuration options to be moved:
stages/types to be part of top-level context.
This will be made fully backward compatible, including support jobs that can be named
default:, by checking for the existence of a
script: section. Configuration options defined out of the default context will still be honored.
- This allows to properly discover the:
# a default that is CI job default: script: My CI job
- And to discover the:
# a default configuration, as it is missing script: default: variables: KEY: VALUE1
- And to properly translate (for backward compatiblity):
variables: KEY: VALUE1
- And handle the case as such:
variables: KEY: VALUE1 default: variables: # This variables: take precedence, making the KEY2:VALUE2 the only value KEY2: VALUE2