From 5b94e15b6b9b4f229547271bc19a14ed0c3d0c23 Mon Sep 17 00:00:00 2001 From: Lance Bragstad Date: Wed, 18 Mar 2020 14:07:30 +0000 Subject: [PATCH] Properly handle dependencies when running tests locally Using run-local-test locally can cause issue depending on your local environment setup. For example, the script assumes you have ansible installed. If you do, you'll hit issues when you start running molecule tests that look like this: original message: template error while templating string: no filter named 'molecule_from_yaml'. String: {{ lookup('file', molecule_file) | molecule_from_yaml }} This is because ansible and/or molecule is installed outside of the virtualenv (${HOME}/test-python). If we remove ansible/molecule, then run-local-test is going to fail because it doesn't have ansible available to it to kick everything off in run-local-test. This isn't a problem with zuul since zuul nodes have ansible installed already (and it doesn't use run-local-test as the test entry point). This commit attempts to work around the problem by installing basic dependencies (molecule-requirements.txt) in run-local-test. This is slightly redundant with zuul.d/playbooks/pre.yml but we need to support both cases for zuul and local development. Change-Id: Ic6b6c3dabd8774827e366d3177c9b6c4f21d13b1 --- molecule-requirements.txt | 1 + scripts/run-local-test | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/molecule-requirements.txt b/molecule-requirements.txt index 6c0cb63..26c4f50 100644 --- a/molecule-requirements.txt +++ b/molecule-requirements.txt @@ -1,2 +1,3 @@ +ansible docker molecule>=3.0,<3.1 diff --git a/scripts/run-local-test b/scripts/run-local-test index a804b06..f584369 100644 --- a/scripts/run-local-test +++ b/scripts/run-local-test @@ -20,6 +20,19 @@ set -xeo export ANSIBLE_ROLES_PATH="${ANSIBLE_ROLES_PATH}:${HOME}/zuul-jobs/roles" export PROJECT_DIR="$(dirname $(readlink -f ${BASH_SOURCE[0]}))/../" +export UPPER_CONSTRAINTS_FILE=${UPPER_CONSTRAINTS_FILE:-"https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt"} + +function run_pip { + "${HOME}/test-python/bin/pip" install \ + -c "${UPPER_CONSTRAINTS_FILE}" \ + -r "${PROJECT_DIR}/molecule-requirements.txt" ${@:-} +} + +# Create a virtual environment and install dependencies +PYTHON_EXEC=$(command -v python3 || command -v python) +"${PYTHON_EXEC}" -m virtualenv --system-site-packages "${HOME}/test-python" +run_pip + ansible-playbook -i "${PROJECT_DIR}/tests/hosts.ini" \ -e "tripleo_src=$(realpath --relative-to="${HOME}" "${PROJECT_DIR}")" \