Pool: ODLVEX ^^^^^^^^^^^^ .. note:: CentOS 7 based minions are deprecated; prefer Ubuntu 22.04 or CentOS Stream 8 where available. Selected minion types (deprecated examples): * centos7-builder-* (2c-1g, 2c-2g, 2c-8g, 4c-4g, 8c-8g, autorelease-4c-16g) - Packer: ``packer/templates/builder.json`` - Playbook: ``packer/common-packer/provision/baseline.yaml`` - Note: Deprecated CentOS 7 general build / autorelease images. Use Ubuntu 22.04 builder going forward. * centos7-robot-2c-2g - Packer: ``packer/templates/robot.json`` - Playbook: ``packer/provision/robot.yaml`` - Note: Deprecated robot test runner (CentOS 7); migrate to updated robot images when available. * ubuntu1804-mininet-ovs-28-2c-2g - Packer: ``packer/templates/mininet-ovs-2.8.json`` - Playbook: ``packer/provision/mininet-ovs-2.8.yaml`` - Note: Legacy Ubuntu 18.04 + OVS 2.8 for historical CSIT; prefer Ubuntu 22.04 mininet-ovs-217. * centos7-devstack-2c-4g - Packer: ``packer/templates/devstack.json`` - Playbook: ``packer/provision/devstack.yaml`` - Note: Deprecated DevStack OpenStack test image (CentOS 7); prefer Ubuntu 22.04 devstack. * centos7-docker-2c-4g - Packer: ``packer/templates/docker.json`` - Playbook: ``packer/common-packer/provision/docker.yaml`` - Note: Deprecated CentOS 7 docker image; prefer Ubuntu 20.04/22.04 docker labels. Jenkins Master -------------- The `jenkins-master`_ is the home for all project's Jenkins jobs. All maintenance and configuration of these jobs must be done via JJB through the `releng-builder-repo`_. Project contributors can no longer edit the Jenkins jobs directly on the server. 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 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 are available. The following are the current minion types and descriptions. Minion Template Names are needed for jobs that take advantage of multiple minions as they must be specifically called out by template name instead of label. 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 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 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. .. note:: The first route may add additional setup time considering this is run every time the minion is booted. 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. 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 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-builder` which is a combination of Packer OS image definitions from `vars/centos.json`, Packer template definitions from `templates/builder.json` and spinup scripts from `provision/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. 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 snapshot. Examples could include installing new package or setting up a virtual environment. It is imperative to ensure modifications to these spinup scripts have considered time taken to install the packages, as this could increase the build time for every job which runs on the image. After all of these scripts have executed Jenkins will finally attach the minion as an actual minion and start Pool: ODLVEX ^^^^^^^^^^^^ .. list-table:: CentOS 7 (deprecated) build templates :widths: 30 30 20 20 :header-rows: 1 * - Jenkins Labels - Minion Template Names - Packer Template - Playbook * - centos7-builder-2c-1g, centos7-builder-2c-2g, centos7-builder-2c-8g,\ centos7-builder-4c-4g, centos7-builder-8c-8g, centos7-autorelease-4c-16g - prd-centos7-builder-2c-1g, prd-centos7-builder-2c-2g, prd-centos7-builder-2c-8g,\ prd-centos7-builder-4c-4g, prd-centos7-builder-8c-8g, prd-centos7-autorelease-4c-16g - releng/builder/packer/templates/builder.json - releng/builder/packer/common-packer/provision/baseline.yaml * - CentOS 7 build minions are deprecated. Use Ubuntu 22.04 (Jammy) or\ CentOS Stream 8 builder labels for all new jobs. Java 17 is default;\ Java 11 only for legacy needs. - \- - \- - \- .. list-table:: CentOS 7 (deprecated) robot templates :widths: 30 30 20 20 :header-rows: 1 * - Jenkins Labels - Minion Template Names - Packer Template - Playbook * - centos7-robot-2c-2g - centos7-robot-2c-2g - releng/builder/packer/templates/robot.json - releng/builder/packer/provision/robot.yaml * - Robot image contains only test execution dependencies (deprecated).\ Prefer Ubuntu 22.04 or CentOS Stream 8 robot images when available. - \- - \- - \- .. list-table:: Additional deprecated templates :widths: 30 30 20 20 :header-rows: 1 * - Jenkins Labels - Minion Template Names - Packer Template - Playbook * - ubuntu1804-mininet-ovs-28-2c-2g - ubuntu1804-mininet-ovs-28-2c-2g - releng/builder/packer/templates/mininet-ovs-2.8.json - releng/builder/packer/provision/mininet-ovs-2.8.yaml * - Ubuntu 18.04 with OVS 2.8 (deprecated; migrate to Ubuntu 22.04 mininet-ovs-217) - \- - \- - \- * - centos7-devstack-2c-4g - centos7-devstack-2c-4g - releng/builder/packer/templates/devstack.json - releng/builder/packer/provision/devstack.yaml * - CentOS 7 DevStack image (deprecated). Prefer Ubuntu 22.04 devstack. - \- - \- - \- * - centos7-docker-2c-4g - centos7-docker-2c-4g - releng/builder/packer/templates/docker.json - releng/builder/packer/common-packer/provision/docker.yaml * - CentOS 7 docker image (deprecated). Prefer Ubuntu 20.04/22.04 docker. - \- - \- - \- Pool: ODLVEX - HOT (Heat Orchestration Templates) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HOT integration spins up integration lab servers for CSIT jobs using Heat rather than jclouds (deprecated). Image names update on project-specific job templates via the ``{odl,docker,openstack,tools}_system_image`` variable using the format `` -