2023-01-11 19:53:03 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
collection_root=$(pwd | grep -oP ".+\/ansible_collections\/\w+?\/\w+")
|
|
|
|
targetname=${PWD##*/}
|
|
|
|
role=$(expr "$targetname" : '\w*-\(\w*\)-\w*')
|
|
|
|
role_root="$collection_root/roles/$role"
|
|
|
|
scenario=$(expr "$targetname" : '\w*-\w*-\(\w*\)')
|
|
|
|
ansible_version="$(ansible --version | head -1 | sed 's/[^0-9\.]*//g')"
|
|
|
|
|
|
|
|
# Install package requirements
|
|
|
|
apt -y update
|
|
|
|
apt -y install docker.io
|
|
|
|
|
|
|
|
# Install test requirements from role
|
|
|
|
if [ -f "$role_root/test-requirements.txt" ]; then
|
|
|
|
python -m pip install -r "$role_root/test-requirements.txt"
|
|
|
|
fi
|
|
|
|
# Install test requirements from collection
|
|
|
|
if [ -f "$collection_root/test-requirements.txt" ]; then
|
|
|
|
python -m pip install -r "$collection_root/test-requirements.txt"
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Install ansible version specific requirements
|
|
|
|
if [ "$(printf '%s\n' "2.12" "$ansible_version" | sort -V | head -n1)" = "2.12" ]; then
|
2023-08-17 11:54:21 +00:00
|
|
|
python -m pip install "molecule<6" molecule-plugins[docker]
|
2023-03-08 16:17:01 +00:00
|
|
|
ansible-galaxy collection install git+https://github.com/ansible-collections/community.docker.git
|
|
|
|
ansible-galaxy collection install -r "$collection_root/requirements.yml"
|
2023-03-02 19:13:25 +00:00
|
|
|
elif [ "$(printf '%s\n' "2.10" "$ansible_version" | sort -V | head -n1)" = "2.10" ]; then
|
2023-01-11 19:53:03 +00:00
|
|
|
python -m pip install molecule molecule-docker
|
2023-03-02 03:16:49 +00:00
|
|
|
ansible-galaxy collection install git+https://github.com/ansible-collections/community.docker.git
|
2023-01-11 19:53:03 +00:00
|
|
|
ansible-galaxy collection install -r "$collection_root/requirements.yml"
|
2023-03-02 19:13:25 +00:00
|
|
|
else
|
|
|
|
python -m pip install molecule molecule-docker
|
|
|
|
req_dir=$(mktemp -d)
|
|
|
|
requirements="$(awk '/name:/ {print $3}' < "$collection_root/requirements.yml") https://github.com/ansible-collections/community.docker.git"
|
|
|
|
for req in $requirements; do
|
|
|
|
git -C "$req_dir" clone --single-branch --depth 1 "$req"
|
|
|
|
req="${req##*/}"
|
|
|
|
req="${req%.*}"
|
|
|
|
ansible-galaxy collection build "$req_dir/$req" --output-path "$req_dir"
|
|
|
|
ansible-galaxy collection install "$req_dir/${req//./-}"-*.tar.gz
|
|
|
|
done
|
2023-01-11 19:53:03 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Define config locations within collection
|
|
|
|
export MOLECULE_FILE=$collection_root/.config/molecule/config.yml
|
2023-03-05 13:55:00 +00:00
|
|
|
export YAMLLINT_CONFIG_FILE=$collection_root/.yamllint.yml
|
2023-01-11 19:53:03 +00:00
|
|
|
|
|
|
|
# Unset ansible-test variables that break molecule
|
|
|
|
unset _ANSIBLE_COVERAGE_CONFIG
|
|
|
|
unset ANSIBLE_PYTHON_INTERPRETER
|
|
|
|
|
|
|
|
# Run molecule test
|
|
|
|
cd "$role_root"
|
|
|
|
molecule -c "$collection_root/.config/molecule/config.yml" test -s "$scenario"
|