Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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)
    1. Deploy IEC using one of the agreed installers (see below);
    2. Run testing suites;
    3. Collect logs and publish them (e.g. on Google storage);
    Depending on the number of supported installers (e.g. Compass4NFV@OPNFV, Fuel@OPNFV, bash, heat templates, airship-in-a-bottle), we might create a matrix of scenario jobs that validate all or just some combinations of installer/PODs.
    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.

...

  • 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/

Warning

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