X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=ci%2FREADME.md;h=bcfcf0a50a42608d6f9359f79612b8ded7348cb8;hb=8fcb874a6e5ec52b4a6ac80cb7f34c7baccd8c17;hp=d3a4200791ea7de9fb05ddab432ee7dd4e366a57;hpb=330beeba6da6f89791d68f5dcfa76f2e7e110b24;p=icn.git diff --git a/ci/README.md b/ci/README.md index d3a4200..bcfcf0a 100644 --- a/ci/README.md +++ b/ci/README.md @@ -1,48 +1,62 @@ -# Setup a private Jenkins server from a refresh ubuntu 18.04 +# Setup a private Jenkins server from a fresh Ubuntu 18.04 -Akraino community has a publich jenkins cluster, we run CI jobs there. +Akraino community has a public 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 +For now, we support only one node private Jenkins deployment. The +only supported OS is Ubuntu 18.04. -## How to setup jenkins server +## How to setup Jenkins server -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, please set `jenkins_hostname`. -The default Jenkins username/password is `admin/admin`. To overrides it, please set -`jenkins_admin_username` and `jenkins_admin_password`. +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, please set +`jenkins_hostname`. The default Jenkins username/password is +`admin/admin`. To override 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 +1. Fetch the source for ICN and Akraino CI management.The ICN jenkins +job macros require that the the icn and ci-management directories are +peers. + +** Note: Switch the branch of the repositories below as needed.** + +``` shell +git clone https://gerrit.akraino.org/r/icn +git clone --recursive https://gerrit.akraino.org/r/ci-management +``` + +2. Install Jenkins. + +```shell cd icn/ci -sudo ./install_ansible.sh -sudo ansible-playbook site_jenkins.yaml --extra-vars "@vars.yaml" -v +sudo -H ./install_ansible.sh +sudo -H ansible-playbook site_jenkins.yaml --extra-vars "@vars.yaml" -v ``` -Once the playbook is successful, we can visite the jenkins server at http://:8080. +Once the playbook is successful, we can visit 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` +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 -``` +Basic Jenkins Job Builder (JJB) configuration using admin/admin +credentials. -A sample of jjb config file -``` +``` shell +mkdir -p ~/.config/jenkins_jobs +cat << EOF | tee ~/.config/jenkins_jobs/jenkins_jobs.ini [job_builder] ignore_cache=True keep_descriptions=False @@ -54,4 +68,19 @@ update=jobs user=admin password=admin url=http://localhost:8080 +EOF +``` + +Install jenkins-job-builder. + +``` shell +sudo -H pip3 install jenkins-job-builder +``` + +Install the job into Jenkins. The test command displays the output of +the job builder that will be installed into Jenkins; it is optional. + +``` shell +jenkins-jobs test ci-management/jjb:icn/ci/jjb icn-master-verify +jenkins-jobs update ci-management/jjb:icn/ci/jjb icn-master-verify ```