1#!/usr/local/bin/bash 2 3set -o pipefail -eux 4 5declare -a args 6IFS='/:' read -ra args <<< "$1" 7 8group="${args[0]}" 9 10command -v python 11python -V 12if [ "$2" = "2.7" ] 13then 14 echo "The specified environment is Python2.7" 15else 16 alias pip='pip3' 17 sudo apt update 18 sudo apt install software-properties-common 19 sudo add-apt-repository ppa:deadsnakes/ppa 20 sudo apt install python"$2" -y 21 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python"$2" 1 22fi 23 24command -v pip 25pip --version 26pip list --disable-pip-version-check 27 28export PATH="${PWD}/bin:${PATH}" 29export PYTHONIOENCODING="UTF-8" 30export LC_ALL="en_US.utf-8" 31 32pip install virtualenv 33virtualenv --python /usr/bin/python"$2" ~/ansible-venv 34 35set +ux 36. ~/ansible-venv/bin/activate 37set -ux 38 39git clone https://github.com/ansible/ansible.git 40cd "ansible" 41if [ "$3" = "devel" ] 42then 43 echo "The branch is devel" 44else 45 git checkout "stable-$3" 46fi 47source hacking/env-setup 48pip install paramiko PyYAML Jinja2 httplib2 six 49 50TEST_DIR="${HOME}/.ansible/ansible_collections/azure/azcollection" 51mkdir -p "${TEST_DIR}" 52cp -aT "${SHIPPABLE_BUILD_DIR}" "${TEST_DIR}" 53cd "${TEST_DIR}" 54mkdir -p shippable/testresults 55 56pip install -I -r "${TEST_DIR}/requirements-azure.txt" 57pip install -I -r "${TEST_DIR}/sanity-requirements-azure.txt" 58 59timeout=90 60 61if [ "$4" = "all" ] 62then 63 echo "All module need test" 64else 65 path_dir="${TEST_DIR}/tests/integration/targets/" 66 for item in "$path_dir"* 67 do 68 if [ "${item}" = "$path_dir""$4" ] 69 then 70 echo "PASS" 71 else 72 echo " " >> "${item}"/aliases 73 echo "disabled" >> "${item}"/aliases 74 fi 75 done 76fi 77echo '--------------------------------------------' 78pip list 79ansible --version 80echo '--------------------------------------------' 81 82ansible-test env --dump --show --timeout "${timeout}" --color -v 83 84cat <<EOF >> "${TEST_DIR}"/tests/integration/cloud-config-azure.ini 85[default] 86AZURE_CLIENT_ID:${AZURE_CLIENT_ID} 87AZURE_SECRET:${AZURE_SECRET} 88AZURE_SUBSCRIPTION_ID:${AZURE_SUBSCRIPTION_ID} 89AZURE_SUBSCRIPTION_SEC_ID:${AZURE_SUBSCRIPTION_SEC_ID} 90AZURE_TENANT:${AZURE_TENANT} 91RESOURCE_GROUP:${RESOURCE_GROUP} 92RESOURCE_GROUP_SECONDARY:${RESOURCE_GROUP_SECONDARY} 93RESOURCE_GROUP_DATALAKE:${RESOURCE_GROUP_DATALAKE} 94AZURE_PRINCIPAL_ID:${AZURE_PRINCIPAL_ID} 95AZURE_MANAGED_BY_TENANT_ID:${AZURE_MANAGED_BY_TENANT_ID} 96AZURE_ROLE_DEFINITION_ID:${AZURE_ROLE_DEFINITION_ID} 97EOF 98 99if [ "sanity" = "${group}" ] 100then 101 ansible-test sanity --color -v --junit 102else 103 ansible-test integration --color -v --retry-on-error "shippable/azure/group${group}/" --allow-destructive 104fi 105