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
This commit is contained in:
Lance Bragstad 2020-03-18 14:07:30 +00:00
parent 05e402a8d2
commit 5b94e15b6b
2 changed files with 14 additions and 0 deletions

View File

@ -1,2 +1,3 @@
ansible
docker
molecule>=3.0,<3.1

View File

@ -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}")" \