summaryrefslogtreecommitdiffstats
path: root/docker/scripts
diff options
context:
space:
mode:
authorDave Wallace <dwallacelf@gmail.com>2024-08-05 22:34:48 -0400
committerDave Wallace <dwallacelf@gmail.com>2024-08-28 10:40:55 -0400
commit58f7df10360c6b95e9fa08c33cf4df7f03927bf3 (patch)
tree8f43c984b8f685f0191739a13ad83310be28f936 /docker/scripts
parent8e4d2c22cfa7d7c0520b17a9d53df9132b57e190 (diff)
feat(docker builder): add ubuntu 24.04 support
- Update docker builder scripts to build ubuntu 24.04 executor images for ubuntu2404 jobs - Utilize python venv as much as possible to avoid using 'pip3 install --break-system-packages' option unless absolutely necessary. - Install python3-virtualenv package for CSIT jobs - Add vpp ubuntu-24.04 non-voting pre-production jobs Change-Id: Id373ad8fbdee5a257b33762cf0cab167f7f3b9e7 Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Diffstat (limited to 'docker/scripts')
-rwxr-xr-xdocker/scripts/dbld_csit_install_packages.sh13
-rwxr-xr-xdocker/scripts/dbld_lfit_requirements.sh8
-rw-r--r--docker/scripts/lib_apt.sh20
-rw-r--r--docker/scripts/lib_common.sh8
-rw-r--r--docker/scripts/lib_csit.sh33
-rw-r--r--docker/scripts/lib_vpp.sh1
6 files changed, 50 insertions, 33 deletions
diff --git a/docker/scripts/dbld_csit_install_packages.sh b/docker/scripts/dbld_csit_install_packages.sh
index e303ce28e..7f48d0751 100755
--- a/docker/scripts/dbld_csit_install_packages.sh
+++ b/docker/scripts/dbld_csit_install_packages.sh
@@ -1,6 +1,6 @@
#! /bin/bash
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
@@ -16,8 +16,7 @@
set -euxo pipefail
export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"}
-. "$CIMAN_DOCKER_SCRIPTS/lib_csit.sh"
-. "$CIMAN_DOCKER_SCRIPTS/lib_vpp.sh"
+source "$CIMAN_DOCKER_SCRIPTS/lib_csit.sh"
must_be_run_in_docker_build
@@ -33,8 +32,11 @@ else
echo_log "Starting $(basename $0)"
fi
+python3 -m venv "$DOCKER_BUILD_VENV_DIR"
+source "$DOCKER_BUILD_VENV_DIR"/bin/activate
+
do_git_config csit
-for vpp_branch in ${VPP_BRANCHES[$OS_NAME]} ; do
+for vpp_branch in ${CSIT_VPP_BRANCHES[$OS_NAME]} ; do
# Returns checked out branch in csit_branch
csit_checkout_branch_for_vpp "$vpp_branch"
@@ -44,8 +46,10 @@ for vpp_branch in ${VPP_BRANCHES[$OS_NAME]} ; do
# Install/cache python packages
csit_install_hugo "$csit_branch"
+ deactivate
# Install/cache python packages
csit_pip_cache "$csit_branch"
+ source "$DOCKER_BUILD_VENV_DIR"/bin/activate
done
# Install csit OS packages
@@ -57,4 +61,5 @@ csit_install_hugo "master"
# Install/cache python packages
csit_pip_cache "master"
+deactivate
echo_log -e "Completed $(basename $0)!\n\n=========="
diff --git a/docker/scripts/dbld_lfit_requirements.sh b/docker/scripts/dbld_lfit_requirements.sh
index ca54edd89..b28fc0e44 100755
--- a/docker/scripts/dbld_lfit_requirements.sh
+++ b/docker/scripts/dbld_lfit_requirements.sh
@@ -1,6 +1,6 @@
#! /bin/bash
-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
@@ -48,7 +48,11 @@ lf-activate-venv() {
EOF
# Install lftools & boto3 for log / artifact upload.
-python3 -m pip install boto3
+pip_options=""
+if [ "$OS_CODENAME" = "noble" ] ; then
+ pip_options=" --break-system-packages"
+fi
+python3 -m pip install$pip_options boto3
mkdir -p "$LF_VENV"
OLD_PATH="$PATH"
python3 -m venv "$LF_VENV"
diff --git a/docker/scripts/lib_apt.sh b/docker/scripts/lib_apt.sh
index f8a6f67be..d5ec1589f 100644
--- a/docker/scripts/lib_apt.sh
+++ b/docker/scripts/lib_apt.sh
@@ -41,7 +41,6 @@ apt_install_packages() {
generate_apt_dockerfile_common() {
local executor_class="$1"
local executor_image="$2"
- local install_golang="$3"
local dpkg_arch="$(dpkg --print-architecture)"
cat <<EOF >>"$DOCKERFILE"
@@ -139,6 +138,7 @@ RUN apt-get update -qq \\
make \\
python3-pip \\
python3-venv \\
+ python3-virtualenv \\
rsync \\
ruby-dev \\
software-properties-common \\
@@ -163,9 +163,7 @@ RUN wget https://releases.hashicorp.com/terraform/1.7.3/terraform_1.7.3_linux_$d
&& rm -f terraform_1.7.3_linux_$dpkg_arch.zip
EOF
- if [ "$install_golang" = "true" ] ; then
- generate_apt_dockerfile_install_golang "1.21.11"
- fi
+ generate_apt_dockerfile_install_golang
cat <<EOF >>"$DOCKERFILE"
@@ -190,7 +188,6 @@ EOF
}
generate_apt_dockerfile_install_golang() {
- local go_version="$1"
local go_tarball_arch="amd64"
if [ "$OS_ARCH" = "aarch64" ] ; then
@@ -205,9 +202,9 @@ ENV GOPATH /go
ENV GOROOT /usr/local/go
ENV PATH \$GOPATH/bin:/usr/local/go/bin:\$PATH
RUN rm -rf /usr/local/go /usr/bin/go \\
- && wget -P /tmp "https://go.dev/dl/go${go_version}.linux-${go_tarball_arch}.tar.gz" \\
- && tar -C /usr/local -xzf "/tmp/go${go_version}.linux-${go_tarball_arch}.tar.gz" \\
- && rm "/tmp/go${go_version}.linux-${go_tarball_arch}.tar.gz" \\
+ && wget -P /tmp "https://go.dev/dl/go${DOCKER_GOLANG_VERSION}.linux-${go_tarball_arch}.tar.gz" \\
+ && tar -C /usr/local -xzf "/tmp/go${DOCKER_GOLANG_VERSION}.linux-${go_tarball_arch}.tar.gz" \\
+ && rm "/tmp/go${DOCKER_GOLANG_VERSION}.linux-${go_tarball_arch}.tar.gz" \\
&& ln -s /usr/local/go/bin/go /usr/bin/go \\
&& echo -n "\nGOPATH=\$GOPATH\nGOROOT=\$GOROOT" | tee -a /etc/environment \\
&& mkdir -p "\$GOPATH/src" "\$GOPATH/bin" && chmod -R 777 "\$GOPATH"
@@ -219,10 +216,9 @@ builder_generate_apt_dockerfile() {
local executor_class="$1"
local executor_os_name="$2"
local executor_image="$3"
- local install_golang="$4"
local vpp_install_skip_sysctl_envvar="";
- generate_apt_dockerfile_common "$executor_class" "$executor_image" "$install_golang"
+ generate_apt_dockerfile_common "$executor_class" "$executor_image"
csit_builder_generate_docker_build_files
cat <<EOF >>"$DOCKERFILE"
@@ -375,13 +371,11 @@ generate_apt_dockerfile() {
local executor_os_name="$2"
local from_image="$3"
local executor_image="$4"
- local install_golang="false"
local is_dind_image="false"
# TODO: Enable HST on AARCH64 when supported in vpp/extras/hs-test
if [ "$from_image" = "$HST_FROM_IMAGE" ] ; then
from_image="$DIND_FROM_IMAGE"
- install_golang="true"
is_dind_image="true"
fi
@@ -403,5 +397,5 @@ EOF
fi
"${executor_class}"_generate_apt_dockerfile "$executor_class" \
- "$executor_os_name" "$executor_image" "$install_golang"
+ "$executor_os_name" "$executor_image"
}
diff --git a/docker/scripts/lib_common.sh b/docker/scripts/lib_common.sh
index 166b06fbf..54d291e3f 100644
--- a/docker/scripts/lib_common.sh
+++ b/docker/scripts/lib_common.sh
@@ -1,7 +1,7 @@
# lib_common.sh - Docker build script common library.
# For import only.
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
@@ -153,8 +153,8 @@ export EXECUTOR_CLASS_ARCH="$EXECUTOR_DEFAULT_CLASS-$OS_ARCH"
export EXECUTOR_CLASSES="$EXECUTOR_DEFAULT_CLASS csit_dut csit_shim"
export EXECUTOR_ARCHS="aarch64 x86_64"
declare -A EXECUTOR_CLASS_ARCH_OS_NAMES
-EXECUTOR_CLASS_ARCH_OS_NAMES["builder-aarch64"]="ubuntu-20.04 ubuntu-22.04"
-EXECUTOR_CLASS_ARCH_OS_NAMES["builder-x86_64"]="debian-11 ubuntu-20.04 ubuntu-22.04"
+EXECUTOR_CLASS_ARCH_OS_NAMES["builder-aarch64"]="ubuntu-20.04 ubuntu-22.04 ubuntu-24.04"
+EXECUTOR_CLASS_ARCH_OS_NAMES["builder-x86_64"]="debian-11 ubuntu-20.04 ubuntu-22.04 ubuntu-24.04"
EXECUTOR_CLASS_ARCH_OS_NAMES["csit_dut-aarch64"]="ubuntu-22.04"
EXECUTOR_CLASS_ARCH_OS_NAMES["csit_dut-x86_64"]="ubuntu-22.04"
EXECUTOR_CLASS_ARCH_OS_NAMES["csit_shim-aarch64"]="ubuntu-22.04"
@@ -226,6 +226,7 @@ executor_verify_os_name() {
# Docker variables
export DOCKER_DATE=${DOCKER_DATE:-"$(date -u +%Y_%m_%d_%H%M%S_UTC)"}
export DOCKER_BUILD_DIR="/scratch/docker-build"
+export DOCKER_BUILD_VENV_DIR="$DOCKER_BUILD_DIR"/venv
export DOCKER_CIMAN_ROOT="$DOCKER_BUILD_DIR/ci-management"
export DOCKERFILE="$DOCKER_BUILD_DIR/Dockerfile"
export DOCKERIGNOREFILE="$DOCKER_BUILD_DIR/.dockerignore"
@@ -236,6 +237,7 @@ export DOCKER_VPP_DL_CACHE_DIR="$DOCKER_BUILD_DIR"/vpp_ext_deps_downloads
export DOCKER_CSIT_DIR="$DOCKER_BUILD_DIR/csit"
export DOCKER_DOWNLOADS_DIR="/root/Downloads"
export DOCKER_BUILD_FILES_DIR="$DOCKER_BUILD_DIR/files"
+export DOCKER_GOLANG_VERSION="1.22.5"
docker_build_setup_ciman() {
if [ "$(dirname $CIMAN_ROOT)" != "$DOCKER_BUILD_DIR" ] ; then
diff --git a/docker/scripts/lib_csit.sh b/docker/scripts/lib_csit.sh
index 0499cbfc4..a4d543666 100644
--- a/docker/scripts/lib_csit.sh
+++ b/docker/scripts/lib_csit.sh
@@ -1,7 +1,7 @@
# lib_csit.sh - Docker build script CSIT library.
# For import only.
-# Copyright (c) 2023 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
@@ -24,6 +24,20 @@ export CIMAN_DOCKER_SCRIPTS="${CIMAN_DOCKER_SCRIPTS:-$(dirname ${BASH_SOURCE[0]}
. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh"
. "$CIMAN_DOCKER_SCRIPTS/lib_apt.sh"
+# Branches must be listed in chronological order -- oldest stable branch
+# first and master last.
+#
+# Note: CI Jobs for each architecture are maintained in
+# .../ci-management/jjb/vpp/vpp.yaml
+# All OS's and branches are included in the 'os' and 'stream'
+# definitions respectively, then the exclude list maintained
+# to create an enumerated set of jobs jobs that match the
+# definitions here.
+declare -A CSIT_VPP_BRANCHES
+CSIT_VPP_BRANCHES["ubuntu-22.04"]="stable/2406 master"
+CSIT_VPP_BRANCHES["ubuntu-24.04"]="master"
+export CSIT_VPP_BRANCHES
+
CSIT_SUPPORTED_EXECUTOR_CLASSES="builder csit_dut"
csit_supported_executor_class() {
if ! grep -q "${1:-}" <<< "$CSIT_SUPPORTED_EXECUTOR_CLASSES" ; then
@@ -35,6 +49,7 @@ csit_supported_executor_class() {
csit_supported_os() {
case "$1" in
ubuntu-22.04) return 0 ;;
+ ubuntu-24.04) return 0 ;;
*) ;;
esac
return 1
@@ -67,7 +82,7 @@ csit_install_packages() {
bld_log="${bld_log}-$branchname-csit_install_packages-bld.log"
git clean -qfdx
- python3 -m pip install pyyaml
+ pip install pyyaml
local exclude_roles="-e calibration -e kernel -e mellanox -e nomad -e consul -e aws -e vpp"
[ "$OS_ARCH" = "aarch64" ] && exclude_roles="$exclude_roles -e iperf"
@@ -75,9 +90,9 @@ csit_install_packages() {
# Not in double quotes to let bash remove newline characters
local yaml_files
yaml_files="$(grep -r packages_by $csit_ansible_dir | cut -d: -f1 | sort -u | grep -v $exclude_roles)"
- packages="$(dbld_csit_find_ansible_packages.py --$OS_ID --$OS_ARCH $yaml_files) | grep -v "$OS_CODENAME")"
- packages="${packages/jammy /}"
+ packages="$(dbld_csit_find_ansible_packages.py --$OS_ID --$OS_ARCH $yaml_files)"
packages="${packages/focal /}"
+ packages="${packages/noble /}"
packages="${packages/libmbedcrypto1/libmbedcrypto3}"
packages="${packages/libmbedtls10/libmbedtls12}"
packages="$(echo ${packages//python\-/python3\-} | tr ' ' '\n' | sort -u | xargs)"
@@ -117,7 +132,6 @@ csit_install_hugo() {
git clean -qfdx
source "$csit_bash_function_dir"/hugo.sh
- go_install 2>&1 | tee -a "$bld_log"
hugo_install 2>&1 | tee -a "$bld_log"
else
@@ -150,14 +164,11 @@ csit_pip_cache() {
rm -rf "$PYTHONPATH/env"
# Activate / install CSIT python virtualenv ($CSIT_DIR/requirements.txt)
- local common_sh="$csit_bash_function_dir/common.sh"
- # shellcheck disable=1090
- source "$common_sh"
- activate_virtualenv "${CSIT_DIR}" "${CSIT_DIR}/requirements.txt" 2>&1 | tee -a "$bld_log"
+ source "$csit_bash_function_dir"/common.sh
+ activate_virtualenv "${CSIT_DIR}" "${CSIT_DIR}"/requirements.txt 2>&1 | tee -a "$bld_log"
# Install tox python requirements
- activate_virtualenv "${CSIT_DIR}" "${CSIT_DIR}/tox-requirements.txt" 2>&1 |\
- tee -a "$bld_log"
+ activate_virtualenv "${CSIT_DIR}" "${CSIT_DIR}"/tox-requirements.txt 2>&1 | tee -a "$bld_log"
# Clean up virtualenv directories
git checkout -q -- .
diff --git a/docker/scripts/lib_vpp.sh b/docker/scripts/lib_vpp.sh
index 4bf8dab88..ff4ebd47f 100644
--- a/docker/scripts/lib_vpp.sh
+++ b/docker/scripts/lib_vpp.sh
@@ -125,4 +125,5 @@ declare -A VPP_BRANCHES
VPP_BRANCHES["debian-11"]="stable/2402 stable/2406 master"
VPP_BRANCHES["ubuntu-20.04"]="stable/2402 stable/2406 master"
VPP_BRANCHES["ubuntu-22.04"]="stable/2402 stable/2406 master"
+VPP_BRANCHES["ubuntu-24.04"]="master"
export VPP_BRANCHES