# Construction zone

## Intent
Determine how to split voltha-nightly-jobs.yaml into standalone yaml config
files so functionality can be placed in named directories and files.  Currently
a good deal of searching and effort are needed to trace job construction.

```
./jjb/voltha-test/voltha-nightly-jobs
├── master.yaml
├── playground.yaml
├── README.md
├── voltha-2.12.yaml
├── voltha-2.11.yaml
└── voltha-2.8.yaml

0 directories, 5 files
```

## TODO

- Yaml does not appear to natively support includes or nested yaml files.
- Templates also contain inlined definitions such as (voltha-pipe-job-boiler-plate).
- Definitions are included within job templates by macro expasion

  - <<: *voltha-pipe-job-boiler-plate

- Definitions will also need to be isolated to allow including within a job template.

## Structure

- To work around lack of include directives
- Coupled with a general inability to list a common pipeline name across distinct files.
- Single monolithic job configs are not going to scale well over time.
- Branch context can be introduced by naming conventions and subdirectories.
- A directory named for the pipeline-jobs.yaml file is created alongside the yaml.
- Create a yaml config within the subdir named for each release branch.
- A set of branch specific jobs accumulate in each of the release.yaml file.
- Only quark to all this is the job set must be unique across files (append release version).


## Nice to have

- A cleaner answer would be to create subdirectories named for distinct pipelines/jobs.
- Beneath the job subdir create individual release.yaml config files.
- voltha-nightly-jobs/voltha-2.12.yaml will eventually become monolithic as releases progress.
- Splitting configs based on job set would help reduce this config as well.
