Versions Compared

Key

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

We use Jenkins for ICN CI/CD. At the first phase, we support only one node Jenkins instead of Jenkins cluster. As we don't support that downloading packages in sandbox for now,
it means that the packages are all downloaded directely from the jenkins server. So that the jenkins server must have the same OS version with ICN nodes. Currently, it's ubuntu 18.04 with kernel version 4.15.0-45-generic.

Jenkins plugins: Gerrit-Trigger, Pipeline, Git

The Gerrit-Trigger plugin watches the ICN project on Gerrit. If a patch is created/updated, Gerrit-Trigger triggers the Jenkins job to run CI test. The Jenkins job is a Pipeline job which pulls Jenkinsfile from ICN project root directory. Gerrit-Trigger votes for the patch based on the result of the test.

Image Removed

Deploy Jenkins Service for ICN

We setup Jenkins by a script which leverages ansible jenkins playbook. After running the ansible playbook, the Jenkins should be running. We can login with user name and password, the default is admin/admin.

The playbook does the following things:

1. Setup jenkins server by leverage jenkins role from galaxy
2. Add akraino gerrit server to gerrit list
3. Add pipeline job for ICN CI check

Jenkins Job

The Jenkins job is a pipeline job and the Jenkinsfile is located in ICN project. For the first phase, what the job does is to build the ISO imageAkraino community has a publich jenkins cluster, we run CI jobs there. But the CD jobs, we need to run them in our private Jenkins cluster. For now, we support only one node private jenkins deployment. The only supported OS is ubuntu 18.04

Akraino community Jenkins

The akraino community jenkins is at https://jenkins.akraino.org/view/icn/ , it runs CI jobs which triggered by gerrit patch. In return, jenkins pushes the CI check result back to gerrit.

We have added icn-master-verify job for icn project. Also we have added a slave node on which we run our icn CI job. To add more slave nodes, see the akraino jenkins guide Jenkins Peering Guide

Akraino private Jenkins

For the CD jobs, we run them in our private jenkins cluster. We have several one-node private jenkins clusters. Each one is for an use case.

To setup a private Jenkins, we can refer to the readme.md https://gerrit.akraino.org/r/gitweb?p=icn.git;a=blob;f=ci/README.md;h=3536070480950b75922f0713ce5d6e2d29b2c24b;hb=refs/heads/master . The steps are well documented there.