refactor: remove molecule_ci_guard — adds complexity, no value

The cross-runner cancellation guard was killing healthy molecule slots
when unhealthy slots failed, defeating fail-fast: false. Replace with
direct molecule test execution.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Emil Simeonov
2026-08-09 02:19:08 +02:00
co-authored by Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent e7b2d4e6af
commit 6be805e5b1
4 changed files with 42 additions and 15 deletions
+35 -8
View File
@@ -201,15 +201,10 @@ jobs:
- name: Run molecule tests
if: env.SKIP != 'true' && steps.prune.outputs.should-run != 'false'
env:
GITEA_URL: ${{ github.server_url }}
CI_GITEA_API_TOKEN: ${{ secrets.CI_GITEA_API_TOKEN }}
CI_GITEA_USERNAME: ${{ vars.CI_GITEA_USERNAME }}
RUN_ID: ${{ github.run_id }}
ANSIBLE_INJECT_INVOCATION: "1"
JOB_NAME: ${{ github.job }}
MATRIX_INDEX: ${{ matrix.runner-index }}
GITEA_REPOSITORY: ${{ github.repository }}
DOCKER_HOST: unix:///var/run/docker.sock
ANSIBLE_INJECT_INVOCATION: "1"
run: |
. .venv/bin/activate 2>/dev/null || true
if [ -z "$TEST_PAIRS" ]; then exit 0; fi
@@ -220,8 +215,40 @@ jobs:
_TOKEN="$CI_GITEA_API_TOKEN"; [ -z "$_TOKEN" ] && _TOKEN="$CI_GITEA_TOKEN"
[ -z "$_TOKEN" ] && { echo "Gitea API token not set — skipping Docker login"; exit 0; }
echo "$_TOKEN" | docker login git.oblachno.oblachno.fyi -u "$CI_GITEA_USERNAME" --password-stdin
# shellcheck disable=SC2086 # intentional word splitting for argument expansion
python3 -m devx.molecule.molecule_ci_guard $TEST_PAIRS
# Run each molecule test pair sequentially.
# Pairs are 4-part: scenario|platform_name|platform_image|platform_command
# Spaces in platform_command are encoded as __SPACE__.
role_dir="ansible/roles/gitea_runner"
# shellcheck disable=SC2086 # intentional word splitting for pair list
for pair in $TEST_PAIRS; do
IFS='|' read -r scenario platform_name platform_image platform_command <<< "$pair"
platform_command="${platform_command//__SPACE__/ }"
export MOLECULE_PLATFORM_NAME="$platform_name"
export MOLECULE_PLATFORM_IMAGE="$platform_image"
if [ -n "$platform_command" ]; then
export MOLECULE_PLATFORM_COMMAND="$platform_command"
else
unset MOLECULE_PLATFORM_COMMAND
fi
export ANSIBLE_ALLOW_BROKEN_CONDITIONALS=true
echo "--- Running: $scenario on $platform_name ---"
if [ "$scenario" = "default" ]; then
molecule test --cwd "$role_dir" || {
echo "FAILED: $pair — running molecule destroy"
molecule destroy --cwd "$role_dir" 2>/dev/null || true
exit 1
}
else
molecule test -s "$scenario" --cwd "$role_dir" || {
echo "FAILED: $pair — running molecule destroy"
molecule destroy -s "$scenario" --cwd "$role_dir" 2>/dev/null || true
exit 1
}
fi
echo "PASSED: $pair"
docker system prune -af --volumes 2>/dev/null || true
done
echo "All molecule tests passed."
auto-merge:
# Auto-merge runs after validate + molecule-tests pass (or molecule is skipped).