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.
Deploy Jenkins Service for ICN
We setup Jenkins by a script which leverages ansible jenkins playbook.
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 image.