CI Integration #97
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
| name: CI Integration | |
| on: | |
| workflow_run: | |
| workflows: ["CI Fast"] | |
| types: [completed] | |
| branches: [main] | |
| workflow_dispatch: | |
| concurrency: | |
| group: >- | |
| ci-integration-${{ | |
| github.event_name == 'workflow_run' | |
| && github.event.workflow_run.head_sha | |
| || github.run_id | |
| }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| actions: read | |
| jobs: | |
| workflow-file-push: | |
| if: github.event_name == 'push' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - run: echo "Workflow file updated on main; integration runs after CI Fast via workflow_run." | |
| gate: | |
| if: >- | |
| github.event_name == 'workflow_dispatch' || | |
| ( | |
| github.event_name == 'workflow_run' && | |
| github.event.workflow_run.conclusion == 'success' && | |
| github.event.workflow_run.event == 'push' && | |
| github.event.workflow_run.head_branch == 'main' | |
| ) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - run: echo "CI Fast passed on main; running integration tier." | |
| prepare-spanda: | |
| needs: gate | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/fetch-or-build-spanda | |
| id: fetch-spanda | |
| with: | |
| source-run-id: ${{ github.event.workflow_run.id || '' }} | |
| require-download: ${{ github.event_name == 'workflow_run' && 'true' || 'false' }} | |
| docs-build: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: cargo doc --workspace --no-deps | |
| - run: python3 scripts/validate_documentation.py --warn --report | |
| - name: Generate example docs with release binary | |
| env: | |
| SPANDA_BIN: ${{ github.workspace }}/target/release/spanda | |
| run: | | |
| "$SPANDA_BIN" doc examples/ --out /tmp/spanda-doc-test | |
| - run: python3 scripts/generate_spanda_reference.py | |
| - run: python3 scripts/sync_mdbook_sources.py | |
| - run: | | |
| curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.40/mdbook-v0.4.40-x86_64-unknown-linux-gnu.tar.gz | tar xz | |
| ./mdbook build docs-site | |
| core-smokes: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/readiness_smoke.sh scripts/sdk_smoke.sh scripts/check_all_examples.sh | |
| chmod +x tests/readme_commands/run.sh | |
| export SPANDA_BIN="${{ github.workspace }}/target/release/spanda" | |
| ./scripts/readiness_smoke.sh | |
| ./scripts/sdk_smoke.sh | |
| ./scripts/check_all_examples.sh | |
| ./tests/readme_commands/run.sh | |
| ./tests/readme_commands/run.sh --golden | |
| distributed-decisions: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: chmod +x scripts/distributed_decisions_smoke.sh | |
| - run: SPANDA_BIN=${{ github.workspace }}/target/release/spanda ./scripts/distributed_decisions_smoke.sh | |
| bio-inspired-autonomy: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: chmod +x scripts/cognitive_resilience_smoke.sh | |
| - run: SPANDA_BIN=${{ github.workspace }}/target/release/spanda ./scripts/cognitive_resilience_smoke.sh | |
| release-hardening: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: npm ci --prefix sdk/typescript | |
| - run: | | |
| export SPANDA_BIN="${{ github.workspace }}/target/release/spanda" | |
| chmod +x scripts/cross_interface_consistency.sh tests/readme_commands/run.sh | |
| ./scripts/cross_interface_consistency.sh | |
| - run: cargo test -p spanda-plugin --test security_regression --test property_manifest | |
| - run: cargo test -p spanda-package --test security_regression --test property_manifest | |
| - run: cargo test -p spanda-decision --test security_regression | |
| - run: cargo test -p spanda-recovery --test security_regression | |
| - run: cargo test -p spanda-parser --test property_parser | |
| - run: cargo test -p spanda-config --test property_resolver | |
| - run: cargo test -p spanda-policy --test property_policy | |
| - run: cargo test -p spanda-capability --test property_registry | |
| robotics-golden-path: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: chmod +x examples/robotics/golden_path_deploy.sh | |
| - run: | | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| ./examples/robotics/golden_path_deploy.sh | |
| telemetry-golden-path: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/telemetry_store_golden_path.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| export SPANDA_BIN="${{ github.workspace }}/target/release/spanda" | |
| ./scripts/telemetry_store_golden_path.sh | |
| twin-cloud-golden-path: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/twin_cloud_unified_path.sh scripts/hosted_twin_cloud_smoke.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| export SPANDA_BIN="${{ github.workspace }}/target/release/spanda" | |
| ./scripts/twin_cloud_unified_path.sh | |
| ./scripts/hosted_twin_cloud_smoke.sh | |
| registry-golden-path: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/registry_golden_path.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| ./scripts/registry_golden_path.sh | |
| ci-verify-golden-path: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/ci_verify_golden_path.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| ./scripts/ci_verify_golden_path.sh | |
| killer-demo-golden-path: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/killer_demo_golden_path.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| ./scripts/killer_demo_golden_path.sh | |
| showcase-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: npm ci | |
| - run: | | |
| chmod +x scripts/showcase_smoke.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| export SPANDA_BIN="${{ github.workspace }}/target/release/spanda" | |
| ./scripts/showcase_smoke.sh | |
| adas-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/adas_smoke.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| export SPANDA_BIN="${{ github.workspace }}/target/release/spanda" | |
| ./scripts/adas_smoke.sh | |
| agriculture-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/solution_blueprints_smoke.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| export SPANDA_BIN="${{ github.workspace }}/target/release/spanda" | |
| ./scripts/solution_blueprints_smoke.sh | |
| smart-spaces-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: | | |
| chmod +x scripts/smart_spaces_smoke.sh | |
| export PATH="${{ github.workspace }}/target/release:$PATH" | |
| export SPANDA_BIN="${{ github.workspace }}/target/release/spanda" | |
| ./scripts/smart_spaces_smoke.sh | |
| enterprise-ops-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: chmod +x scripts/enterprise_ops_smoke.sh | |
| - run: SPANDA_BIN=${{ github.workspace }}/target/release/spanda ./scripts/enterprise_ops_smoke.sh | |
| operational-governance-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: chmod +x scripts/operational_governance_smoke.sh | |
| - run: SPANDA_BIN=${{ github.workspace }}/target/release/spanda ./scripts/operational_governance_smoke.sh | |
| entity-model-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: cargo build -p spanda-sdk --examples | |
| - run: npm ci | |
| - run: npm ci --prefix sdk/typescript | |
| - run: chmod +x scripts/entity_model_smoke.sh | |
| - run: SPANDA_BIN=${{ github.workspace }}/target/release/spanda ./scripts/entity_model_smoke.sh | |
| entity-mesh-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: npm ci | |
| - run: npm ci --prefix sdk/typescript | |
| - run: chmod +x scripts/entity_mesh_smoke.sh | |
| - run: SPANDA_BIN=${{ github.workspace }}/target/release/spanda ./scripts/entity_mesh_smoke.sh | |
| differentiation-smoke: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: chmod +x scripts/differentiation_smoke.sh | |
| - run: SPANDA_BIN=${{ github.workspace }}/target/release/spanda ./scripts/differentiation_smoke.sh | |
| lsp: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| - uses: ./.github/actions/setup-rust | |
| - uses: ./.github/actions/with-spanda-bin | |
| with: | |
| build-if-missing: "false" | |
| - run: npm ci | |
| - run: npm run build --workspace=@spanda/lsp | |
| - run: npm test -- tests/lsp.test.ts | |
| wasm: | |
| needs: prepare-spanda | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: ./.github/actions/setup-rust | |
| - run: rustup target add wasm32-unknown-unknown | |
| - run: cargo check -p spanda-telemetry-store --target wasm32-unknown-unknown --no-default-features | |
| - run: cargo check -p spanda-wasm --target wasm32-unknown-unknown | |
| - run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | |
| - run: npm run build:wasm | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| - run: npm ci | |
| - run: npm run web:build | |
| vscode-extension: | |
| needs: [prepare-spanda, lsp] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.workflow_run.head_sha || github.sha }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| cache: npm | |
| - run: npm ci | |
| - run: npm run build --workspace=@spanda/lsp | |
| - run: npm install --prefix editor/vscode | |
| - run: npm run package:ci --prefix editor/vscode |