Architecture
Similar to OPNFV (and old Openstack before the transition to Zuul), Jenkins (and probably JJB) will be used for all CI/CD purposes.
Each POD will be connected as a Jenkins slave node to one public Jenkins master node or to a local Jenkins master node in the current lab (TBD).
Pipelines
- IEC Documentation building (on documentation patch submission for peer review) and publishing (on documentation patch merge);
A common approach in opensource projects is to rely on RTD for automating this, but we still need to implement the jobs triggering the builds on our end. - IEC Verify jobs (on patch submission affecting the code in IEC repo) - i.e. linting input YAML/bash/python on patch submission, as well as deployment testing;
- IEC Daily jobs (scheduled to run recurrently)
- Deploy IEC using one of the agreed installers (see below);
- Run testing suites;
- Collect logs and publish them (e.g. on Google storage);
For example, one of the installers might not be supported on a certain POD (due to missing configuration data or incompatible hardware), in which case that installer/POD combination should be blacklisted.
Artifacts
- Documentation
- Installation scripts (the main IEC repository)
- Test logs and results
Setting up a static Jenkins Slave
To setup a static Jenkins Slave for CI, follow the instructions here but make sure you replace all instances of "opnfv" with "akraino", and in step 5, replace "git clone https://gerrit.opnfv.org/gerrit/p/releng.git" with "git clone https://gerrit.akraino.org/r/ci-management".