tripleo-ipa/scripts/run-local-test
Lance Bragstad 5b94e15b6b 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
2020-03-18 14:27:28 +00:00

43 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# Copyright 2019 Red Hat, Inc.
# All Rights Reserved.
#
# 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.
set -o pipefail
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}")" \
-e "ansible_user=${USER}" \
-e "ansible_user_dir=${HOME}" \
"${PROJECT_DIR}/playbooks/prepare-test-host.yml" \
"${PROJECT_DIR}/zuul.d/playbooks/run-local.yml"