Jenkins Information
ICN project leverages Akriano Jenkins to run CI jobs. But we run the CD jobs in our private Jenkins cluster. We have the following Jenkins slave nodes joined Akriano Jenkins. ICN CI jobs are supposed to be scheduled to our slave nodes by label icn-dev.
Slave Infomation | Server Infomation |
---|
Slave Name | Labels | Slave Root | Server Info |
prd-ubuntu-dev-44c-64g | icn-dev | /home/jenkins/akraino/slave_root | pod14-node1 |
To add more Jenkins slave nodes, please follow the akriano jenkins guide
To setup private jenkins, please refer to the README.md under icn/ci/
Test Architecture
We support 3 jobs: golang verify job, shell verify job and e2e test job.
golang verify job
- triggered by gerrit patch creation/update.
- Run a make command, which builds golang pkg
- Post +1/-1 for gerrit patch if the build succeeds/fails
shell verify job
- triggered by gerrit patch creation/update.
- Run a make command, which runs bashate to check shell scripts
- Post +1/-1 for gerrit patch if the check passes/fails
e2e test job
- triggered daily automatically
- Run a make command, which creates VM(s) and deploys ICN components on the VM(s)
- Send daily report to mailing list
E2E test job detail
We have the following steps for e2e test:
- On Jenkins slave node: git clone icn
- Provision VM(s) by vagrant. A Vagrantfile which defines the VMs properties is needed. We can define many VM properties in the Vagrantfile:
- VM network information: mac address, ip address for each nic
- VM hostname
- VM memory, cpu, disk
- Setup virtual IPMI for compute nodes VM-2..n by virtualBMC. VM-1 can send ipmi command via mnt_net to manage VM-2..n.
- Run ansbile playbook against VM-1. We use ansible playbook instead of shell script, because playbook is easier to read and maintain. The playbook calls scripts to setup local-controller services:
- script for k8s setup? (TODO)
- script for kud plugin? (TODO)
- script for metal3 installation? (TODO)
- script for compute nodes provision? (TODO)
Patches for Test
bashate verify job: