Nomad Configuration
Details of the different aspects of Nomad Configuration
Contents
[hide]Docker Hub Repositories
Jenkins Nomad Plugin Configuration
Proposed Jenkins Nomad Plugin Label to Docker Image Mapping
Jenkins Nomad Plugin Labels can only be created via LF Service Desk requests. In order to test CI jobs in the Jenkins Sandbox, a different label must exist which points to a sandbox Dockerhub repository to avoid disrupting operational jobs during docker image testing. This is the proposed nomenclature for the mapping of Jenkins Nomad Plugin labels and the corresponding dockerhub repositories (production and sandbox variants).
All new docker images will first be pushed to the Dockerhub associated 'sandbox repo' and all CI jobs utilizing the Jenkins Nomad Plugin Label will be verified in the Jenkins Sandbox, by modifying the appropriate JJB YAML files to point to the sandbox repo. Once all CI jobs have been verified, then the image will be pushed to the operational dockerhub repository associated with the label.
Label Nomenclature
fdiotools-prod-{arch}-{os}[-{job}] fdiotools-verify-{arch}-{os}[-{job}] fdiotools-sandbox-{arch}-{os}[-{job}]
where
- {arch} = x86_64, aarch64, ...
- {os} = ubuntu1804, ubuntu2004, centos7, centos8, ...
- {job} = project/job abbreviation (tbd)
NOTE: The 'sandbox' and 'verify' labels should NEVER be merged into the ci-management repository and will be added only to the Jenkins sandbox instance. The 'prod' labels will be added to both sandbox and production Jenkins instance.
Examples
Label | Dockerhub Repo |
---|---|
fdiotools-prod-x86_64-ubuntu1804 | https://hub.docker.com/repository/docker/fdiotools/prod_x86_64_ubuntu1804 |
fdiotools-prod-arm64-ubuntu1804 | https://hub.docker.com/repository/docker/fdiotools/prod_arm64_ubuntu1804 |
fdiotools-verify-x86_64-ubuntu1804 | https://hub.docker.com/repository/docker/fdiotools/verify_x86_64_ubuntu1804 |
fdiotools-verify-arm64-ubuntu1804 | https://hub.docker.com/repository/docker/fdiotools/verify_arm64_ubuntu1804 |
fdiotools-sandbox-x86_64-ubuntu1804 | https://hub.docker.com/repository/docker/fdiotools/sandbox_x86_64_ubuntu1804 |
fdiotools-sandbox-arm64-ubuntu1804 | https://hub.docker.com/repository/docker/fdiotools/sandbox_arm64_ubuntu1804 |
Q & A
QUESTION 1: Is there a need for project specific images?
ANSWER 1: Current project jobs are generally tightly bound to VPP Infra dependencies with some additional requirements. For most executors it makes sense to combine dependencies into the VPP docker images rather than have per project images. Project jobs that are independent will have separate images (e.g. csit 'vpp-device' test).
QUESTION 2: Is there a need for different size labels (small, medium, large) with different resource allocations (eg. CPU, Memory, etc)?
ANSWER 2: Currently most of the 'size' flavors are unused. Initial plan is to not have size based labels. If specific jobs have different size requirements, then labels will be added with job specific postfix.
Legacy Jenkins Label to Docker Image Mapping
These labels are currently defined (circa VPP 20.05) and will be removed once there are no references to them in the ci-management repo. Some of them are not being used today.
Legacy Label(s) | Dockerhub Repo |
---|---|
ubuntu1604-us, ubuntu1604-s, ubuntu1604-m, ubuntu1604-l, ubuntu1604-hub-us, ubuntu1604-nus, | https://hub.docker.com/repository/docker/snergster/vpp-ubuntu16 |
ubuntu1604arm-hub-us | https://hub.docker.com/repository/docker/snergster/vpp-arm-ubuntu16 |
ubuntu1804-us, ubuntu1804-s, ubuntu1804-m, ubuntu1804-l, ubuntu1804-hub-us, vpp-csit-device, vpp-csit-ubuntu18, | https://hub.docker.com/repository/docker/snergster/vpp-ubuntu18 |
ubuntu1804arm-hub-us, ubuntu1804arm-s, ubuntu1804arm-m, vpp-csit-arm-ubuntu18 | https://hub.docker.com/repository/docker/snergster/vpp-arm-ubuntu18 |
centos7-us, centos7-s, centos7-m, centos7-l, centos7-hub-us, | https://hub.docker.com/repository/docker/snergster/vpp-centos |
ubuntu2004-us | https://hub.docker.com/repository/docker/snergster/vpp-ubuntu20 |
centos8-us | https://hub.docker.com/repository/docker/snergster/vpp-centos8 |