X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=ci%2FREADME.md;h=3536070480950b75922f0713ce5d6e2d29b2c24b;hb=ef266aeec728c2dc3830f5eac3f3172dd27c38eb;hp=c368dc3533cc67dc9a7da57fae6c9bce5b506477;hpb=0e03f090b02ca0ee5f2d85d1e7b32f40ef4e10c7;p=icn.git diff --git a/ci/README.md b/ci/README.md index c368dc3..3536070 100644 --- a/ci/README.md +++ b/ci/README.md @@ -1,24 +1,60 @@ -# Setup a private Jenkins server from a refresh ubuntu +# Setup a private Jenkins server from a refresh ubuntu 18.04 - -**Note:** 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. +Akraino 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 ## How to setup jenkins server -Put the gerrit ssh key under `icn/ci/gerrit.key` +We define vars in `vars.yaml` to customize the deployment. The default listening address is the default ip address of the Jenkins server. -To override the listening address/domain name, use variable `jenkins_hostname`. -The default Jenkins username/password is `admin/admin`. To overrides it, use variables +To override the listening address/domain name, please set `jenkins_hostname`. +The default Jenkins username/password is `admin/admin`. To overrides it, please set `jenkins_admin_username` and `jenkins_admin_password`. ```bash git clone "https://gerrit.akraino.org/r/icn" # may need to switch the branch based on your case cd icn/ci -sudo ./setup_jenkins.sh -sudo ansible-playbook site_jenkins.yaml -v +sudo ./install_ansible.sh +sudo ansible-playbook site_jenkins.yaml --extra-vars "@vars.yaml" -v ``` Once the playbook is successful, we can visite the jenkins server at http://:8080. + +## What to do next + +1. Add the gerrit ssh key as jenkins credential, so that our jobs can pull code from the gerrit. +The credential ID field must be `jenkins-ssh`, as this is hard coded in the jobs. The type should +be private key. The user name is the gerrit account name. +2. To push the logs to Akraino Nexus server, we need to create the authentication file for lftools. +The file should be owned by jenkins user. The file path is `/var/lib/jenkins/.netrc` and +the content should be one line `machine nexus.akraino.org login the_name password the_pass` +3. The last step is to deploy our CD jobs by jenkins-job-builder tool. + +``` +git clone --recursive "https://gerrit.akraino.org/r/ci-management" +git clone "https://gerrit.akraino.org/r/icn" +# create the jjb config file before moving on +# https://docs.releng.linuxfoundation.org/en/latest/jenkins-sandbox.html +jenkins-jobs test ci-management/jjb:icn/ci/jjb icn-master-verify +jenkins-jobs update ci-management/jjb:icn/ci/jjb icn-master-verify +``` + +A sample of jjb config file located at `~/.config/jenkins_jobs/jenkins_jobs.ini` +``` +[job_builder] +ignore_cache=True +keep_descriptions=False +recursive=True +retain_anchors=True +update=jobs + +[jenkins] +user=admin +password=admin +url=http://localhost:8080 +``` + +4. There is [a bug](https://issues.jenkins-ci.org/browse/JENKINS-28466) of jenkins +which makes some environemtn variables not usable. To fix the bug, we need 'Manage Jenkins' > 'Configure System' > 'click save without any changes'.