X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=docs%2Fjenkins.rst;h=40057f03b9e2b3d31dc6dc648b157731515628ef;hb=b77ff82ba886206add03c0144ce9705ecd7e2557;hp=a74cd82d543019a72eaa37c7b7738298fedfd357;hpb=02361407299b28af25dcbed08267d98ed7a8ceaa;p=releng%2Fbuilder.git diff --git a/docs/jenkins.rst b/docs/jenkins.rst index a74cd82d5..40057f03b 100644 --- a/docs/jenkins.rst +++ b/docs/jenkins.rst @@ -27,26 +27,31 @@ in the jenkins-master_ silo and this can be achieved by simply creating a .. code-block:: bash - git clone https://git.opendaylight.org/gerrit/releng/builder + git clone --recursive https://git.opendaylight.org/gerrit/releng/builder cd builder mkdir jjb/ +.. note: + + releng/global-jjb is a submodule of releng/builder repository which + requires a git submodule update --init or using --recursive with git clone. + `releng-global-jjb`_ + Where should be the same name as your project's git repo in -Gerrit. So if your project is called "aaa" then create a new jjb/aaa directory. +Gerrit. If your project is called "aaa" then create a new jjb/aaa directory. Next we will create .yaml as follows: .. code-block:: yaml + --- - project: name: -carbon jobs: - - '{project-name}-clm-{stream}' - - '{project-name}-distribution-{stream}' - - '{project-name}-integration-{stream}' - - '{project-name}-merge-{stream}' - - '{project-name}-periodic-{stream}' - - '{project-name}-verify-{stream}-{maven}-{jdks}' + - '{project-name}-clm-{stream}' + - '{project-name}-integration-{stream}' + - '{project-name}-merge-{stream}' + - '{project-name}-verify-{stream}-{maven}-{jdks}' project: '' project-name: '' @@ -54,10 +59,10 @@ Next we will create .yaml as follows: branch: 'master' jdk: openjdk8 jdks: - - openjdk8 + - openjdk8 maven: - - mvn33: - mvn-version: '{mvn33}' + - mvn33: + mvn-version: 'mvn33' mvn-settings: '-settings' mvn-goals: 'clean install -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r' mvn-opts: '-Xmx1024m -XX:MaxPermSize=256m' @@ -68,7 +73,7 @@ Next we will create .yaml as follows: - project: name: -sonar jobs: - - '{project-name}-sonar' + - '{project-name}-sonar' project: '' project-name: '' @@ -80,7 +85,7 @@ Next we will create .yaml as follows: Replace all instances of with the name of your project. This will create the jobs with the default job types we recommend for Java projects. If your project is participating in the simultanious-release and ultimately will -be included in the final distribution. We recommend adding the following job +be included in the final distribution, it is required to add the following job types into the job list for the release you are participating. @@ -118,8 +123,7 @@ Build Minions The Jenkins jobs are run on build minions (executors) which are created on an as-needed basis. If no idle build minions are available a new VM is brought up. This process can take up to 2 minutes. Once the build minion has finished a -job, it will remain online for 45 minutes before shutting down. Subsequent -jobs will use an idle build minion if available. +job, it will be destroyed. Our Jenkins master supports many types of dynamic build minions. If you are creating custom jobs then you will need to have an idea of what type of minions @@ -134,11 +138,13 @@ Adding New Components to the Minions If your project needs something added to one of the minions, you can help us get things added faster by doing one of the following: -* Submit a patch to RelEng/Builder for the `packer/provision`_ scripts that - configures your new piece of software during minion boot up. +* Submit a patch to RelEng/Builder for the appropriate `jenkins-scripts` + definition which configure software during minion boot up. +* Submit a patch to RelEng/Builder for the `packer/provision` scripts that + configures software during minion instance imaging. * Submit a patch to RelEng/Builder for the Packer's templates in - the `packer/templates`_ directory that configures your new piece of - software which get baked into the image. + the `packer/templates` directory that configures a new instance definition + along with changes in `packer/provision`. Going the first route will be faster in the short term as we can inspect the changes and make test modifications in the sandbox to verify that it works. @@ -148,30 +154,30 @@ changes and make test modifications in the sandbox to verify that it works. The first route may add additional setup time considering this is run every time the minion is booted. -The second route, however, is better for the community as a whole as it will -allow others to utilize our Packer setups to replicate our systems more +The second and third routes, however, is better for the community as a whole as +it will allow others to utilize our Packer setups to replicate our systems more closely. It is, however, more time consuming as an image snapshot needs to be -created based on the updated Packer definitions before it can be attached to -the Jenkins configuration on sandbox for validation testing. +created based on the updated Packer definitions before it can be attached to the +Jenkins configuration on sandbox for validation testing. In either case, the changes must be validated in the sandbox with tests to make sure that we don't break current jobs and that the new software features are operating as intended. Once this is done the changes will be merged and the updates applied to the RelEng Jenkins production silo. Any changes to -files under `releng/builder/packer`_ will be validated and images would be built +files under `releng/builder/packer` will be validated and images would be built triggered by verify-packer and merge-packer jobs. Please note that the combination of a Packer definitions from `vars`, `templates` and the `provision` scripts is what defines a given minion. For instance, a minion -may be defined as `centos7-java-builder`_ which is a combination of Packer OS image -definitions from `vars/centos.json`_, Packer template definitions from -`templates/java-buidler.json` and spinup scripts from `provision/java-builder.sh`_. +may be defined as `centos7-java-builder` which is a combination of Packer OS image +definitions from `vars/centos.json`, Packer template definitions from +`templates/java-buidler.json` and spinup scripts from `provision/java-builder.sh`. This combination provides the full definition of the realized minion. Jenkins starts a minion using the latest image which is built and linked into the Jenkins configuration. Once the base instance is online Jenkins checks out the RelEng/Builder repo on it and executes two scripts. The first is -`provision/baseline.sh`_, which is a baseline for all of the minions. +`provision/baseline.sh`, which is a baseline for all of the minions. The second is the specialized script, which handles any system updates, new software installs or extra environment tweaks that don't make sense in a @@ -183,65 +189,44 @@ executed Jenkins will finally attach the minion as an actual minion and start handling jobs on it. Pool: ODLRPC -^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^ .. raw:: html - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + - - - + + + + + + + + + + + + + +
Jenkins Label
dynamic_verify
Minion Template name
centos7-builder
Vagrant Definition
releng/builder/vagrant/basic-builder
Spinup Script
releng/builder/jenkins-scripts/builder.sh
Jenkins Labels
centos7-java-builder-2c-4g, + centos7-java-builder-2c-8g, centos7-java-builder-4c-8g, + centos7-java-builder-8c-8g, centos7-java-builder-4c-16g
Minion Template names
centos7-java-builder-2c-4g, + centos7-java-builder-2c-4g, centos7-java-builder-2c-8g, + centos7-java-builder-4c-8g, centos7-java-builder-8c-8g, + centos7-java-builder-4c-16g
Packer Template
+ releng/builder/packer/templates/java-builder.json
Spinup Script
+ releng/builder/jenkins-scripts/builder.sh
- A CentOS 7 huild minion. This system has OpenJDK 1.7 (Java7) and OpenJDK - 1.8 (Java8) installed on it along with all the other components and - libraries needed for building any current OpenDaylight project. This is - the label that is used for all basic -verify and -daily- builds for + CentOS 7 build minion configured with OpenJDK 1.7 (Java7) and OpenJDK + 1.8 (Java8) along with all the other components and libraries needed + for building any current OpenDaylight project. This is the label that + is used for all basic verify, merge and daily builds for projects.
Jenkins Label
dynamic_merge
Minion Template name
centos7-builder
Vagrant Definition
releng/builder/vagrant/basic-builder
Spinup Script
releng/builder/jenkins-scripts/builder.sh
- See dynamic_verify (same image on the back side). This is the label that - is used for all basic -merge and -integration- builds for projects. -
Jenkins Label
matrix_master
Minion Template name
centos7-matrix
Vagrant Definition
releng/builder/vagrant/basic-java-node
Spinup Script
releng/builder/jenkins-scripts/matrix.sh
- This is a very minimal system that is designed to spin up with 2 build - instances on it. The purpose is to have a location that is not the - Jenkins master itself for jobs that are executing matrix operations - since they need a director location. This image should not be used for - anything but tying matrix jobs before the matrx defined label ties. -
Jenkins Label
dynamic_robot
Minion Template name
centos7-robot
Vagrant Definition
releng/builder/vagrant/integration-robotframework
Jenkins Labels
centos7-robot-2c-2g
Minion Template names
centos7-robot-2c-2g
Packer Template
+ releng/builder/packer/templates/robot.json
Spinup Script
releng/builder/jenkins-scripts/robot.sh
- A CentOS 7 minion that is configured with OpenJDK 1.7 (Java7), OpenJDK + CentOS 7 minion configured with OpenJDK 1.7 (Java7), OpenJDK 1.8 (Java8) and all the current packages used by the integration project for doing robot driven jobs. If you are executing robot framework jobs then your job should be using this as the minion that @@ -251,88 +236,39 @@ Pool: ODLRPC
Jenkins Label
ubuntu_mininet
Minion Template name
ubuntu-trusty-mininet
Vagrant Definition
releng/builder/vagrant/ubuntu-mininet
Spinup Script
releng/builder/jenkins-scripts/mininet-ubuntu.sh
- Basic Ubuntu system with ovs 2.0.2 and mininet 2.1.0 -
Jenkins Label
ubuntu_mininet_ovs_23
Minion Template name
ubuntu-trusty-mininet-ovs-23
Vagrant Definition
releng/builder/vagrant/ubuntu-mininet-ovs-23
Jenkins Labels
ubuntu1404-mininet-2c-2g
Minion Template names
ubuntu1404-mininet-2c-2g
Packer Template
+ releng/builder/packer/teamplates/mininet.json
Spinup Script
releng/builder/jenkins-scripts/mininet-ubuntu.sh
- Basic Ubuntu system with ovs 2.3 and mininet 2.2.1 + Basic Ubuntu 14.04 (Trusty) system with ovs 2.0.2 and mininet 2.1.0
Jenkins Label
ubuntu_mininet_ovs_25
Minion Template name
ubuntu-trusty-mininet-ovs-25
Vagrant Definition
releng/builder/vagrant/ubuntu-mininet-ovs-25
Jenkins Labels
ubuntu1404-mininet-ovs-23-2c-2g
Minion Template names
ubuntu1404-mininet-ovs-23-2c-2g
Packer Template
releng/builder/packer/templates/mininet-ovs-2.3.json
Spinup Script
releng/builder/jenkins-scripts/mininet-ubuntu.sh
- Basic Ubuntu system with ovs 2.5 and mininet 2.2.2 -
Jenkins Label
dynamic_controller
Minion Template name
centos7-java
Vagrant Definition
releng/builder/vagrant/basic-java-node
Spinup Script
releng/builder/jenkins-scripts/controller.sh
- A CentOS 7 minion that has the basic OpenJDK 1.7 (Java7) and OpenJDK - 1.8 (Java8) installed and is capable of running the controller, not - building. + Ubuntu 16.04 (Xenial) system with ovs 2.5 and mininet 2.2.1
Jenkins Label
dynamic_java
Minion Template name
centos7-java
Vagrant Definition
releng/builder/vagrant/basic-java-node
Spinup Script
releng/builder/jenkins-scripts/controller.sh
- See dynamic_controller as it is currently the same image. -
Jenkins Label
dynamic_java_8g
Minion Template name
centos7-java-8g
Vagrant Definition
releng/builder/vagrant/basic-java-node
Spinup Script
releng/builder/jenkins-scripts/controller.sh
- See dynamic_controller as it is currently the same image but with 8G of RAM. -
Jenkins Label
dynamic_devstack
Minion Template name
centos7-devstack
Vagrant Definition
releng/builder/vagrant/ovsdb-devstack
Jenkins Labels
centos7-devstack-2c-4g
Minion Template names
centos7-devstack-2c-4g
Packer Template
releng/builder/packer/templates/devstack.json
Spinup Script
releng/builder/jenkins-scripts/devstack.sh
- A CentOS 7 system purpose built for doing OpenStack testing using + CentOS 7 system purpose built for doing OpenStack testing using DevStack. This minion is primarily targeted at the needs of the OVSDB project. It has OpenJDK 1.7 (aka Java7) and OpenJDK 1.8 (Java8) and other basic DevStack related bits installed. @@ -340,14 +276,14 @@ Pool: ODLRPC
Jenkins Label
dynamic_docker
Minion Template name
centos7-docker
Vagrant Definition
releng/builder/vagrant/ovsdb-docker
Jenkins Labels
centos7-docker-2c-4g
Minion Template names
centos7-docker-2c-4g
Packer Template
releng/builder/packer/templates/docker.json
Spinup Script
releng/builder/jenkins-scripts/docker.sh
- A CentOS 7 system that is configured with OpenJDK 1.7 (aka Java7), + CentOS 7 system configured with OpenJDK 1.7 (aka Java7), OpenJDK 1.8 (Java8) and Docker. This system was originally custom built for the test needs of the OVSDB project but other projects have expressed interest in using it. @@ -355,18 +291,46 @@ Pool: ODLRPC
Jenkins Label
gbp_trusty
Minion Template name
gbp_trusty
Vagrant Definition
releng/builder/vagrant/gbp-ubuntu-docker-ovs-node
Jenkins Labels
ubuntu1404-gbp-2c-2g
Minion Template names
ubuntu1404-gbp-2c-2g
Packer Template
releng/builder/packer/templates/gbp.json
Spinup Script
releng/builder/jenkins-scripts/ubuntu-docker-ovs.sh
+ Ubuntu 14.04 (Trusty) node with latest OVS and docker installed. Used by Group Based Policy. +
Jenkins Labels
ubuntu1604-gbp-2c-4g
Minion Template names
ubuntu1604-gbp-2c-4g
Packer Template
releng/builder/packer/templates/gbp.json
Spinup Script
releng/builder/jenkins-scripts/ubuntu-docker-ovs.sh
- A basic Ubuntu node with latest OVS and docker installed. Used by Group Based Policy. + Ubuntu 16.04 (Xenial) node with latest OVS and docker installed. Used by Group Based Policy.
+Pool: ODLPUB - HOT (Heat Orchestration Templates) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +HOT integration enables to spin up integration labs servers for CSIT jobs +using heat, rathar than using jclouds (deprecated). Image names are updated +on the project specific job templates using the variable +`{odl,docker,openstack,tools}_system_image` followed by image name in the +format ` -