X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fbash%2Ffunction%2Fartifacts.sh;h=15a4dd2fe1cc114c0dfc1f22b582132fa0b31b1e;hp=fe300d164d88165a2d251728674bd14ce3e1dfe5;hb=6da5a6920171682bd5bf6a77517bedfef91cbd0e;hpb=6e96fee163eb9622bf39ed48743db86f7bcf743a diff --git a/resources/libraries/bash/function/artifacts.sh b/resources/libraries/bash/function/artifacts.sh index fe300d164d..15a4dd2fe1 100644 --- a/resources/libraries/bash/function/artifacts.sh +++ b/resources/libraries/bash/function/artifacts.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash -# Copyright (c) 2019 Cisco and/or its affiliates. -# Copyright (c) 2019 PANTHEON.tech and/or its affiliates. +# Copyright (c) 2021 Cisco and/or its affiliates. +# Copyright (c) 2021 PANTHEON.tech 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: @@ -17,12 +17,17 @@ set -exuo pipefail function download_artifacts () { - # Get and/or install VPP artifacts from packagecloud.io. + + # Download or install VPP artifacts from packagecloud.io. # # Variables read: # - CSIT_DIR - Path to existing root of local CSIT git repository. # Variables set: # - REPO_URL - FD.io Packagecloud repository. + # Functions conditionally called (see their documentation for side effects): + # - download_ubuntu_artifacts + # - download_centos_artifacts + # - download_opensuse_artifacts set -exuo pipefail @@ -51,16 +56,18 @@ function download_artifacts () { } function download_ubuntu_artifacts () { - # Get and/or install Ubuntu VPP artifacts from packagecloud.io. + + # Download or install Ubuntu VPP artifacts from packagecloud.io. # # Variables read: # - REPO_URL - FD.io Packagecloud repository. # - VPP_VERSION - VPP version. - # - INSTALL - If install packages or download only. Default: download + # - INSTALL - Whether install packages (if set to "true") or download only. + # Default: "false". set -exuo pipefail - curl -s "${REPO_URL}"/script.deb.sh | sudo bash || { + curl -s "${REPO_URL}"/script.deb.sh | sudo -E bash || { die "Packagecloud FD.io repo fetch failed." } # If version is set we will add suffix. @@ -79,23 +86,25 @@ function download_ubuntu_artifacts () { repository installation was not successful." fi - packages=$(apt-cache -o Dir::Etc::SourceList=${apt_fdio_repo_file} \ + pkgs=$(apt-cache -o Dir::Etc::SourceList=${apt_fdio_repo_file} \ -o Dir::Etc::SourceParts=${apt_fdio_repo_file} dumpavail \ - | grep Package: | cut -d " " -f 2) || { + | grep Package: | cut -d " " -f 2 | grep vpp) || { die "Retrieval of available VPP packages failed." } if [ -z "${VPP_VERSION-}" ]; then # If version is not specified, find out the most recent version - VPP_VERSION=$(apt-cache --no-all-versions show vpp | grep Version: | \ + VPP_VERSION=$(apt-cache -o Dir::Etc::SourceList=${apt_fdio_repo_file} \ + -o Dir::Etc::SourceParts=${apt_fdio_repo_file} \ + --no-all-versions show vpp | grep Version: | \ cut -d " " -f 2) || { die "Retrieval of most recent VPP version failed." } fi set +x - for package in ${packages}; do + for package in ${pkgs}; do # Filter packages with given version - pkg_info=$(apt-cache show ${package}) || { + pkg_info=$(apt-cache show -- ${package}) || { die "apt-cache show on ${package} failed." } ver=$(echo ${pkg_info} | grep -o "Version: ${VPP_VERSION-}[^ ]*" | \ @@ -110,7 +119,7 @@ function download_ubuntu_artifacts () { done set -x - if [ "${INSTALL:-false}" = true ]; then + if [[ "${INSTALL:-false}" == "true" ]]; then sudo apt-get -y install "${artifacts[@]}" || { die "Install VPP artifacts failed." } @@ -122,66 +131,70 @@ function download_ubuntu_artifacts () { } function download_centos_artifacts () { - # Get and/or install CentOS VPP artifacts from packagecloud.io. + + # Download or install CentOS VPP artifacts from packagecloud.io. # # Variables read: # - REPO_URL - FD.io Packagecloud repository. # - VPP_VERSION - VPP version. - # - INSTALL - If install packages or download only. Default: download + # - INSTALL - Whether install packages (if set to "true") or download only. + # Default: "false". set -exuo pipefail - curl -s "${REPO_URL}"/script.rpm.sh | sudo bash || { + curl -s "${REPO_URL}"/script.rpm.sh | sudo -E bash || { die "Packagecloud FD.io repo fetch failed." } # If version is set we will add suffix. artifacts=() - packages=(vpp vpp-selinux-policy vpp-devel vpp-lib vpp-plugins vpp-api-python) + pkgs=(vpp vpp-selinux-policy vpp-devel vpp-lib vpp-plugins vpp-api-python) if [ -z "${VPP_VERSION-}" ]; then - artifacts+=(${packages[@]}) + artifs+=(${pkgs[@]}) else - artifacts+=(${packages[@]/%/-${VPP_VERSION-}}) + artifs+=(${pkgs[@]/%/-${VPP_VERSION-}}) fi - if [ "${INSTALL:-false}" = true ]; then - sudo yum -y install "${artifacts[@]}" || { + if [[ "${INSTALL:-false}" == "true" ]]; then + sudo yum -y install "${artifs[@]}" || { die "Install VPP artifact failed." } else - sudo yum -y install --downloadonly --downloaddir=. "${artifacts[@]}" || { + sudo yum -y install --downloadonly --downloaddir=. "${artifs[@]}" || { die "Download VPP artifacts failed." } fi } function download_opensuse_artifacts () { - # Get and/or install OpenSuSE VPP artifacts from packagecloud.io. + + # Download or install OpenSuSE VPP artifacts from packagecloud.io. # # Variables read: # - REPO_URL - FD.io Packagecloud repository. # - VPP_VERSION - VPP version. - # - INSTALL - If install packages or download only. Default: download + # - INSTALL - Whether install packages (if set to "true") or download only. + # Default: "false". set -exuo pipefail - curl -s "${REPO_URL}"/script.rpm.sh | sudo bash || { + curl -s "${REPO_URL}"/script.rpm.sh | sudo -E bash || { die "Packagecloud FD.io repo fetch failed." } # If version is set we will add suffix. - artifacts=() - packages=(vpp vpp-devel vpp-lib vpp-plugins libvpp0) + artifs=() + pkgs=(vpp vpp-devel vpp-lib vpp-plugins libvpp0) if [ -z "${VPP_VERSION-}" ]; then - artifacts+=(${packages[@]}) + artifs+=(${pkgs[@]}) else - artifacts+=(${packages[@]/%/-${VPP_VERSION-}}) + artifs+=(${pkgs[@]/%/-${VPP_VERSION-}}) fi - if [ "${INSTALL:-false}" = true ]; then - sudo yum -y install "${artifacts[@]}" || { + if [[ "${INSTALL:-false}" == "true" ]]; then + sudo yum -y install "${artifs[@]}" || { die "Install VPP artifact failed." } else - sudo yum -y install --downloadonly --downloaddir=. "${artifacts[@]}" || { + sudo yum -y install --downloadonly --downloaddir=. "${artifs[@]}" || { die "Download VPP artifacts failed." } fi