Molecule test run wrappers against CI 58/85458/2
authorSamuli Silvius <s.silvius@partner.samsung.com>
Tue, 16 Apr 2019 12:41:26 +0000 (15:41 +0300)
committerSamuli Silvius <s.silvius@partner.samsung.com>
Tue, 16 Apr 2019 13:09:31 +0000 (16:09 +0300)
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 <s.silvius@partner.samsung.com>
ansible/test/bin/ci-molecule.sh [new file with mode: 0755]
ansible/test/bin/install-molecule.sh [new file with mode: 0755]

diff --git a/ansible/test/bin/ci-molecule.sh b/ansible/test/bin/ci-molecule.sh
new file mode 100755 (executable)
index 0000000..9fbaad5
--- /dev/null
@@ -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 (executable)
index 0000000..f5350df
--- /dev/null
@@ -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