From 578b1f7dd9e6ac1fae06d37f878222af7939e8d3 Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Thu, 4 May 2017 16:49:39 +0100 Subject: [PATCH] Use zuul-cloner for tests repo in OpenStack-CI When executing the tests repo clone in OpenStack-CI, use zuul-cloner instead of git to enable cross-repo testing. This ensures that if a dependent patch from the tests repo is noted using 'Depends-On: ' in the commit message, that patch will be included. Change-Id: I87314f8c46554a9b6856078bda61c4775e20243b Depends-On: Idce7abebf32f24c356a27e099fbca954d917402b --- tests/tests-repo-clone.sh | 91 +++++++++++++++++++++++++++++++++++++++ tox.ini | 17 +++----- 2 files changed, 96 insertions(+), 12 deletions(-) create mode 100755 tests/tests-repo-clone.sh diff --git a/tests/tests-repo-clone.sh b/tests/tests-repo-clone.sh new file mode 100755 index 00000000..619a9055 --- /dev/null +++ b/tests/tests-repo-clone.sh @@ -0,0 +1,91 @@ +#!/bin/bash +# Copyright 2017, Rackspace US, Inc. +# +# 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 +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# PURPOSE: +# This script clones the openstack-ansible-tests repository to the +# tests/common folder in order to be able to re-use test components +# for role testing. + +# WARNING: +# This file is maintained in the openstack-ansible-tests repository: +# https://git.openstack.org/cgit/openstack/openstack-ansible-tests +# If you need to change this script, then propose the change there. +# Once it merges, the change will be replicated to the other repositories. + +## Shell Opts ---------------------------------------------------------------- + +set -e + +## Vars ---------------------------------------------------------------------- + +export TESTING_HOME=${TESTING_HOME:-$HOME} +export WORKING_DIR=${WORKING_DIR:-$(pwd)} +export CLONE_UPGRADE_TESTS=${CLONE_UPGRADE_TESTS:-no} + +## Main ---------------------------------------------------------------------- + +# Prepare the clonemap for zuul-cloner to use +# This is placed here instead of inside the conditional +# to prevent indentation problems. +cat > ${TESTING_HOME}/tests-clonemap.yaml << EOF +clonemap: + - name: openstack/openstack-ansible-tests + dest: ${WORKING_DIR}/tests/common +EOF + +# If zuul-cloner is present, use it so that we +# also include any dependent patches from the +# tests repo noted in the commit message. +if [[ -x /usr/zuul-env/bin/zuul-cloner ]]; then + + /usr/zuul-env/bin/zuul-cloner \ + --cache-dir /opt/git \ + --map ${TESTING_HOME}/tests-clonemap.yaml \ + git://git.openstack.org \ + openstack/openstack-ansible-tests + +# Alternatively, use a simple git-clone. We do +# not re-clone if the directory exists already +# to prevent overwriting any local changes which +# may have been made. +elif [[ ! -d tests/common ]]; then + + # The tests repo doesn't need a clone, we can just + # symlink it. + if [[ "$(basename ${WORKING_DIR})" == "openstack-ansible-tests" ]]; then + ln -s ${WORKING_DIR} ${WORKING_DIR}/tests/common + else + git clone \ + https://git.openstack.org/openstack/openstack-ansible-tests \ + ${WORKING_DIR}/tests/common + fi +fi + +# Clean up the clonemap. +rm -f ${TESTING_HOME}/tests-clonemap.yaml + +# If this test set includes an upgrade test, the +# previous stable release tests repo must also be +# cloned. +# Note: +# Dependent patches to the previous stable release +# tests repo are not supported. +if [[ "${CLONE_UPGRADE_TESTS}" == "yes" ]]; then + if [[ ! -d "${WORKING_DIR}/tests/common/previous" ]]; then + git clone -b stable/ocata \ + https://git.openstack.org/openstack/openstack-ansible-tests \ + ${WORKING_DIR}/tests/common/previous + fi +fi diff --git a/tox.ini b/tox.ini index b621d916..2935a9d1 100644 --- a/tox.ini +++ b/tox.ini @@ -55,16 +55,9 @@ commands = {posargs} -[testenv:tests_clone] -commands = - bash -c "if [ ! -d "{toxinidir}/tests/common" ]; then \ - git clone https://git.openstack.org/openstack/openstack-ansible-tests {toxinidir}/tests/common; \ - fi" - - [testenv:pep8] commands = - {[testenv:tests_clone]commands} + bash -c "{toxinidir}/tests/tests-repo-clone.sh" bash -c "{toxinidir}/tests/common/test-pep8.sh" @@ -77,7 +70,7 @@ ignore=F403 [testenv:bashate] commands = - {[testenv:tests_clone]commands} + bash -c "{toxinidir}/tests/tests-repo-clone.sh" bash -c "{toxinidir}/tests/common/test-bashate.sh" @@ -91,7 +84,7 @@ deps = deps = {[testenv:ansible]deps} commands = - {[testenv:tests_clone]commands} + bash -c "{toxinidir}/tests/tests-repo-clone.sh" bash -c "{toxinidir}/tests/common/test-ansible-syntax.sh" @@ -99,7 +92,7 @@ commands = deps = {[testenv:ansible]deps} commands = - {[testenv:tests_clone]commands} + bash -c "{toxinidir}/tests/tests-repo-clone.sh" bash -c "{toxinidir}/tests/common/test-ansible-lint.sh" @@ -107,7 +100,7 @@ commands = deps = {[testenv:ansible]deps} commands = - {[testenv:tests_clone]commands} + bash -c "{toxinidir}/tests/tests-repo-clone.sh" bash -c "{toxinidir}/tests/common/test-ansible-functional.sh"