From 3deb01f1097cc6d2d7132830cd8a2e9c0d3c9c62 Mon Sep 17 00:00:00 2001 From: Yolanda Robla Mota Date: Fri, 18 Nov 2016 13:08:47 +0100 Subject: [PATCH] Enable consuming packages for a feature branch An use case for TripleO CI can be to test changes on an specific feature branch. In that case, the packages need to be consumed for that specific branch, instead of master. This change enables the detection of a feature branch in the current change, and enables the related repositories (they will default to master if the feature branch for a repo does not exist) Also update ELEMENTS_PATH properly to consune latest features from diskimage-builder Change-Id: I701c01dd18023c0c05aede9d06b6b1380b6f2386 Needed-By: I0ca6a4ae3a2684d473b44e5f332ee4225ee30f8c --- scripts/bootstrap-overcloud-full.sh | 10 +++++++++- scripts/common_functions.sh | 2 +- scripts/common_vars.bash | 7 +++++++ scripts/tripleo.sh | 29 ++++++++++++++++++++++------- 4 files changed, 39 insertions(+), 9 deletions(-) diff --git a/scripts/bootstrap-overcloud-full.sh b/scripts/bootstrap-overcloud-full.sh index d01e779b2..8dbabdd0a 100755 --- a/scripts/bootstrap-overcloud-full.sh +++ b/scripts/bootstrap-overcloud-full.sh @@ -34,7 +34,15 @@ sudo yum -y update # openstack-tripleo-common needed for the tripleo-build-images command sudo yum -y install instack-undercloud git openstack-tripleo-common -export ELEMENTS_PATH="/usr/share/diskimage-builder/elements:/usr/share/instack-undercloud:/usr/share/tripleo-image-elements:/usr/share/tripleo-puppet-elements:/usr/share/openstack-heat-templates/software-config/elements" +# detect the real path depending on diskimage-builder version +COMMON_ELEMENTS_PATH=$(python -c ' +try: + import diskimage_builder.paths + diskimage_builder.paths.show_path("elements") +except: + print("/usr/share/diskimage-builder/elements") +') +export ELEMENTS_PATH="${COMMON_ELEMENTS_PATH}:/usr/share/instack-undercloud:/usr/share/tripleo-image-elements:/usr/share/tripleo-puppet-elements:/usr/share/openstack-heat-templates/software-config/elements" sudo yum -y install openstack-tripleo-common diff --git a/scripts/common_functions.sh b/scripts/common_functions.sh index 66bfe82e5..9582d2af2 100755 --- a/scripts/common_functions.sh +++ b/scripts/common_functions.sh @@ -301,7 +301,7 @@ function layer_ci_repo { function echo_vars_to_deploy_env { - for VAR in CENTOS_MIRROR http_proxy INTROSPECT MY_IP no_proxy NODECOUNT OVERCLOUD_DEPLOY_ARGS OVERCLOUD_UPDATE_ARGS PACEMAKER SSH_OPTIONS STABLE_RELEASE TRIPLEO_ROOT TRIPLEO_SH_ARGS NETISO_V4 NETISO_V6 TOCI_JOBTYPE UNDERCLOUD_SSL RUN_TEMPEST_TESTS RUN_PING_TEST JOB_NAME OVB UNDERCLOUD_IDEMPOTENT MULTINODE CONTROLLER_HOSTS COMPUTE_HOSTS SUBNODES_SSH_KEY TEST_OVERCLOUD_DELETE OVERCLOUD OSINFRA UNDERCLOUD_SANITY_CHECK PINGTEST_TEMPLATE OVERCLOUD_PINGTEST_ARGS; do + for VAR in CENTOS_MIRROR http_proxy INTROSPECT MY_IP no_proxy NODECOUNT OVERCLOUD_DEPLOY_ARGS OVERCLOUD_UPDATE_ARGS PACEMAKER SSH_OPTIONS STABLE_RELEASE TRIPLEO_ROOT TRIPLEO_SH_ARGS NETISO_V4 NETISO_V6 TOCI_JOBTYPE UNDERCLOUD_SSL RUN_TEMPEST_TESTS RUN_PING_TEST JOB_NAME OVB UNDERCLOUD_IDEMPOTENT MULTINODE CONTROLLER_HOSTS COMPUTE_HOSTS SUBNODES_SSH_KEY TEST_OVERCLOUD_DELETE OVERCLOUD OSINFRA UNDERCLOUD_SANITY_CHECK PINGTEST_TEMPLATE OVERCLOUD_PINGTEST_ARGS FEATURE_BRANCH; do echo "export $VAR=\"${!VAR}\"" >> $TRIPLEO_ROOT/tripleo-ci/deploy.env done } diff --git a/scripts/common_vars.bash b/scripts/common_vars.bash index 8772c045a..95302f600 100644 --- a/scripts/common_vars.bash +++ b/scripts/common_vars.bash @@ -4,6 +4,7 @@ export ZUUL_BRANCH=${ZUUL_BRANCH:-""} export OVERRIDE_ZUUL_BRANCH=${OVERRIDE_ZUUL_BRANCH:-""} export STABLE_RELEASE=${STABLE_RELEASE:-""} +export FEATURE_BRANCH=${FEATURE_BRANCH:-""} if [[ $ZUUL_BRANCH =~ ^stable/ ]]; then export STABLE_RELEASE=${ZUUL_BRANCH#stable/} fi @@ -12,6 +13,12 @@ if [[ $OVERRIDE_ZUUL_BRANCH =~ ^stable/ ]]; then export STABLE_RELEASE=${OVERRIDE_ZUUL_BRANCH#stable/} fi +# if we still don't have an stable branch, check if that +# is a feature branch +if [ -z "$STABLE_RELEASE" ] && [ "$ZUUL_BRANCH" != "master" ]; then + export FEATURE_BRANCH=$ZUUL_BRANCH +fi + export TRIPLEO_ROOT=${TRIPLEO_ROOT:-"/opt/stack/new"} export PATH=/sbin:/usr/sbin:$PATH diff --git a/scripts/tripleo.sh b/scripts/tripleo.sh index d9ccda4d6..790e9a933 100755 --- a/scripts/tripleo.sh +++ b/scripts/tripleo.sh @@ -364,11 +364,8 @@ function delorean_build { pushd $TRIPLEO_ROOT/delorean - if [ -z "$STABLE_RELEASE" ]; then - sed -i -e "s%baseurl=.*%baseurl=https://trunk.rdoproject.org/centos7%" projects.ini - sed -i -e "s%distro=.*%distro=rpm-master%" projects.ini - sed -i -e "s%source=.*%source=master%" projects.ini - else + if [ -n "$STABLE_RELEASE" ]; then + # first check if we have a stable release sed -i -e "s%baseurl=.*%baseurl=https://trunk.rdoproject.org/centos7-$STABLE_RELEASE%" projects.ini if [ "$STABLE_RELEASE" = "newton" ]; then sed -i -e "s%distro=.*%distro=$STABLE_RELEASE-rdo%" projects.ini @@ -376,6 +373,15 @@ function delorean_build { sed -i -e "s%distro=.*%distro=rpm-$STABLE_RELEASE%" projects.ini fi sed -i -e "s%source=.*%source=stable/$STABLE_RELEASE%" projects.ini + elif [ -n "$FEATURE_BRANCH" ]; then + # next, check if we are testing for a feature branch + sed -i -e "s%baseurl=.*%baseurl=https://trunk.rdoproject.org/centos7%" projects.ini + sed -i -e "s%distro=.*%distro=rpm-$FEATURE_BRANCH%" projects.ini + sed -i -e "s%source=.*%source=$FEATURE_BRANCH%" projects.ini + else + sed -i -e "s%baseurl=.*%baseurl=https://trunk.rdoproject.org/centos7%" projects.ini + sed -i -e "s%distro=.*%distro=rpm-master%" projects.ini + sed -i -e "s%source=.*%source=master%" projects.ini fi sudo rm -rf data commits.sqlite @@ -472,8 +478,17 @@ function overcloud_images { # (slagle) TODO: This needs to be fixed in python-tripleoclient or # diskimage-builder! # Ensure yum-plugin-priorities is installed - echo -e '#!/bin/bash\nyum install -y yum-plugin-priorities' | sudo tee /usr/share/diskimage-builder/elements/yum/pre-install.d/99-tmphacks - sudo chmod +x /usr/share/diskimage-builder/elements/yum/pre-install.d/99-tmphacks + + # get the right path for diskimage-builder version + COMMON_ELEMENTS_PATH=$(python -c ' +try: + import diskimage_builder.paths + diskimage_builder.paths.show_path("elements") +except: + print("/usr/share/diskimage-builder/elements") +') + echo -e '#!/bin/bash\nyum install -y yum-plugin-priorities' | sudo tee ${COMMON_ELEMENTS_PATH}/yum/pre-install.d/99-tmphacks + sudo chmod +x ${COMMON_ELEMENTS_PATH}/yum/pre-install.d/99-tmphacks # To install the undercloud instack-undercloud is run as root, # as a result all of the git repositories get cached to