aboutsummaryrefslogtreecommitdiff
path: root/contrib/cirrus/prebuild.sh
diff options
context:
space:
mode:
authorChris Evich <cevich@redhat.com>2022-09-13 12:36:43 -0400
committerChris Evich <cevich@redhat.com>2022-09-29 12:59:48 -0400
commit6c8a11b7460217d765611339e7df831582b2c250 (patch)
tree71ecfe3c16f60338faf5fe95af4b398622eaea4b /contrib/cirrus/prebuild.sh
parent0e7d166eed4bd6c8fe71f40bac6276769eab9ee6 (diff)
downloadpodman-6c8a11b7460217d765611339e7df831582b2c250.tar.gz
podman-6c8a11b7460217d765611339e7df831582b2c250.tar.bz2
podman-6c8a11b7460217d765611339e7df831582b2c250.zip
Cirrus: Combine pre-test checks into build task
Previously, two tasks always ran first, prior to anything else. One to verify network and external-service connectivity. Another to verify certain important `.cirrus.yml` standards are met. However, as the total number of tasks continues to grow, the need to keep these basic checks as dedicated prerequisites is of decreasing value/importance. Fold these two checks into a new `pretesting_script` component of the Fedora `build` task, on both `x86_64` and `aarch64`. Signed-off-by: Chris Evich <cevich@redhat.com>
Diffstat (limited to 'contrib/cirrus/prebuild.sh')
-rwxr-xr-xcontrib/cirrus/prebuild.sh74
1 files changed, 74 insertions, 0 deletions
diff --git a/contrib/cirrus/prebuild.sh b/contrib/cirrus/prebuild.sh
new file mode 100755
index 000000000..7695128de
--- /dev/null
+++ b/contrib/cirrus/prebuild.sh
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+set -eo pipefail
+
+# This script attempts to confirm functional networking and
+# connectivity to essential external servers. It also verifies
+# some basic environmental expectations and shell-script sanity.
+# It's intended for use early on in the podman CI system, to help
+# prevent wasting time on tests that can't succeed due to some
+# outage, failure, or missed expectation.
+
+source /etc/automation_environment
+source $AUTOMATION_LIB_PATH/common_lib.sh
+
+req_env_vars CI DEST_BRANCH IMAGE_SUFFIX TEST_FLAVOR TEST_ENVIRON \
+ PODBIN_NAME PRIV_NAME DISTRO_NV AUTOMATION_LIB_PATH \
+ SCRIPT_BASE CIRRUS_WORKING_DIR FEDORA_NAME UBUNTU_NAME \
+ VM_IMAGE_NAME
+
+# There's no need to perform further checks on more than one
+# CI platform. These variables are defined in .cirrus.yml
+# shellcheck disable=SC2154
+if [[ ! "${DISTRO_NV}" =~ ${FEDORA_NAME} ]]; then
+ echo "Skipping additional checks on $DISTRO_NV"
+ exit 0
+fi
+
+# shellcheck disable=SC2154
+$SCRIPT_BASE/cirrus_yaml_test.py
+
+ooe.sh dnf install -y ShellCheck # small/quick addition
+
+shellcheck --color=always --format=tty \
+ --shell=bash --external-sources \
+ --enable add-default-case,avoid-nullary-conditions,check-unassigned-uppercase \
+ --exclude SC2046,SC2034,SC2090,SC2064 \
+ --wiki-link-count=0 --severity=warning \
+ $SCRIPT_BASE/*.sh hack/get_ci_vm.sh
+
+# shellcheck disable=SC2154
+cat ${CIRRUS_WORKING_DIR}/${SCRIPT_BASE}/required_host_ports.txt | \
+ while read host port
+ do
+ if [[ "$port" -eq "443" ]]
+ then
+ echo "SSL/TLS to $host:$port"
+ echo -n '' | \
+ err_retry 9 1000 "" openssl s_client -quiet -no_ign_eof -connect $host:$port
+ else
+ echo "Connect to $host:$port"
+ err_retry 9 1000 1 nc -zv -w 13 $host $port
+ fi
+ done
+
+# Verify we can pull metadata from a few key testing images on quay.io
+# in the 'libpod' namespace. This is mostly aimed at validating the
+# quay.io service is up and responsive. Images were hand-picked with
+# egrep -ro 'quay.io/libpod/.+:latest' test | sort -u
+TEST_IMGS=(\
+ alpine:latest
+ busybox:latest
+ alpine_labels:latest
+ alpine_nginx:latest
+ alpine_healthcheck:latest
+ badhealthcheck:latest
+ cirros:latest
+)
+
+echo "Checking quay.io test image accessibility"
+for testimg in "${TEST_IMGS[@]}"; do
+ fqin="quay.io/libpod/$testimg"
+ echo " $fqin"
+ skopeo inspect --retry-times 5 "docker://$fqin" | jq -e . > /dev/null
+done