Skip to content

Staging Nightly

Staging Nightly #21

name: Staging Nightly
on:
workflow_dispatch:
schedule:
# Early UTC morning, after normal PR activity has usually settled.
- cron: "17 7 * * *"
permissions:
contents: read
concurrency:
group: staging-nightly-${{ github.ref }}
cancel-in-progress: false
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
docker-smoke:
name: Docker Gateway Smoke
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Run Docker smoke stack
run: bash scripts/manual-docker-test.sh
env:
CALCIFORGE_STAGING_ARTIFACT_DIR: staging-artifacts/docker-smoke
- name: Upload Docker smoke artifacts
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: docker-smoke-artifacts
path: staging-artifacts/docker-smoke
if-no-files-found: ignore
real-matrix-e2e:
name: Real Matrix E2E
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
run: |
rustup toolchain install stable --profile minimal
rustup default stable
- name: Cache cargo dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-staging-matrix-${{ hashFiles('**/Cargo.lock') }}
- name: Build Calciforge with Matrix channel
run: cargo build -p calciforge --features channel-matrix
- name: Run real Matrix homeserver E2E
run: python3 scripts/matrix-real-e2e.py
synthetic-gateway-e2e:
name: Synthetic Gateway E2E
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
run: |
rustup toolchain install stable --profile minimal
rustup default stable
- name: Cache cargo dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-staging-synthetic-${{ hashFiles('**/Cargo.lock') }}
- name: Build Calciforge
run: cargo build -p calciforge
- name: Run synthetic model gateway E2E
run: python3 scripts/model-gateway-synthetic-e2e.py
boundary-aggression-nightly:
name: Boundary Aggression Nightly
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
run: |
rustup toolchain install stable --profile minimal
rustup default stable
- name: Cache cargo dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-boundary-nightly-${{ hashFiles('**/Cargo.lock') }}
- name: Run longer boundary aggression sweep
run: bash scripts/boundary-aggression.sh nightly
boundary-fuzz-nightly:
name: Boundary Fuzz Nightly
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
run: |
rustup toolchain install stable --profile minimal
rustup default stable
- name: Cache cargo dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.cargo/bin
target
fuzz/target
key: ${{ runner.os }}-cargo-boundary-fuzz-${{ hashFiles('**/Cargo.lock', 'fuzz/Cargo.toml') }}
- name: Run nightly byte-level boundary fuzzers
run: bash scripts/boundary-fuzz.sh nightly
boundary-long-exploration:
name: Boundary Long Exploration
runs-on: ubuntu-latest
timeout-minutes: 75
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install Rust toolchain
run: |
rustup toolchain install stable --profile minimal
rustup default stable
- name: Cache cargo dependencies
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.cargo/bin
target
fuzz/target
key: ${{ runner.os }}-cargo-boundary-long-${{ hashFiles('**/Cargo.lock', 'fuzz/Cargo.toml') }}
- name: Run one-hour mixed boundary exploration
run: bash scripts/boundary-explore-long.sh one-hour all
- name: Upload boundary exploration artifacts
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: boundary-long-exploration-artifacts
path: boundary-artifacts
if-no-files-found: ignore