diff options
Diffstat (limited to 'ci')
-rwxr-xr-x | ci/build.sh | 74 | ||||
-rwxr-xr-x | ci/clean.sh | 19 | ||||
-rwxr-xr-x | ci/deploy.sh | 32 | ||||
-rwxr-xr-x | ci/dev_dep_check.sh | 19 | ||||
-rwxr-xr-x | ci/run_smoke_tests.sh | 7 | ||||
-rwxr-xr-x | ci/util.sh | 19 |
6 files changed, 138 insertions, 32 deletions
diff --git a/ci/build.sh b/ci/build.sh index f1333ce4..3531a657 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -8,17 +8,17 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -set -e +set -xe display_usage () { cat << EOF $0 Builds the Apex OPNFV Deployment Toolchain -usage: $0 [ -c cache_dir ] -r release_name [ --iso | --rpms ] +usage: $0 [ -c cache_dest_dir ] -r release_name [ --iso | --rpms ] OPTIONS: - -c cache destination - directory of cached files, defaults to ./cache + -c cache destination - destination to save tarball of cache -r release name/version of the build result --iso build the iso (implies RPMs too) --rpms build the rpms @@ -30,12 +30,13 @@ build -c file:///tmp/cache -r dev123 EOF } -BUILD_BASE=$(readlink -e ../build/) +APEX_ROOT=$(dirname $(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)) CACHE_DEST="" -CACHE_DIR="cache" +CACHE_DIR="${APEX_ROOT}/.cache" CACHE_NAME="apex-cache" MAKE_TARGETS="images" REQUIRED_PKGS="rpm-build python-docutils" +RELEASE_RPM="" parse_cmdline() { while [ "${1:0:1}" = "-" ] @@ -45,7 +46,7 @@ parse_cmdline() { display_usage exit 0 ;; - -c|--cache-dir) + -c|--cache-dest) CACHE_DEST=${2} shift 2 ;; @@ -63,11 +64,21 @@ parse_cmdline() { echo "Buiding opnfv-apex RPMs" shift 1 ;; + --release-rpm ) + RELEASE_RPM=" release-rpm" + echo "Buiding opnfv-apex RPMs" + shift 1 + ;; --debug ) debug="TRUE" echo "Enable debug output" shift 1 ;; + --build-cache ) + MAKE_TARGETS="" + echo "Building Cache" + shift 1 + ;; *) display_usage exit 1 @@ -78,11 +89,26 @@ parse_cmdline() { } run_make() { - make $MAKE_ARGS -C ${BUILD_BASE} $1 + make $MAKE_ARGS -C ${BUILD_DIRECTORY} $1 } parse_cmdline "$@" +if [ -z "$BUILD_DIRECTORY" ]; then + if [ -d "${APEX_ROOT}/build" ]; then + BUILD_DIRECTORY="${APEX_ROOT}/build" + else + echo "Cannot find build directory, please provide BUILD_DIRECTORY environment variable...exiting" + exit 1 + fi +elif [ ! -d "$BUILD_DIRECTORY" ]; then + echo "Provided build directory is invalid: ${BUILD_DIRECTORY} ...exiting" + exit 1 +fi + +# Add release rpm to make targets if defined +MAKE_TARGETS+=$RELEASE_RPM + # Install build dependencies for pkg in $REQUIRED_PKGS; do if ! rpm -q $pkg > /dev/null; then @@ -95,21 +121,29 @@ done if [ -n "$RELEASE" ]; then MAKE_ARGS+="RELEASE=$RELEASE "; fi -# Get the Old Cache -if [ -n "$CACHE_DEST" ]; then +# Get the Old Cache and build new cache history file +if [[ -n "$CACHE_DEST" && -n "$MAKE_TARGETS" ]]; then echo "Retrieving Cache" if [ -f $CACHE_DEST/${CACHE_NAME}.tgz ]; then echo "Cache found at ${CACHE_DEST}/${CACHE_NAME}.tgz" - rm -rf $BUILD_BASE/$CACHE_DIR - echo "Unpacking Cache to $BUILD_BASE" - tar -xvzf $CACHE_DEST/${CACHE_NAME}.tgz -C ${BUILD_BASE} + rm -rf $CACHE_DIR + mkdir $CACHE_DIR + echo "Unpacking Cache to ${CACHE_DIR}" + tar -xvzf ${CACHE_DEST}/${CACHE_NAME}.tgz -C ${CACHE_DIR} echo "Cache contents after unpack:" - ls -l $BUILD_BASE/$CACHE_DIR - elif [ ! -d $BUILD_BASE/$CACHE_DIR ]; then - mkdir $BUILD_BASE/$CACHE_DIR + ls -al ${CACHE_DIR} + else + echo "No Cache Found" fi fi +# Ensure the build cache dir exists +if [ ! -d "$CACHE_DIR" ]; then + rm -rf ${CACHE_DIR} + echo "Creating Build Cache Directory" + mkdir ${CACHE_DIR} +fi + # Conditionally execute RPM build checks if the specs change and target is not rpm or iso if [[ "$MAKE_TARGETS" == "images" ]]; then commit_file_list=$(git show --pretty="format:" --name-status) @@ -123,6 +157,9 @@ if [[ "$MAKE_TARGETS" == "images" ]]; then if [[ $commit_file_list == *build/rpm_specs/opnfv-apex-undercloud.spec* ]]; then MAKE_TARGETS+=" undercloud-rpm-check" fi + if [[ $commit_file_list == *build/rpm_specs/opnfv-apex-release.spec* ]]; then + MAKE_TARGETS+=" release-rpm-check" + fi if [[ $commit_file_list == *build/rpm_specs/opnfv-apex-common.spec* ]]; then MAKE_TARGETS+=" common-rpm-check" fi @@ -154,8 +191,11 @@ echo "Build Complete" # Build new Cache if [ -n "$CACHE_DEST" ]; then echo "Building Cache" - if [ ! -d $CACHE_DEST ]; then mkdir -p $CACHE_DEST; fi - tar --atime-preserve --dereference -C $BUILD_BASE -caf $BUILD_BASE/${CACHE_NAME}.tgz $CACHE_DIR -C ${CACHE_DEST}/ + ls -lah ${CACHE_DIR} + # ensure the destination exists + mkdir -p ${CACHE_DEST} + # roll the cache tarball + tar --atime-preserve --dereference -caf ${CACHE_DEST}/${CACHE_NAME}.tgz -C ${CACHE_DIR} . if [ -f "${CACHE_DEST}/${CACHE_NAME}.tgz" ]; then echo "Cache Build Complete" else diff --git a/ci/clean.sh b/ci/clean.sh index 1e5e320e..262e74bf 100755 --- a/ci/clean.sh +++ b/ci/clean.sh @@ -12,10 +12,23 @@ #author: Dan Radez (dradez@redhat.com) #author: Tim Rozet (trozet@redhat.com) +# Backwards compat for old ENV Vars +# Remove in E Release +if [ -n "$CONFIG" ]; then + echo -e "${red}WARNING: ENV var CONFIG is Deprecated, please unset CONFIG and export BASE in its place${reset}" + echo -e "${red}WARNING: CONFIG will be removed in E${reset}" + BASE=$CONFIG +fi +if [ -n "$RESOURCES" ]; then + echo -e "${red}WARNING: ENV var RESOURCES is Deprecated, please unset RESOURCES and export IMAGES in its place${reset}" + echo -e "${red}WARNING: RESOURCES will be removed in E${reset}" + IMAGES=$RESOURCES +fi + # Use default if no param passed -CONFIG=${CONFIG:-'/var/opt/opnfv'} -RESOURCES=${RESOURCES:-"$CONFIG/images"} -LIB=${LIB:-"$CONFIG/lib"} +BASE=${BASE:-'/var/opt/opnfv'} +IMAGES=${IMAGES:-"$BASE/images"} +LIB=${LIB:-"$BASE/lib"} reset=$(tput sgr0 || echo "") blue=$(tput setaf 4 || echo "") red=$(tput setaf 1 || echo "") diff --git a/ci/deploy.sh b/ci/deploy.sh index 482e134b..b55f47ee 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -24,6 +24,7 @@ green=$(tput setaf 2 || echo "") interactive="FALSE" ping_site="8.8.8.8" +dnslookup_site="www.google.com" post_config="TRUE" debug="FALSE" @@ -36,13 +37,27 @@ declare -A deploy_options_array declare -a performance_options declare -A NET_MAP +# Backwards compat for old ENV Vars +# Remove in E Release +if [ -n "$CONFIG" ]; then + echo -e "${red}WARNING: ENV var CONFIG is Deprecated, please unset CONFIG and export BASE in its place${reset}" + echo -e "${red}WARNING: CONFIG will be removed in E${reset}" + BASE=$CONFIG +fi +if [ -n "$RESOURCES" ]; then + echo -e "${red}WARNING: ENV var RESOURCES is Deprecated, please unset RESOURCES and export IMAGES in its place${reset}" + echo -e "${red}WARNING: RESOURCES will be removed in E${reset}" + IMAGES=$RESOURCES +fi + APEX_TMP_DIR=$(python3 -c "import tempfile; print(tempfile.mkdtemp())") SSH_OPTIONS=(-o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o LogLevel=error) DEPLOY_OPTIONS="" -CONFIG=${CONFIG:-'/var/opt/opnfv'} -RESOURCES=${RESOURCES:-"$CONFIG/images"} -LIB=${LIB:-"$CONFIG/lib"} +BASE=${BASE:-'/var/opt/opnfv'} +IMAGES=${IMAGES:-"$BASE/images"} +LIB=${LIB:-"$BASE/lib"} OPNFV_NETWORK_TYPES="admin tenant external storage api" +ENV_FILE="opnfv-environment.yaml" VM_CPUS=4 VM_RAM=8 @@ -82,6 +97,7 @@ display_usage() { echo -e " --inventory | -i : Full path to inventory yaml file. Required only for baremetal" echo -e " --net-settings | -n : Full path to network settings file. Optional." echo -e " --ping-site | -p : site to use to verify IP connectivity. Optional. Defaults to 8.8.8.8" + echo -e " --dnslookup-site : site to use to verify DNS resolution. Optional. Defaults to www.google.com" echo -e " --virtual | -v : Virtualize overcloud nodes instead of using baremetal." echo -e " --no-post-config : disable Post Install configuration." echo -e " --debug : enable debug output." @@ -118,11 +134,21 @@ parse_cmdline() { echo "Network Settings Configuration file: $2" shift 2 ;; + -e|--environment-file) + ENV_FILE=$2 + echo "Base OOO Environment file: $2" + shift 2 + ;; -p|--ping-site) ping_site=$2 echo "Using $2 as the ping site" shift 2 ;; + --dnslookup-site) + dnslookup_site=$2 + echo "Using $2 as the dnslookup site" + shift 2 + ;; -v|--virtual) virtual="TRUE" echo "Executing a Virtual Deployment" diff --git a/ci/dev_dep_check.sh b/ci/dev_dep_check.sh index a15eb8b9..2a6266c0 100755 --- a/ci/dev_dep_check.sh +++ b/ci/dev_dep_check.sh @@ -32,7 +32,7 @@ if ! sudo yum update -y ipxe-roms-qemu; then fi # check for other packages -for i in epel-release python34-PyYAML openvswitch openstack-tripleo libguestfs libguestfs-tools-c libvirt-python; do +for i in epel-release python34-PyYAML openvswitch openstack-tripleo libguestfs libguestfs-tools-c libvirt-python python2-oslo-config python2-debtcollector python34-devel libxslt-devel libxml2-devel; do # Make sure deploy deps are installed if ! rpm -q $i > /dev/null; then if ! sudo yum install -y $i; then @@ -64,11 +64,18 @@ virt_pkgs=( 'perl-Sys-Guestfs-1.32.7-3.el7.x86_64.rpm' 'python-libguestfs-1.32.7-3.el7.x86_64.rpm' ) - +dir=/tmp/packages.$RANDOM +mkdir -p $dir +pushd $dir +all_packages="" for pkg in ${virt_pkgs[@]}; do - if ! rpm -q ${pkg%-*-*}; then - if ! sudo yum -y install $virt_uri_base/$pkg; then - echo "ERROR: Failed to update $pkg" - fi + if ! wget $virt_uri_base/$pkg; then + echo "ERROR: Failed to download $pkg" fi + all_packages="$all_packages $pkg" done +if [[ $all_packages != "" ]];then + yum install -y $all_packages +fi +rm -rf $dir +popd diff --git a/ci/run_smoke_tests.sh b/ci/run_smoke_tests.sh index 8985ed86..7cbd390d 100755 --- a/ci/run_smoke_tests.sh +++ b/ci/run_smoke_tests.sh @@ -4,5 +4,12 @@ source ../lib/utility-functions.sh export ANSIBLE_HOST_KEY_CHECKING=False +./dev_dep_check.sh + +yum install python-devel -y +yum install openssl-devel -y +easy_install pip +pip install ansible + echo 'See ~stack/smoke-tests.out on the undercloud for result log' ansible-playbook -i "$(get_undercloud_ip)," ../tests/smoke_tests/smoke_tests.yml @@ -2,9 +2,22 @@ # Utility script used to interact with a deployment # @author Tim Rozet (trozet@redhat.com) -CONFIG=${CONFIG:-'/var/opt/opnfv'} -RESOURCES=${RESOURCES:-"$CONFIG/images"} -LIB=${LIB:-"$CONFIG/lib"} +# Backwards compat for old ENV Vars +# Remove in E Release +if [ -n "$CONFIG" ]; then + echo -e "${red}WARNING: ENV var CONFIG is Deprecated, please unset CONFIG and export BASE in its place${reset}" + echo -e "${red}WARNING: CONFIG will be removed in E${reset}" + BASE=$CONFIG +fi +if [ -n "$RESOURCES" ]; then + echo -e "${red}WARNING: ENV var RESOURCES is Deprecated, please unset RESOURCES and export IMAGES in its place${reset}" + echo -e "${red}WARNING: RESOURCES will be removed in E${reset}" + IMAGES=$RESOURCES +fi + +BASE=${BASE:-'/var/opt/opnfv'} +IMAGES=${IMAGES:-"$BASE/images"} +LIB=${LIB:-"$BASE/lib"} VALID_CMDS="undercloud overcloud opendaylight debug-stack mock-detached -h --help" source $LIB/utility-functions.sh |