Created
January 23, 2026 20:31
-
-
Save AlanCoding/9abef613cb093fc7d55c4f1f3deb17bb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| set -euo pipefail | |
| ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" | |
| AWX_OPERATOR_DIR="${AWX_OPERATOR_DIR:-}" | |
| DEBUG_OUTPUT_DIR="${DEBUG_OUTPUT_DIR:-/tmp/awx_operator_molecule_test}" | |
| PYTHON_BIN="${PYTHON_BIN:-python}" | |
| REMOVE_SYSTEM_KUSTOMIZE="${REMOVE_SYSTEM_KUSTOMIZE:-}" | |
| if [[ -z "$AWX_OPERATOR_DIR" ]]; then | |
| if [[ -d "$ROOT_DIR/../awx-operator" ]]; then | |
| AWX_OPERATOR_DIR="$ROOT_DIR/../awx-operator" | |
| elif [[ -d "$ROOT_DIR/awx-operator" ]]; then | |
| AWX_OPERATOR_DIR="$ROOT_DIR/awx-operator" | |
| else | |
| echo "awx-operator repo not found." | |
| echo "Set AWX_OPERATOR_DIR or clone: git clone https://github.com/ansible/awx-operator ../awx-operator" | |
| exit 1 | |
| fi | |
| fi | |
| require_cmd() { | |
| if ! command -v "$1" >/dev/null 2>&1; then | |
| echo "Missing required command: $1" | |
| exit 1 | |
| fi | |
| } | |
| require_cmd "$PYTHON_BIN" | |
| require_cmd make | |
| require_cmd docker | |
| require_cmd timeout | |
| AWX_REAL="$(realpath "$ROOT_DIR")" | |
| AWX_OPERATOR_REAL="$(realpath "$AWX_OPERATOR_DIR")" | |
| echo "Using awx: $AWX_REAL" | |
| echo "Using awx-operator: $AWX_OPERATOR_REAL" | |
| echo "Installing playbook dependencies" | |
| "$PYTHON_BIN" -m pip install docker | |
| echo "Check Python version" | |
| make -C "$AWX_REAL" print-PYTHON | |
| AWX_TEST_IMAGE_FULL="${AWX_TEST_IMAGE_FULL:-}" | |
| if [[ -z "$AWX_TEST_IMAGE_FULL" ]]; then | |
| echo "AWX_TEST_IMAGE_FULL is required (example: ghcr.io/ansible/awx_devel:devel)" | |
| exit 1 | |
| fi | |
| if [[ "$AWX_TEST_IMAGE_FULL" != *:* ]]; then | |
| echo "AWX_TEST_IMAGE_FULL must include a tag (example: ghcr.io/ansible/awx_devel:devel)" | |
| exit 1 | |
| fi | |
| export AWX_TEST_IMAGE="${AWX_TEST_IMAGE_FULL%:*}" | |
| export AWX_TEST_VERSION="${AWX_TEST_IMAGE_FULL##*:}" | |
| export AWX_EE_TEST_IMAGE="${AWX_EE_TEST_IMAGE:-quay.io/ansible/awx-ee:latest}" | |
| export STORE_DEBUG_OUTPUT="${STORE_DEBUG_OUTPUT:-true}" | |
| timed_out=false | |
| set +e | |
| timeout 15m bash -lc " | |
| set -e | |
| cd \"$AWX_OPERATOR_REAL\" | |
| \"$PYTHON_BIN\" -m pip install -r molecule/requirements.txt | |
| \"$PYTHON_BIN\" -m pip install PyYAML | |
| if rg -q \"https://github.com/ansible/awx.git#/awx_collection/\" molecule/requirements.yml; then | |
| \"$AWX_REAL/tools/scripts/rewrite-awx-operator-requirements.py\" molecule/requirements.yml \"$AWX_REAL\" | |
| else | |
| echo \"Skipping rewrite: molecule/requirements.yml already points to local awx collection\" | |
| fi | |
| ansible-galaxy collection install -r molecule/requirements.yml | |
| if command -v kustomize >/dev/null 2>&1 && [[ -n \"$REMOVE_SYSTEM_KUSTOMIZE\" ]]; then | |
| if command -v sudo >/dev/null 2>&1 && [[ \"$EUID\" -ne 0 ]]; then | |
| sudo rm -f \"\$(command -v kustomize)\" | |
| else | |
| rm -f \"\$(command -v kustomize)\" | |
| fi | |
| fi | |
| make kustomize | |
| KUSTOMIZE_PATH=\"\$(readlink -f bin/kustomize)\" molecule -v test -s kind -- --skip-tags=replicas | |
| " | |
| rc=$? | |
| if [[ $rc -eq 124 ]]; then | |
| timed_out=true | |
| fi | |
| set -e | |
| if [[ "$timed_out" == "true" ]]; then | |
| echo "Molecule test timed out; collecting debug output in $DEBUG_OUTPUT_DIR" | |
| mkdir -p "$DEBUG_OUTPUT_DIR" | |
| if command -v kind >/dev/null 2>&1; then | |
| for cluster in $(kind get clusters 2>/dev/null); do | |
| kind export logs "$DEBUG_OUTPUT_DIR/$cluster" --name "$cluster" || true | |
| done | |
| fi | |
| if command -v kubectl >/dev/null 2>&1; then | |
| kubectl get all -A -o wide > "$DEBUG_OUTPUT_DIR/kubectl-get-all.txt" || true | |
| kubectl get pods -A -o wide > "$DEBUG_OUTPUT_DIR/kubectl-get-pods.txt" || true | |
| kubectl describe pods -A > "$DEBUG_OUTPUT_DIR/kubectl-describe-pods.txt" || true | |
| fi | |
| docker ps -a > "$DEBUG_OUTPUT_DIR/docker-ps.txt" || true | |
| fi | |
| exit $rc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment