mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
The telegram-tests, windows-build, wasm-wit-compat, and docker-build jobs were skipped during staging CI because their `if` conditions only matched `push` and `pull_request` events. When staging-ci.yml calls test.yml via workflow_call, github.event_name is `schedule` (inherited from the caller), which matched neither condition. Invert the conditions to blocklist the one case we want to skip (PRs targeting staging) instead of allowlisting specific events. This handles schedule, workflow_dispatch, and any future trigger types. Co-authored-by: Claude Opus 4.6 <[email protected]>
160 lines
5.0 KiB
YAML
160 lines
5.0 KiB
YAML
name: Run Tests
|
|
on:
|
|
workflow_call:
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
tests:
|
|
name: Tests (${{ matrix.name }})
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: all-features
|
|
flags: "--features postgres,libsql,html-to-markdown"
|
|
- name: default
|
|
flags: ""
|
|
- name: libsql-only
|
|
flags: "--no-default-features --features libsql"
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: wasm32-wasip2
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
key: ${{ matrix.name }}
|
|
- name: Install cargo-component
|
|
run: cargo install cargo-component --locked || true
|
|
- name: Build WASM channels (for integration tests)
|
|
run: ./scripts/build-wasm-extensions.sh --channels
|
|
- name: Run Tests
|
|
run: cargo test ${{ matrix.flags }} -- --nocapture
|
|
|
|
telegram-tests:
|
|
name: Telegram Channel Tests
|
|
if: >
|
|
github.event_name != 'pull_request' ||
|
|
github.base_ref != 'staging'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
- uses: Swatinem/rust-cache@v2
|
|
- name: Run Telegram Channel Tests
|
|
run: cargo test --manifest-path channels-src/telegram/Cargo.toml -- --nocapture
|
|
|
|
windows-build:
|
|
name: Windows Build (${{ matrix.name }})
|
|
if: >
|
|
github.event_name != 'pull_request' ||
|
|
github.base_ref != 'staging'
|
|
runs-on: windows-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: all-features
|
|
flags: "--all-features"
|
|
- name: default
|
|
flags: ""
|
|
- name: libsql-only
|
|
flags: "--no-default-features --features libsql"
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
key: windows-${{ matrix.name }}
|
|
- name: Check compilation
|
|
run: cargo check --all --benches --tests --examples ${{ matrix.flags }}
|
|
|
|
wasm-wit-compat:
|
|
name: WASM WIT Compatibility
|
|
if: >
|
|
github.event_name != 'pull_request' ||
|
|
github.base_ref != 'staging'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: wasm32-wasip2
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
key: wasm-extensions
|
|
- name: Install cargo-component
|
|
run: cargo install cargo-component --locked || true
|
|
- name: Build all WASM extensions against current WIT
|
|
run: ./scripts/build-wasm-extensions.sh
|
|
- name: Instantiation test (host linker compatibility)
|
|
run: cargo test --all-features wit_compat -- --nocapture
|
|
|
|
docker-build:
|
|
name: Docker Build
|
|
if: >
|
|
github.event_name != 'pull_request' ||
|
|
github.base_ref != 'staging'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
- name: Build Docker image
|
|
run: docker build -t ironclaw-test:ci .
|
|
|
|
version-check:
|
|
name: Version Bump Check
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'pull_request'
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Check version bumps for changed extensions
|
|
env:
|
|
PR_LABELS: ${{ join(github.event.pull_request.labels.*.name, ',') }}
|
|
run: ./scripts/check-version-bumps.sh
|
|
|
|
# Roll-up job for branch protection
|
|
run-tests:
|
|
name: Run Tests
|
|
runs-on: ubuntu-latest
|
|
if: always()
|
|
needs: [tests, telegram-tests, wasm-wit-compat, docker-build, windows-build, version-check]
|
|
steps:
|
|
- run: |
|
|
# Unit tests must always pass
|
|
if [[ "${{ needs.tests.result }}" != "success" ]]; then
|
|
echo "Unit tests failed"
|
|
exit 1
|
|
fi
|
|
# Gated jobs: must pass on promotion PRs / push, skipped on developer PRs
|
|
for job in telegram-tests wasm-wit-compat docker-build windows-build version-check; do
|
|
case "$job" in
|
|
telegram-tests) result="${{ needs.telegram-tests.result }}" ;;
|
|
wasm-wit-compat) result="${{ needs.wasm-wit-compat.result }}" ;;
|
|
docker-build) result="${{ needs.docker-build.result }}" ;;
|
|
windows-build) result="${{ needs.windows-build.result }}" ;;
|
|
version-check) result="${{ needs.version-check.result }}" ;;
|
|
esac
|
|
if [[ "$result" == "failure" || "$result" == "cancelled" ]]; then
|
|
echo "$job failed"
|
|
exit 1
|
|
fi
|
|
done
|