From 9c1c24fbbc9ed8ad13e3a590e4d2242bf1cffd5e Mon Sep 17 00:00:00 2001 From: Dave Wallace Date: Thu, 11 Feb 2021 16:44:59 -0500 Subject: Use Ubuntu-20.04 for vpp-csit-* job executor images - refactor vpp-csit job names to conform to the vpp job nomenclature - add ubuntu-20.04 for CSIT image builder install requirements - fix executor class verification - add option to build_executor_docker_image.sh to dump Dockerfile without building image(s) - refactor Dockerfile generation to support executor classes - add support for csit_shim and csit_dut docker image generation from csit ansible repo - refactor docker installation - refactor locale support - remove old static csit Dockerfiles - remove unused jenkins labels - use csit-builder-{os}-prod-{executor_arch} label for vpp csit device test - run tox in csit_pip_cache() to include pylint requirements in python cache to avoid downloading from pypi during job execution. Change-Id: I5f4ffc587c6b8c43cb874dfd8c615ce56d3b97a4 Signed-off-by: Dave Wallace --- docker/scripts/lib_yum.sh | 192 ++++++++++++++++++++++++++++------------------ 1 file changed, 119 insertions(+), 73 deletions(-) (limited to 'docker/scripts/lib_yum.sh') diff --git a/docker/scripts/lib_yum.sh b/docker/scripts/lib_yum.sh index dfc34b097..b24b2299a 100644 --- a/docker/scripts/lib_yum.sh +++ b/docker/scripts/lib_yum.sh @@ -1,7 +1,7 @@ # lib_yum.sh - Docker build script yum library. # For import only. -# Copyright (c) 2020 Cisco and/or its affiliates. +# 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: @@ -18,10 +18,10 @@ if [ -n "$(alias lib_yum_imported 2> /dev/null)" ] ; then return 0 fi -alias lib_yum_imported=true +alias lib_yum_imported="true" export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"} -. $CIMAN_DOCKER_SCRIPTS/lib_common.sh +. "$CIMAN_DOCKER_SCRIPTS/lib_common.sh" dump_yum_package_list() { branchname="$(echo $branch | sed -e 's,/,_,')" @@ -30,82 +30,69 @@ dump_yum_package_list() { } yum_install_packages() { - yum install -y $@ + yum install -y "$@" } -yum_install_docker_os_package_dependancies() { - yum_install_packages yum-utils -} +generate_yum_dockerfile_common() { + local executor_class="$1" + local executor_image="$2" -yum_install_docker() { - yum-config-manager --add-repo \ - https://download.docker.com/linux/${OS_ID}/docker-ce.repo - yum-config-manager --enablerepo=docker-ce-stable - yum_install_packages docker-ce docker-ce-cli containerd.io -} + cat <>"$DOCKERFILE" -generate_yum_dockerfile() { - local executor_os_name=$1 - local from_image=$2 - local executor_image=$3 - local from_image_os_id="$(echo $from_image | cut -d: -f2)" - - cat <$DOCKERFILE -FROM $from_image AS executor-image -LABEL Description="FD.io CI executor docker image for $executor_os_name/$OS_ARCH" -LABEL Vendor="fd.io" -LABEL Version="$DOCKER_TAG" +# 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 LC_ALL=en_US.UTF-8 +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" -# Copy-in build tree containing -# ci-management, vpp, & csit git repos -WORKDIR $DOCKER_BUILD_DIR -COPY . . +# 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 +# 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 +# deltarpm +# unzip +# xz +# python3-pip +# git +# git-review +# perl-XML-XPath +# make +# wget # -# TODO: Fix broken project requirement install targets +# 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 # -# 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 update -y \\ - && yum install -y \\ + && yum install -y epel-release \\ + && yum clean all +RUN yum install -y \\ yum-utils \\ + bind-utils \\ deltarpm \\ doxygen \\ enchant \\ @@ -127,7 +114,6 @@ RUN yum update -y \\ libxslt-devel \\ make \\ mawk \\ - mock \\ perl \\ perl-XML-XPath \\ python3-pip \\ @@ -141,25 +127,85 @@ RUN yum update -y \\ wget \\ xmlstarlet \\ xz \\ - && yum clean all + && 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 yum update -y \\ - && dbld_install_docker.sh \\ - && dbld_vpp_install_packages.sh \\ - && dbld_csit_install_packages.sh \\ - && dbld_lfit_requirements.sh \\ - && yum clean all +RUN dbld_vpp_install_packages.sh \\ + && dbld_csit_install_packages.sh \\ + && yum clean all +EOF +} -# CI Runtime Environment -WORKDIR / -ENV VPP_ZOMBIE_NOCHECK=1 -RUN gem install package_cloud \\ - && curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | sudo bash +generate_yum_dockerfile_clean() { + cat <>"$DOCKERFILE" # Clean up RUN dbld_dump_build_logs.sh \\ - && rm -rf /tmp/* + && rm -rf "/tmp/*" +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 <>"$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" +# TODO: Mount ccache volume into docker container, then remove this. +ENV CCACHE_DISABLE="1" +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 <"$DOCKERIGNOREFILE" +**/__pycache__ +*.pyc +EOF + cat <"$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" } -- cgit 1.2.3-korg