Refactor `GitlabCiYamlProcessor`
Currently GitlabCiYamlProcessor have much more than a single responsibility. It:
- validates entire
.gitlab-ci.yml - validates jobs
- validates stages
- provides some default values
- does initial parsing
- builds jobs from configuration
- selects jobs for stage and ref
- normalizes script
I think it may be a good idea to extract some classes.
We can create classes like Ci::Config, Ci::Config::Validator(::Job, ::Global, ::Stage), Ci::Config::Builder, Ci::Config::Parser(::Yaml) etc. With this approach it will be a lot easier to extend it, refactor, provide additional configuration formats, and so on.
What do you think @ayufan?