IEC CI/CD
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".
Two servers have been set up for development in Enea Lab https://jenkins.akraino.org/computer/prd-ubuntu1604-dev-48c-256g-1/ and https://jenkins.akraino.org/computer/prd-ubuntu1604-dev-48c-256g-2/
The same servers are available in sandbox too: https://jenkins.akraino.org/sandbox/computer/snd-ubuntu1604-dev-48c-256g-1/ and https://jenkins.akraino.org/sandbox/computer/snd-ubuntu1604-dev-48c-256g-2/
Don't run any jobs in sandbox if there are CI jobs running on the slaves in the production environment, as the two jobs will interfere with each other!
Jenkins Jobs
Daily: https://jenkins.akraino.org/view/iec/job/iec-fuel-virtual-ubuntu1604-daily-master/
We're using Jenkins (the standard community version) 2.164.3 Long-Term Support (LTS) release.
Logs
From https://nexus.akraino.org/#view-repositories;public~browsestorage
You need to go to
Production -> vex-yul-akraino-jenkins-prod-1 -> iec-deploy-fuel-virtual-daily-master