name: Container Orchestration Tests on: push: branches: [dev-iso, main] paths: - 'core/archipelago/src/**' - 'core/container/src/**' - 'scripts/container-*.sh' - 'scripts/reconcile-*.sh' - 'scripts/image-versions.sh' workflow_dispatch: jobs: unit-tests: runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v4 - name: Cache cargo registry uses: actions/cache@v3 with: path: | ~/.cargo/registry ~/.cargo/git core/target key: cargo-test-${{ hashFiles('core/Cargo.lock') }} - name: Run orchestration unit tests working-directory: core run: | source $HOME/.cargo/env 2>/dev/null || true echo "=== Container crate tests ===" cargo test -p archipelago-container --no-fail-fast 2>&1 echo "" echo "=== Orchestration integration tests ===" cargo test --test orchestration_tests --no-fail-fast 2>&1 - name: Verify cargo check (full crate) working-directory: core run: | source $HOME/.cargo/env 2>/dev/null || true cargo check --release 2>&1 smoke-tests: runs-on: ubuntu-latest needs: unit-tests timeout-minutes: 10 steps: - uses: actions/checkout@v4 - name: Run container smoke tests on .228 env: ARCHIPELAGO_SSH_KEY: ~/.ssh/archipelago-deploy run: | # Only run if SSH key exists (CI runner has deploy access) if [ -f "$ARCHIPELAGO_SSH_KEY" ]; then bash scripts/dev-container-test.sh --once else echo "⚠ SSH key not available — skipping live smoke tests" echo " To enable: add archipelago-deploy key to CI runner" fi