summaryrefslogtreecommitdiffstats
path: root/ansible_collections/hetzner/hcloud/tests/utils/gitlab
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:04:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:04:41 +0000
commit975f66f2eebe9dadba04f275774d4ab83f74cf25 (patch)
tree89bd26a93aaae6a25749145b7e4bca4a1e75b2be /ansible_collections/hetzner/hcloud/tests/utils/gitlab
parentInitial commit. (diff)
downloadansible-975f66f2eebe9dadba04f275774d4ab83f74cf25.tar.xz
ansible-975f66f2eebe9dadba04f275774d4ab83f74cf25.zip
Adding upstream version 7.7.0+dfsg.upstream/7.7.0+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/hetzner/hcloud/tests/utils/gitlab')
-rwxr-xr-xansible_collections/hetzner/hcloud/tests/utils/gitlab/gitlab.sh99
-rwxr-xr-xansible_collections/hetzner/hcloud/tests/utils/gitlab/integration.sh20
-rwxr-xr-xansible_collections/hetzner/hcloud/tests/utils/gitlab/sanity.sh47
3 files changed, 166 insertions, 0 deletions
diff --git a/ansible_collections/hetzner/hcloud/tests/utils/gitlab/gitlab.sh b/ansible_collections/hetzner/hcloud/tests/utils/gitlab/gitlab.sh
new file mode 100755
index 000000000..b09bd2f3a
--- /dev/null
+++ b/ansible_collections/hetzner/hcloud/tests/utils/gitlab/gitlab.sh
@@ -0,0 +1,99 @@
+#!/usr/bin/env bash
+
+set -o pipefail -eux
+
+declare -a args
+
+IFS='/:' read -ra args <<< "$1"
+
+ansible_version="${args[0]}"
+# shellcheck disable=SC2034
+script="${args[1]}"
+
+function join {
+ local IFS="$1";
+ shift;
+ echo "$*";
+}
+
+test="$(join / "${args[@]:1}")"
+command -v python
+python -V
+
+function retry
+{
+ # shellcheck disable=SC2034
+ for repetition in 1 2 3; do
+ set +e
+ "$@"
+ result=$?
+ set -e
+ if [ ${result} == 0 ]; then
+ return ${result}
+ fi
+ echo "@* -> ${result}"
+ done
+ echo "Command '@*' failed 3 times!"
+ exit 1
+}
+
+command -v pip
+pip --version
+pip list --disable-pip-version-check
+if [ "${ansible_version}" == "devel" ]; then
+ retry pip install https://github.com/ansible/ansible/archive/devel.tar.gz --disable-pip-version-check
+else
+ retry pip install "https://github.com/ansible/ansible/archive/stable-${ansible_version}.tar.gz" --disable-pip-version-check
+fi
+export ANSIBLE_COLLECTIONS_PATHS="${HOME}/.ansible"
+# shellcheck disable=SC2034
+SHIPPABLE_RESULT_DIR="$(pwd)/shippable"
+TEST_DIR="${ANSIBLE_COLLECTIONS_PATHS}/ansible_collections/hetzner/hcloud"
+rm -rf "${TEST_DIR}"
+mkdir -p "${TEST_DIR}"
+cp -r "." "${TEST_DIR}"
+cd "${TEST_DIR}"
+
+# STAR: HACK install dependencies
+retry ansible-galaxy -vvv collection install community.general
+retry ansible-galaxy -vvv collection install ansible.netcommon
+retry ansible-galaxy -vvv collection install community.internal_test_tools
+retry pip install netaddr --disable-pip-version-check
+retry pip install hcloud
+retry pip install rstcheck
+# END: HACK
+
+export PYTHONIOENCODING='utf-8'
+
+if [ "${JOB_TRIGGERED_BY_NAME:-}" == "nightly-trigger" ]; then
+ COMPLETE=yes
+fi
+
+
+if [ -n "${COMPLETE:-}" ]; then
+ # disable change detection triggered by setting the COMPLETE environment variable to a non-empty value
+ export CHANGED=""
+elif [[ "${CI_COMMIT_MESSAGE}" =~ ci_complete ]]; then
+ # disable change detection triggered by having 'ci_complete' in the latest commit message
+ export CHANGED=""
+else
+ # enable change detection (default behavior)
+ export CHANGED=""
+fi
+
+
+export UNSTABLE="--allow-unstable-changed"
+
+# remove empty core/extras module directories from PRs created prior to the repo-merge
+find plugins -type d -empty -print -delete
+
+ansible-test env --dump --show --timeout "50" --color -v
+
+group="${args[1]}"
+echo "$test"
+if [[ "${test}" =~ hcloud ]]; then
+ group="${args[3]}"
+ bash tests/utils/gitlab/integration.sh "shippable/hcloud/group${group}/"
+else
+ bash tests/utils/gitlab/sanity.sh "sanity/${group}"
+fi
diff --git a/ansible_collections/hetzner/hcloud/tests/utils/gitlab/integration.sh b/ansible_collections/hetzner/hcloud/tests/utils/gitlab/integration.sh
new file mode 100755
index 000000000..c94392b85
--- /dev/null
+++ b/ansible_collections/hetzner/hcloud/tests/utils/gitlab/integration.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+target="$1"
+
+HCLOUD_TOKEN=$(cat hcloud_token.txt)
+# shellcheck disable=SC2034,SC2154
+changed_all_target="shippable/${cloud}/smoketest/"
+
+# shellcheck disable=SC2046
+echo "[default]
+hcloud_api_token=${HCLOUD_TOKEN}
+" >> $(pwd)/tests/integration/cloud-config-hcloud.ini
+export SHIPPABLE="true"
+
+# shellcheck disable=SC2155
+export SHIPPABLE_BUILD_NUMBER="gl-$(cat prefix.txt)"
+
+# shellcheck disable=SC2155,SC2002
+export SHIPPABLE_JOB_NUMBER="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 2 | head -n 1)"
+ansible-test integration --color --local -vv "${target}" ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} ${UNSTABLE:+"$UNSTABLE"}
diff --git a/ansible_collections/hetzner/hcloud/tests/utils/gitlab/sanity.sh b/ansible_collections/hetzner/hcloud/tests/utils/gitlab/sanity.sh
new file mode 100755
index 000000000..4ee96aefe
--- /dev/null
+++ b/ansible_collections/hetzner/hcloud/tests/utils/gitlab/sanity.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/env bash
+
+set -o pipefail -eux
+
+declare -a args
+IFS='/:' read -ra args <<< "$1"
+
+group="${args[1]}"
+
+if [ "${BASE_BRANCH:-}" ]; then
+ base_branch="origin/${BASE_BRANCH}"
+else
+ base_branch=""
+fi
+
+if [ "${group}" == "extra" ]; then
+ ../internal_test_tools/tools/run.py --color
+ exit
+fi
+
+case "${group}" in
+ 1) options=(--skip-test pylint --skip-test ansible-doc --skip-test validate-modules) ;;
+ 2) options=( --test ansible-doc --test validate-modules) ;;
+ 3) options=(--test pylint plugins/modules/) ;;
+ 4) options=(--test pylint --exclude plugins/modules/) ;;
+esac
+
+# allow collection migration sanity tests for groups 3 and 4 to pass without updating this script during migration
+network_path="lib/ansible/modules/network/"
+
+if [ -d "${network_path}" ]; then
+ if [ "${group}" -eq 3 ]; then
+ options+=(--exclude "${network_path}")
+ elif [ "${group}" -eq 4 ]; then
+ options+=("${network_path}")
+ fi
+fi
+
+pip install pycodestyle
+pip install yamllint
+pip install voluptuous
+pip install pylint==2.5.3
+# shellcheck disable=SC2086
+ansible-test sanity --color -v --junit ${COVERAGE:+"$COVERAGE"} ${CHANGED:+"$CHANGED"} \
+ --base-branch "${base_branch}" \
+ --exclude tests/utils/ \
+ "${options[@]}" --allow-disabled