From cceed25e6c773c18e479e246ddeadebc82870f70 Mon Sep 17 00:00:00 2001 From: Samuli Silvius Date: Tue, 16 Apr 2019 15:41:26 +0300 Subject: Molecule test run wrappers against CI Add ci-molecule.sh script to work as an interface towards CI pipe for running Molecule tests. Issue-ID: OOM-1749 Change-Id: Ib6e74d9b03b569a172a606f4db41b707602bf279 Signed-off-by: Samuli Silvius --- ansible/test/bin/ci-molecule.sh | 52 ++++++++++++++++++++++++++++++++++++ ansible/test/bin/install-molecule.sh | 45 +++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100755 ansible/test/bin/ci-molecule.sh create mode 100755 ansible/test/bin/install-molecule.sh (limited to 'ansible/test/bin') diff --git a/ansible/test/bin/ci-molecule.sh b/ansible/test/bin/ci-molecule.sh new file mode 100755 index 00000000..9fbaad51 --- /dev/null +++ b/ansible/test/bin/ci-molecule.sh @@ -0,0 +1,52 @@ +#! /usr/bin/env bash + +# COPYRIGHT NOTICE STARTS HERE + +# Copyright 2019 © Samsung Electronics Co., Ltd. +# +# 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. + +# COPYRIGHT NOTICE ENDS HERE + +# +# This is a main wrapper script to run Molecule tests +# Main usage is for the CI usage to keep interface stable and the way to call +# Molecule can be adjusted in this script independently. +# + +SCRIPT_DIR=$(dirname "${0}") +LOCAL_PATH=$(readlink -f "$SCRIPT_DIR") + +ROLE_PATH=$1 +MOLECULE_CONTAINER=${MOLECULE_CONTAINER:-true} + +echo "Build all pre-build images" +${LOCAL_PATH}/../images/docker/build-all.sh + +# Use Molecule container +if [ "${MOLECULE_CONTAINER}" == "true" ]; then + echo "Build Molecule-dev docker container" + ${LOCAL_PATH}/../molecule-docker/build.sh + MOLECULE_BINARY=${LOCAL_PATH}/../bin/molecule.sh + +else # Install Molecule natively in the target platform + echo "Install Molecule with virtualenv" + source ${LOCAL_PATH}/../bin/install-molecule.sh + MOLECULE_BINARY=molecule +fi + +${MOLECULE_BINARY} --version + +cd ${ROLE_PATH} +${MOLECULE_BINARY} test --all +cd - diff --git a/ansible/test/bin/install-molecule.sh b/ansible/test/bin/install-molecule.sh new file mode 100755 index 00000000..f5350df6 --- /dev/null +++ b/ansible/test/bin/install-molecule.sh @@ -0,0 +1,45 @@ +#! /usr/bin/env bash + +# COPYRIGHT NOTICE STARTS HERE + +# Copyright 2019 © Samsung Electronics Co., Ltd. +# +# 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. + +# COPYRIGHT NOTICE ENDS HERE + +# +# Pre-requisites: +# - python 3 +# - pip +# - dev tools (libssl-dev in particular) +# - venv +# +# Example install in Ubuntu 18.04 +# sudo apt install -y python3-pip +# sudo apt install build-essential libssl-dev libffi-dev python3-dev +# sudo apt install -y python3-venv +# +VENV_PATH=${VENV_PATH:-~/molecule_venv} + +# Create virtual env +python3 -m venv ${VENV_PATH} + +# Activate virtual env +source ${VENV_PATH}/bin/activate + +# Install Molecule +if [ ! -z ${VIRTUAL_ENV} ]; then + echo "Activated virtual env in ${VIRTUAL_ENV}" + pip install molecule==2.20 ansible==2.7.8 docker pyopenssl +fi -- cgit 1.2.3-korg