2. For each OS package manager, there is a bash function which generates the
Dockerfile for the specified OS which uses said package manager. For example,
lib_apt.sh contains 'generate_apt_dockerfile()' which is executed for Ubuntu
- and debian OS's. lib_yum.sh and lib_dnf.sh contain similar functions for yum
- (centos-7) and dnf (centos-8).
+ and debian OS's.
3. The Dockerfiles contain the following sections:
- a. Environment setup and copying of project workspace git repos
- `lib_csit.sh`: CSIT specific functions and environment variables
-- `lib_dnf.sh`: Dockerfile generation functions for dnf package manager.
-
- `lib_vpp.sh`: VPP specific functions and environment variables
-- `lib_yum.sh`: Dockerfile generation functions for yum package manager.
## Bash Scripts
`cd <ci-managment repository directory>`
-`sudo ./docker/scripts/build_executor_docker_image.sh ubuntu-18.04 2>&1 | tee u1804-$(uname -m).log | grep -ve '^+'`
-
-`sudo ./docker/scripts/build_executor_docker_image.sh centos-7 2>&1 | tee centos7-$(uname -m).log | grep -ve '^+'`
+`sudo ./docker/scripts/build_executor_docker_image.sh ubuntu-20.04 2>&1 | tee u2004-$(uname -m).log | grep -ve '^+'`
`sudo ./docker/scripts/build_executor_docker_image.sh -apr sandbox 2>&1 | tee all-sandbox-$(uname -m).log | grep -ve '^+'`
The environment in the docker shell contains all of the necessary
environment variable definitions so the docker scripts can be run
directly on the cli. Here is an example command that would be used in a CI job
-which automates the generation and testing of a new ubuntu-18.04 docker image
-and push it to Docker Hub fdiotools/builder-ubuntu1804:test-<arch>:
+which automates the generation and testing of a new ubuntu-20.04 docker image
+and push it to Docker Hub fdiotools/builder-ubuntu2004:test-<arch>:
-`build_executor_docker_image.sh -pr test ubuntu-18.04`
+`build_executor_docker_image.sh -pr test ubuntu-20.04`
In the future, a fully automated CI/CD pipeline may be created for production
docker images.
## DockerHub Repositories
-- fdiotools/builder-centos7
-- fdiotools/builder-centos8
-- fdiotools/builder-debian9
- fdiotools/builder-debian10
-- fdiotools/builder-ubuntu1804
- fdiotools/builder-ubuntu2004
-- fdiotools/csit_dut-ubuntu1804
-- fdiotools/csit_shim-ubuntu1804
+- fdiotools/csit_dut-ubuntu2004
+- fdiotools/csit_shim-ubuntu2004
## Docker Image Tags
Jenkins-Nomad Label.
- test-aarch64: Tag used to select the aarch64 sandbox image by the associated
Jenkins-Nomad Label.
-
-# Jenkins-Nomad Label Definitions
-
-<class>-<os>-<role>-<arch> (e.g. builder-ubuntu1804-prod-x86_64)
-
-- class
--- builder
--- csit_dut
--- csit_shim
-
-- os
--- ubuntu1804
--- centos7
--- ubuntu2004
--- centos8
--- debian9
--- debian10
-
-- role
--- prod
--- test
--- sandbox
-
-- arch
--- x86_64
--- aarch64
-
-## Jenkins Nomad Plugin Node Labels
-
-### Common Attributes of All Jenkins Nomad Plugin Nodes
-- Disk: 3000
-- Priority: 50
-- Idle Termination Time: 10
-- Executors: 1
-- Usage: Only build jobs with label expressions matching this node
-- Workspace root: /w
-- Privileged: Y
-- Network: bridge
-- Force-pull: Y
-
-### Production (prod) Jenkins Nomad Plugin Nodes
-
-#### Node 'builder-ubuntu1804-prod-x86_64'
-- Labels: builder-ubuntu1804-prod-x86_64
-- Job Prefix: builder-ubuntu1804-prod-x86_64
-- Image: fdiotools/builder-ubuntu1804:prod-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu1804-prod-aarch64'
-- Labels: builder-ubuntu1804-prod-aarch64
-- Job Prefix: builder-ubuntu1804-prod-aarch64
-- Image: fdiotools/builder-ubuntu1804:prod-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-centos7-prod-x86_64'
-- Labels: builder-centos7-prod-x86_64
-- Job Prefix: builder-centos7-prod-x86_64
-- Image: fdiotools/builder-centos7:prod-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-centos7-prod-aarch64'
-- Labels: builder-centos7-prod-aarch64
-- Job Prefix: builder-centos7-prod-aarch64
-- Image: fdiotools/builder-centos7:prod-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu2004-prod-x86_64'
-- Labels: builder-ubuntu2004-prod-x86_64
-- Job Prefix: builder-ubuntu2004-prod-x86_64
-- Image: fdiotools/builder-ubuntu2004:prod-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu2004-prod-aarch64'
-- Labels: builder-ubuntu2004-prod-aarch64
-- Job Prefix: builder-ubuntu2004-prod-aarch64
-- Image: fdiotools/builder-ubuntu2004:prod-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-centos8-prod-x86_64'
-- Labels: builder-centos8-prod-x86_64
-- Job Prefix: builder-centos7-prod-x86_64
-- Image: fdiotools/builder-centos8:prod-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-centos8-prod-aarch64'
-- Labels: builder-centos8-prod-aarch64
-- Job Prefix: builder-centos8-prod-aarch64
-- Image: fdiotools/builder-centos8:prod-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-debian9-prod-x86_64'
-- Labels: builder-debian9-prod-x86_64
-- Job Prefix: builder-debian9-prod-x86_64
-- Image: fdiotools/builder-debian9:prod-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-debian9-prod-aarch64'
-- Labels: builder-debian9-prod-aarch64
-- Job Prefix: builder-debian9-prod-aarch64
-- Image: fdiotools/builder-debian9:prod-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-debian10-prod-x86_64'
-- Labels: builder-debian10-prod-x86_64
-- Job Prefix: builder-debian10-prod-x86_64
-- Image: fdiotools/builder-debian10:prod-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-debian10-prod-aarch64'
-- Labels: builder-debian10-prod-aarch64
-- Job Prefix: builder-debian10-prod-aarch64
-- Image: fdiotools/builder-debian10:prod-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'csit_dut-ubuntu1804-prod-x86_64'
-- Labels: csit_dut-ubuntu1804-prod-x86_64
-- Job Prefix: csit_dut-ubuntu1804-prod-x86_64
-- Image: fdiotools/csit_dut-ubuntu1804:prod-x86_64
-- CPU: 10000
-- Memory: 18000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: csit
-
-#### Node 'csit_dut-ubuntu1804-prod-aarch64'
-- Labels: csit_dut-ubuntu1804-prod-aarch64
-- Job Prefix: csit_dut-ubuntu1804-prod-aarch64
-- Image: fdiotools/csit_dut-ubuntu1804:prod-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: csitarm
-
-#### Node 'csit_shim-ubuntu1804-prod-x86_64'
-- Labels: csit_shim-ubuntu1804-prod-x86_64
-- Job Prefix: csit_shim-ubuntu1804-prod-x86_64
-- Image: fdiotools/csit_shim-ubuntu1804:prod-x86_64
-- CPU: 10000
-- Memory: 18000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: csit
-
-#### Node 'csit_shim-ubuntu1804-prod-aarch64'
-- Labels: csit_shim-ubuntu1804-prod-aarch64
-- Job Prefix: csit_shim-ubuntu1804-prod-aarch64
-- Image: fdiotools/csit_shim-ubuntu1804:prod-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: csitarm
-
-### Sandbox (sandbox) Jenkins Nomad Plugin Nodes
-
-#### Node 'builder-ubuntu1804-sandbox-x86_64'
-- Labels: builder-ubuntu1804-sandbox-x86_64
-- Job Prefix: builder-ubuntu1804-sandbox-x86_64
-- Image: fdiotools/builder-ubuntu1804:sandbox-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu1804-sandbox-aarch64'
-- Labels: builder-ubuntu1804-sandbox-aarch64
-- Job Prefix: builder-ubuntu1804-sandbox-aarch64
-- Image: fdiotools/builder-ubuntu1804:sandbox-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-centos7-sandbox-x86_64'
-- Labels: builder-centos7-sandbox-x86_64
-- Job Prefix: builder-centos7-sandbox-x86_64
-- Image: fdiotools/builder-centos7:sandbox-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-centos7-sandbox-aarch64'
-- Labels: builder-centos7-sandbox-aarch64
-- Job Prefix: builder-centos7-sandbox-aarch64
-- Image: fdiotools/builder-centos7:sandbox-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu2004-sandbox-x86_64'
-- Labels: builder-ubuntu2004-sandbox-x86_64
-- Job Prefix: builder-ubuntu2004-sandbox-x86_64
-- Image: fdiotools/builder-ubuntu2004:sandbox-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu2004-sandbox-aarch64'
-- Labels: builder-ubuntu2004-sandbox-aarch64
-- Job Prefix: builder-ubuntu2004-sandbox-aarch64
-- Image: fdiotools/builder-ubuntu2004:sandbox-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-centos8-sandbox-x86_64'
-- Labels: builder-centos8-sandbox-x86_64
-- Job Prefix: builder-centos8-sandbox-x86_64
-- Image: fdiotools/builder-centos8:sandbox-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-centos8-sandbox-aarch64'
-- Labels: builder-centos8-sandbox-aarch64
-- Job Prefix: builder-centos8-sandbox-aarch64
-- Image: fdiotools/builder-centos8:sandbox-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-debian9-sandbox-x86_64'
-- Labels: builder-debian9-sandbox-x86_64
-- Job Prefix: builder-debian9-sandbox-x86_64
-- Image: fdiotools/builder-debian9:sandbox-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-debian9-sandbox-aarch64'
-- Labels: builder-debian9-sandbox-aarch64
-- Job Prefix: builder-debian9-sandbox-aarch64
-- Image: fdiotools/builder-debian9:sandbox-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-debian10-sandbox-x86_64'
-- Labels: builder-debian10-sandbox-x86_64
-- Job Prefix: builder-debian10-sandbox-x86_64
-- Image: fdiotools/builder-debian10:sandbox-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-debian10-sandbox-aarch64'
-- Labels: builder-debian10-sandbox-aarch64
-- Job Prefix: builder-debian10-sandbox-aarch64
-- Image: fdiotools/builder-debian10:sandbox-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'csit_dut-ubuntu1804-sandbox-x86_64'
-- Labels: csit_dut-ubuntu1804-sandbox-x86_64
-- Job Prefix: csit_dut-ubuntu1804-sandbox-x86_64
-- Image: fdiotools/csit_dut-ubuntu1804:sandbox-x86_64
-- CPU: 10000
-- Memory: 18000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: csit
-
-#### Node 'csit_dut-ubuntu1804-sandbox-aarch64'
-- Labels: csit_dut-ubuntu1804-sandbox-aarch64
-- Job Prefix: csit_dut-ubuntu1804-sandbox-aarch64
-- Image: fdiotools/csit_dut-ubuntu1804:sandbox-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: csitarm
-
-#### Node 'csit_shim-ubuntu1804-sandbox-x86_64'
-- Labels: csit_shim-ubuntu1804-sandbox-x86_64
-- Job Prefix: csit_shim-ubuntu1804-sandbox-x86_64
-- Image: fdiotools/csit_shim-ubuntu1804:sandbox-x86_64
-- CPU: 10000
-- Memory: 18000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: csit
-
-#### Node 'csit_shim-ubuntu1804-sandbox-aarch64'
-- Labels: csit_shim-ubuntu1804-sandbox-aarch64
-- Job Prefix: csit_shim-ubuntu1804-sandbox-aarch64
-- Image: fdiotools/csit_shim-ubuntu1804:sandbox-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: csitarm
-
-### Automated Testing (test) Jenkins Nomad Plugin Nodes
-
-#### Node 'builder-ubuntu1804-test-x86_64'
-- Labels: builder-ubuntu1804-test-x86_64
-- Job Prefix: builder-ubuntu1804-test-x86_64
-- Image: fdiotools/builder-ubuntu1804:test-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu1804-test-aarch64'
-- Labels: builder-ubuntu1804-test-aarch64
-- Job Prefix: builder-ubuntu1804-test-aarch64
-- Image: fdiotools/builder-ubuntu1804:test-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-centos7-test-x86_64'
-- Labels: builder-centos7-test-x86_64
-- Job Prefix: builder-centos7-test-x86_64
-- Image: fdiotools/builder-centos7:test-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-centos7-test-aarch64'
-- Labels: builder-centos7-test-aarch64
-- Job Prefix: builder-centos7-test-aarch64
-- Image: fdiotools/builder-centos7:test-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu2004-test-x86_64'
-- Labels: builder-ubuntu2004-test-x86_64
-- Job Prefix: builder-ubuntu2004-test-x86_64
-- Image: fdiotools/builder-ubuntu2004:test-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-ubuntu2004-test-aarch64'
-- Labels: builder-ubuntu2004-test-aarch64
-- Job Prefix: builder-ubuntu2004-test-aarch64
-- Image: fdiotools/builder-ubuntu2004:test-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-centos8-test-x86_64'
-- Labels: builder-centos8-test-x86_64
-- Job Prefix: builder-centos8-test-x86_64
-- Image: fdiotools/builder-centos8:test-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-centos8-test-aarch64'
-- Labels: builder-centos8-test-aarch64
-- Job Prefix: builder-centos8-test-aarch64
-- Image: fdiotools/builder-centos8:test-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-debian9-test-x86_64'
-- Labels: builder-debian9-test-x86_64
-- Job Prefix: builder-debian9-test-x86_64
-- Image: fdiotools/builder-debian9:test-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-debian9-test-aarch64'
-- Labels: builder-debian9-test-aarch64
-- Job Prefix: builder-debian9-test-aarch64
-- Image: fdiotools/builder-debian9:test-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'builder-debian10-test-x86_64'
-- Labels: builder-debian10-test-x86_64
-- Job Prefix: builder-debian10-test-x86_64
-- Image: fdiotools/builder-debian10:test-x86_64
-- CPU: 14000
-- Memory: 14000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: builder
-
-#### Node 'builder-debian10-test-aarch64'
-- Labels: builder-debian10-test-aarch64
-- Job Prefix: builder-debian10-test-aarch64
-- Image: fdiotools/builder-debian10:test-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: builder
-
-#### Node 'csit_dut-ubuntu1804-sandbox-x86_64'
-- Labels: csit_dut-ubuntu1804-sandbox-x86_64
-- Job Prefix: csit_dut-ubuntu1804-sandbox-x86_64
-- Image: fdiotools/csit_dut-ubuntu1804:sandbox-x86_64
-- CPU: 10000
-- Memory: 18000
-- ${attr.cpu.arch}: amd64
-- ${node.class}: csit
-
-#### Node 'csit_dut-ubuntu1804-test-aarch64'
-- Labels: csit_dut-ubuntu1804-test-aarch64
-- Job Prefix: csit_dut-ubuntu1804-test-aarch64
-- Image: fdiotools/csit_dut-ubuntu1804:test-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: csitarm
-
-#### Node 'csit_shim-ubuntu1804-test-aarch64'
-- Labels: csit_shim-ubuntu1804-test-aarch64
-- Job Prefix: csit_shim-ubuntu1804-test-aarch64
-- Image: fdiotools/csit_shim-ubuntu1804:test-aarch64
-- CPU: 6000
-- Memory: 10000
-- ${attr.cpu.arch}: arm64
-- ${node.class}: csitarm
+++ /dev/null
-# lib_dnf.sh - Docker build script dnf library.
-# For import only.
-
-# Copyright (c) 2021 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Don't import more than once.
-if [ -n "$(alias lib_dnf_imported 2> /dev/null)" ] ; then
- return 0
-fi
-alias lib_dnf_imported="true"
-
-export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"}
-. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh"
-
-dump_dnf_package_list() {
- branchname="$(echo $branch | sed -e 's,/,_,')"
- dnf list installed > \
- "$DOCKER_BUILD_LOG_DIR/$FDIOTOOLS_IMAGENAME-$branchname-dnf-packages.log"
-}
-
-dnf_install_packages() {
- dnf install -y "$@"
-}
-
-generate_dnf_dockerfile_clean() {
- cat <<EOF >>"$DOCKERFILE"
-
-# Clean up
-RUN dbld_dump_build_logs.sh \\
- && rm -rf "/tmp/*" "/root/.ccache"
-EOF
-}
-
-generate_dnf_dockerfile_common() {
- cat <<EOF >>"$DOCKERFILE"
-
-# Build Environment Variables
-ENV FDIOTOOLS_IMAGE="$executor_image"
-ENV FDIOTOOLS_EXECUTOR_CLASS="$executor_class"
-ENV CIMAN_ROOT="$DOCKER_CIMAN_ROOT"
-ENV PATH="\$PATH:$DOCKER_CIMAN_ROOT/docker/scripts"
-
-# Copy-in build tree containing
-# ci-management, vpp, & csit git repos
-WORKDIR $DOCKER_BUILD_DIR
-COPY . .
-
-# Configure locales
-RUN LC_ALL=C.UTF-8 dnf install -y glibc-langpack-en
-ENV LANG="en_US.UTF-8" LANGUAGE="en_US" LC_ALL="en_US.UTF-8"
-
-# Install baseline packages (minimum build & utils).
-#
-# ci-management global-jjb requirements:
-# for lftools:
-# libxml2-devel
-# libxslt-devel
-# xmlstarlet
-# for lf-env.sh:
-# facter
-# from packer/provision/baseline.sh:
-# deltarpm
-# unzip
-# xz
-# python3-pip
-# git
-# git-review
-# perl-XML-XPath
-# make
-# wget
-#
-# TODO: Fix broken project requirement install targets
-# graphviz for 'make bootstrap-doxygen' (VPP)
-# doxygen for 'make doxygen' (VPP)
-# enchant for 'make docs' (VPP)
-# libffi-devel for python cffi install (Ubuntu20.04/VPP/aarch64)
-# libpcap-devel for python pypcap install (CSIT)
-# lapack-devel for python numpy/scipy (CSIT/aarch64)
-# openblas-devel for python numpy/scipy (CSIT/aarch64)
-# sshpass for CSIT
-#
-RUN dnf update -y \\
- && dnf install -y \\
- dnf-plugins-core \\
- epel-release \\
- && dnf config-manager --set-enabled \$(dnf repolist all 2> /dev/null | grep -i powertools | cut -d' ' -f1) --set-enabled epel \\
- && dnf repolist all \\
- && dnf clean all
-RUN dnf install -y \\
- dnf-utils \\
- bind-utils \\
- doxygen \\
- enchant \\
- emacs \\
- facter \\
- gdb \\
- git \\
- git-review \\
- graphviz \\
- iproute \\
- java-1.8.0-openjdk \\
- java-1.8.0-openjdk-devel \\
- jq \\
- lapack-devel \\
- libffi-devel \\
- libpcap-devel \\
- libxml2-devel \\
- libxslt-devel \\
- make \\
- mawk \\
- openblas-devel \\
- perl \\
- perl-XML-XPath \\
- python3-pip \\
- rsync \\
- ruby-devel \\
- sshpass \\
- sysstat \\
- sudo \\
- tree \\
- unzip \\
- vim \\
- wget \\
- xmlstarlet \\
- xz \\
- && curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | bash \\
- && curl -fsSL https://get.docker.com | sh \\
- && dnf clean all
-
-# Install OS packages for project branches
-#
-RUN dbld_vpp_install_packages.sh \\
- && dbld_csit_install_packages.sh \\
- && dnf clean all
-EOF
-}
-
-builder_generate_dnf_dockerfile() {
- local executor_class="$1"
- local executor_os_name="$2"
- local from_image="$3"
- local executor_image="$4"
-
- generate_dnf_dockerfile_common "$executor_class" "$executor_image"
- cat <<EOF >>"$DOCKERFILE"
-
-# Install LF-IT requirements
-ENV LF_VENV="/root/lf-venv"
-RUN dbld_lfit_requirements.sh \\
- && dnf clean all
-
-# Install packagecloud requirements
-RUN gem install package_cloud \\
- && curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | bash
-
-# CI Runtime Environment
-WORKDIR /
-ENV VPP_ZOMBIE_NOCHECK="1"
-ENV CCACHE_DIR="/scratch/ccache"
-ENV CCACHE_MAXSIZE="10G"
-EOF
- generate_dnf_dockerfile_clean
-}
-
-csit_generate_dnf_dockerfile() {
- echo_log "ERROR: ${FUNCNAME[0]} TBD!"
- exit 1
-}
-
-csit_dut_generate_dnf_dockerfile() {
- echo_log "ERROR: ${FUNCNAME[0]} TBD!"
- exit 1
-}
-
-csit_shim_generate_dnf_dockerfile() {
- echo_log "ERROR: ${FUNCNAME[0]} TBD!"
- exit 1
-}
-
-generate_dnf_dockerfile() {
- local executor_class="$1"
- local executor_os_name="$2"
- local from_image="$3"
- local executor_image="$4"
-
- cat <<EOF >"$DOCKERIGNOREFILE"
-**/__pycache__
-*.pyc
-EOF
- cat <<EOF >"$DOCKERFILE"
-FROM $from_image AS ${executor_class}-executor-image
-LABEL Description="FD.io CI '$executor_class' executor docker image for $executor_os_name/$OS_ARCH"
-LABEL Vendor="fd.io"
-LABEL Version="$DOCKER_TAG"
-EOF
- ${executor_class}_generate_dnf_dockerfile "$executor_class" \
- "$executor_os_name" "$from_image" "$executor_image"
-}
+++ /dev/null
-# lib_yum.sh - Docker build script yum library.
-# For import only.
-
-# Copyright (c) 2021 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Don't import more than once.
-if [ -n "$(alias lib_yum_imported 2> /dev/null)" ] ; then
- return 0
-fi
-alias lib_yum_imported="true"
-
-export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"}
-. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh"
-
-dump_yum_package_list() {
- branchname="$(echo $branch | sed -e 's,/,_,')"
- yum list installed > \
- "$DOCKER_BUILD_LOG_DIR/$FDIOTOOLS_IMAGENAME-$branchname-yum-packages.log"
-}
-
-yum_install_packages() {
- yum install -y "$@"
-}
-
-generate_yum_dockerfile_common() {
- local executor_class="$1"
- local executor_image="$2"
-
- cat <<EOF >>"$DOCKERFILE"
-
-# Create download dir to cache external tarballs
-WORKDIR $DOCKER_DOWNLOADS_DIR
-
-# Copy-in temporary build tree containing
-# ci-management, vpp, & csit git repos
-WORKDIR $DOCKER_BUILD_DIR
-COPY . .
-
-# Build Environment Variables
-ENV FDIOTOOLS_IMAGE=$executor_image
-ENV FDIOTOOLS_EXECUTOR_CLASS=$executor_class
-ENV CIMAN_ROOT="$DOCKER_CIMAN_ROOT"
-ENV PATH=$PATH:$DOCKER_CIMAN_ROOT/docker/scripts
-ENV LF_VENV="/root/lf-venv"
-
-# Configure locales
-ENV LANG=en_US.UTF-8 LANGUAGE=en_US LC_ALL=en_US.UTF-8
-
-# Install baseline packages (minimum build & utils).
-#
-# ci-management global-jjb requirements:
-# for lftools:
-# libxml2-devel
-# libxslt-devel
-# xmlstarlet
-# for lf-env.sh:
-# facter
-# from packer/provision/baseline.sh:
-# deltarpm
-# unzip
-# xz
-# python3-pip
-# git
-# git-review
-# perl-XML-XPath
-# make
-# wget
-#
-# TODO: Fix broken project requirement install targets
-# graphviz for 'make bootstrap-doxygen' (VPP)
-# doxygen for 'make doxygen' (VPP)
-# enchant for 'make docs' (VPP)
-# libffi-devel for python cffi install (Ubuntu20.04/VPP/aarch64)
-# libpcap-devel for python pypcap install (CSIT)
-# liblapack-devel for python numpy/scipy (CSIT/aarch64)
-# libopenblas-devel for python numpy/scipy (CSIT/aarch64)
-# sshpass for CSIT
-#
-RUN yum update -y \\
- && yum install -y epel-release \\
- && yum clean all
-RUN yum install -y \\
- yum-utils \\
- bind-utils \\
- deltarpm \\
- doxygen \\
- enchant \\
- emacs \\
- facter \\
- gdb \\
- git \\
- git-review \\
- graphviz \\
- iproute \\
- java-1.8.0-openjdk \\
- java-1.8.0-openjdk-devel \\
- jq \\
- libffi-devel \\
- liblapack-devel \\
- libopenblas-devel \\
- libpcap-devel \\
- libxml2-devel \\
- libxslt-devel \\
- make \\
- mawk \\
- perl \\
- perl-XML-XPath \\
- python3-pip \\
- rake \\
- ruby-devel \\
- sshpass \\
- sysstat \\
- sudo \\
- tree \\
- unzip \\
- vim \\
- wget \\
- xmlstarlet \\
- xz \\
- && curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | bash \\
- && curl -fsSL https://get.docker.com | sh \\
- && yum clean all
-
-# Install packages for all project branches
-#
-RUN dbld_vpp_install_packages.sh \\
- && dbld_csit_install_packages.sh \\
- && yum clean all
-EOF
-}
-
-generate_yum_dockerfile_clean() {
- cat <<EOF >>"$DOCKERFILE"
-
-# Clean up
-RUN dbld_dump_build_logs.sh \\
- && rm -rf "/tmp/*" "/root/.ccache"
-EOF
-}
-
-builder_generate_yum_dockerfile() {
- local executor_class="$1"
- local executor_os_name="$2"
- local from_image="$3"
- local executor_image="$4"
-
- generate_yum_dockerfile_common "$executor_class" "$executor_image"
- cat <<EOF >>"$DOCKERFILE"
-
-# Install LF-IT requirements
-ENV LF_VENV="/root/lf-venv"
-RUN dbld_lfit_requirements.sh \\
- && yum clean all
-
-# Install packagecloud requirements
-RUN gem install package_cloud \\
- && curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | bash
-
-# CI Runtime Environment
-WORKDIR /
-ENV VPP_ZOMBIE_NOCHECK="1"
-ENV CCACHE_DIR="/scratch/ccache"
-ENV CCACHE_MAXSIZE="10G"
-EOF
- generate_yum_dockerfile_clean
-}
-
-csit_generate_yum_dockerfile() {
- echo_log "ERROR: ${FUNCNAME[0]} TBD!"
- exit 1
-}
-
-csit_dut_generate_yum_dockerfile() {
- echo_log "ERROR: ${FUNCNAME[0]} TBD!"
- exit 1
-}
-
-csit_shim_generate_yum_dockerfile() {
- echo_log "ERROR: ${FUNCNAME[0]} TBD!"
- exit 1
-}
-
-generate_yum_dockerfile() {
- local executor_class="$1"
- local executor_os_name="$2"
- local from_image="$3"
- local executor_image="$4"
-
- cat <<EOF >"$DOCKERIGNOREFILE"
-**/__pycache__
-*.pyc
-EOF
- cat <<EOF >"$DOCKERFILE"
-FROM $from_image AS ${executor_class}-executor-image
-LABEL Description="FD.io CI '$executor_class' executor docker image for $executor_os_name/$OS_ARCH"
-LABEL Vendor="fd.io"
-LABEL Version="$DOCKER_TAG"
-EOF
- ${executor_class}_generate_yum_dockerfile "$executor_class" \
- "$executor_os_name" "$from_image" "$executor_image"
-}