aboutsummaryrefslogtreecommitdiff
path: root/contrib/cirrus
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
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')
-rw-r--r--contrib/cirrus/CIModes.md11
-rwxr-xr-xcontrib/cirrus/ext_svc_check.sh47
-rwxr-xr-xcontrib/cirrus/prebuild.sh74
-rwxr-xr-xcontrib/cirrus/runner.sh17
-rwxr-xr-xcontrib/cirrus/setup_environment.sh2
-rwxr-xr-xcontrib/cirrus/shellcheck.sh16
6 files changed, 76 insertions, 91 deletions
diff --git a/contrib/cirrus/CIModes.md b/contrib/cirrus/CIModes.md
index 0b5a189a6..e7fcccf3c 100644
--- a/contrib/cirrus/CIModes.md
+++ b/contrib/cirrus/CIModes.md
@@ -43,8 +43,6 @@ of this document, it's not possible to override the behavior of `$CIRRUS_PR`.
## Cirrus Task contexts and runtime modes
### Intended general PR Tasks (*italic*: matrix)
-+ ext_svc_check
-+ automation
+ *build*
+ validate
+ bindings
@@ -76,8 +74,6 @@ of this document, it's not possible to override the behavior of `$CIRRUS_PR`.
+ release_test
### Intended `[CI:DOCS]` PR Tasks:
-+ ext_svc_check
-+ automation
+ *build*
+ validate
+ swagger
@@ -86,8 +82,6 @@ of this document, it's not possible to override the behavior of `$CIRRUS_PR`.
+ success
### Intended `[CI:COPR]` PR Tasks:
-+ ext_svc_check
-+ automation
+ *build*
+ validate
+ swagger
@@ -96,8 +90,6 @@ of this document, it's not possible to override the behavior of `$CIRRUS_PR`.
+ success
### Intend `[CI:BUILD]` PR Tasks:
-+ ext_svc_check
-+ automation
+ *build*
+ validate
+ consistency
@@ -109,8 +101,6 @@ of this document, it's not possible to override the behavior of `$CIRRUS_PR`.
+ artifacts
### Intended Branch tasks (and Cirrus-cron jobs, except "multiarch"):
-+ ext_svc_check
-+ *build*
+ swagger
+ *alt_build*
+ osx_alt_build
@@ -123,7 +113,6 @@ of this document, it's not possible to override the behavior of `$CIRRUS_PR`.
+ artifacts
### Intended for "multiarch" Cirrus-Cron (always a branch):
-+ ext_svc_check
+ image_build
+ meta
+ success
diff --git a/contrib/cirrus/ext_svc_check.sh b/contrib/cirrus/ext_svc_check.sh
deleted file mode 100755
index 146919c39..000000000
--- a/contrib/cirrus/ext_svc_check.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/bash
-
-set -eo pipefail
-
-# This script attempts basic confirmation of functional networking
-# by connecting to a set of essential external servers and failing
-# if any cannot be reached. 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 or another.
-
-# shellcheck source=./contrib/cirrus/lib.sh
-source $(dirname $0)/lib.sh
-
-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 . > /dev/null
-done
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
diff --git a/contrib/cirrus/runner.sh b/contrib/cirrus/runner.sh
index c44251e2f..d0657ab5f 100755
--- a/contrib/cirrus/runner.sh
+++ b/contrib/cirrus/runner.sh
@@ -19,21 +19,6 @@ set -eo pipefail
# shellcheck source=contrib/cirrus/lib.sh
source $(dirname $0)/lib.sh
-function _run_ext_svc() {
- $SCRIPT_BASE/ext_svc_check.sh
-}
-
-function _run_automation() {
- $SCRIPT_BASE/cirrus_yaml_test.py
-
- req_env_vars CI DEST_BRANCH IMAGE_SUFFIX TEST_FLAVOR TEST_ENVIRON \
- PODBIN_NAME PRIV_NAME DISTRO_NV CONTAINER USER HOME \
- UID AUTOMATION_LIB_PATH SCRIPT_BASE OS_RELEASE_ID \
- CG_FS_TYPE
- bigto ooe.sh dnf install -y ShellCheck # small/quick addition
- $SCRIPT_BASE/shellcheck.sh
-}
-
function _run_validate() {
# TODO: aarch64 images need python3-devel installed
# https://github.com/containers/automation_images/issues/159
@@ -423,6 +408,8 @@ function _bail_if_test_can_be_skipped() {
return 0
fi
+ # Defined by Cirrus-CI for all tasks
+ # shellcheck disable=SC2154
head=$CIRRUS_CHANGE_IN_REPO
base=$(git merge-base $DEST_BRANCH $head)
diffs=$(git diff --name-only $base $head)
diff --git a/contrib/cirrus/setup_environment.sh b/contrib/cirrus/setup_environment.sh
index 4c86bbcfa..e43231640 100755
--- a/contrib/cirrus/setup_environment.sh
+++ b/contrib/cirrus/setup_environment.sh
@@ -228,13 +228,11 @@ esac
# Required to be defined by caller: The primary type of testing that will be performed
# shellcheck disable=SC2154
case "$TEST_FLAVOR" in
- ext_svc) ;;
validate)
dnf install -y $PACKAGE_DOWNLOAD_DIR/python3*.rpm
# For some reason, this is also needed for validation
make .install.pre-commit .install.gitvalidation
;;
- automation) ;;
altbuild)
# Defined in .cirrus.yml
# shellcheck disable=SC2154
diff --git a/contrib/cirrus/shellcheck.sh b/contrib/cirrus/shellcheck.sh
deleted file mode 100755
index 667d30c91..000000000
--- a/contrib/cirrus/shellcheck.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-set -eo pipefail
-
-# shellcheck source=./contrib/cirrus/lib.sh
-source $(dirname $0)/lib.sh
-
-cd $CIRRUS_WORKING_DIR
-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
-
-echo "Shellcheck: PASS"