lib/gitlab/config/README.md
::Gitlab::Config module overview::Gitlab::Config is an abstract module used to build, traverse and translate
any kind of hierarchical, user-provided configuration.
The most complex and widely used implementation is ::Gitlab::Ci::Config
facade class. Please see lib/gitlab/ci/config/README.md for more information
around how it works.
The main motivation behind how ::Gitlab::Config and ::Gitlab::Ci::Config
work is to build an indirection layer between complex user-provided
configuration and GitLab itself. This helps us to extend configuration keywords
in a backwards-compatible way, and make sure that validation and transformation
rules are encapsulated within domain classes, what significantly helps to
reduce cognitive load on Engineers working on that part of the codebase.
Gitlab::Config is a tool to work with hierarchical configuration:
Psych.Gitlab::Config.::Gitlab::Ci::Config abstract classes from ::Gitlab::Config have their implementations.job:artifacts.