summaryrefslogtreecommitdiffstats
path: root/ansible_collections/community/okd/ci/incluster_integration.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/community/okd/ci/incluster_integration.sh')
-rwxr-xr-xansible_collections/community/okd/ci/incluster_integration.sh92
1 files changed, 92 insertions, 0 deletions
diff --git a/ansible_collections/community/okd/ci/incluster_integration.sh b/ansible_collections/community/okd/ci/incluster_integration.sh
new file mode 100755
index 00000000..3d2a55da
--- /dev/null
+++ b/ansible_collections/community/okd/ci/incluster_integration.sh
@@ -0,0 +1,92 @@
+#!/bin/bash -eu
+
+set -x
+
+NAMESPACE=${NAMESPACE:-default}
+
+# IMAGE_FORMAT is in the form $registry/$org/$image:$$component, ie
+# quay.io/openshift/release:$component
+# To test with your own image, build and push the test image
+# (using the Dockerfile in ci/Dockerfile)
+# and set the IMAGE_FORMAT environment variable so that it properly
+# resolves to your image. For example, quay.io/mynamespace/$component
+# would resolve to quay.io/mynamespace/molecule-test-runner
+# shellcheck disable=SC2034
+component='molecule-test-runner'
+if [[ -n "${MOLECULE_IMAGE}" ]]; then
+ IMAGE="${MOLECULE_IMAGE}"
+else
+ IMAGE="${IMAGE_FORMAT}"
+fi
+
+PULL_POLICY=${PULL_POLICY:-IfNotPresent}
+
+if ! oc get namespace "$NAMESPACE"
+then
+ oc create namespace "$NAMESPACE"
+fi
+
+oc project "$NAMESPACE"
+oc adm policy add-cluster-role-to-user cluster-admin -z default
+oc adm policy who-can create projectrequests
+
+echo "Deleting test job if it exists"
+oc delete job molecule-integration-test --wait --ignore-not-found
+
+echo "Creating molecule test job"
+cat << EOF | oc create -f -
+---
+apiVersion: batch/v1
+kind: Job
+metadata:
+ name: molecule-integration-test
+spec:
+ template:
+ spec:
+ containers:
+ - name: test-runner
+ image: ${IMAGE}
+ imagePullPolicy: ${PULL_POLICY}
+ command:
+ - make
+ - test-integration
+ restartPolicy: Never
+ backoffLimit: 2
+ completions: 1
+ parallelism: 1
+EOF
+
+function check_success {
+ oc wait --for=condition=complete job/molecule-integration-test --timeout 5s -n "$NAMESPACE" \
+ && oc logs job/molecule-integration-test \
+ && echo "Molecule integration tests ran successfully" \
+ && return 0
+ return 1
+}
+
+function check_failure {
+ oc wait --for=condition=failed job/molecule-integration-test --timeout 5s -n "$NAMESPACE" \
+ && oc logs job/molecule-integration-test \
+ && echo "Molecule integration tests failed, see logs for more information..." \
+ && return 0
+ return 1
+}
+
+runtime="30 minute"
+endtime=$(date -ud "$runtime" +%s)
+
+echo "Waiting for test job to complete"
+while [[ $(date -u +%s) -le $endtime ]]
+do
+ if check_success
+ then
+ exit 0
+ elif check_failure
+ then
+ exit 1
+ fi
+ sleep 10
+done
+
+oc logs job/molecule-integration-test
+exit 1