docs: add QLX_ONBOARDING_LIMITS.md #2660
Workflow file for this run
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: Soroban Smart Contracts CI | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| branches: ["main"] | |
| workflow_dispatch: | |
| concurrency: | |
| group: soroban-ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - rust: stable | |
| target: wasm32-unknown-unknown | |
| test_target: no_accidental_mainnet_fixture | |
| - rust: stable | |
| target: wasm32-unknown-unknown | |
| test_target: wasm_build_size_budget | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Detect contract-impacting changes | |
| id: changes | |
| if: github.event_name == 'pull_request' | |
| uses: dorny/paths-filter@v3 | |
| with: | |
| filters: | | |
| contracts: | |
| - 'quicklendx-contracts/**' | |
| - name: Skip contract build for docs-only PRs | |
| if: github.event_name == 'pull_request' && steps.changes.outputs.contracts != 'true' | |
| run: echo "Docs-only PR detected; skipping Soroban contract build steps." | |
| - name: Install Rust | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| source $HOME/.cargo/env | |
| rustup toolchain install stable --profile minimal | |
| rustup default stable | |
| - name: Install Rust target for Soroban | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| source $HOME/.cargo/env | |
| rustup target add ${{ matrix.target }} | |
| rustup target add wasm32v1-none || true | |
| - name: Detect optional Stellar CLI | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| source $HOME/.cargo/env | |
| if command -v stellar >/dev/null 2>&1; then | |
| stellar --version | |
| else | |
| echo "stellar CLI not found; WASM build step will fall back to cargo." | |
| fi | |
| - name: Build Cargo project | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| cd quicklendx-contracts | |
| cargo build --target wasm32v1-none --verbose | |
| - name: Run targeted regression test | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| source $HOME/.cargo/env | |
| cd quicklendx-contracts | |
| cargo test --test ${{ matrix.test_target }} --verbose | |
| - name: Check code quality | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| source $HOME/.cargo/env | |
| cd quicklendx-contracts | |
| cargo check --lib --verbose | |
| - name: Install wasm-opt (binaryen) for size reduction | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| if command -v apt-get >/dev/null 2>&1; then | |
| sudo apt-get update | |
| sudo apt-get install -y binaryen | |
| elif command -v brew >/dev/null 2>&1; then | |
| brew install binaryen | |
| else | |
| echo "No supported package manager found for binaryen install." | |
| exit 1 | |
| fi | |
| wasm-opt --version | |
| - name: Build and check WASM size budget (shell script) | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| source $HOME/.cargo/env | |
| quicklendx-contracts/scripts/check-wasm-size.sh | |
| - name: Build WASM for release | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| source $HOME/.cargo/env | |
| cd quicklendx-contracts | |
| cargo build --target ${{ matrix.target }} --release --verbose | |
| - name: Run Cargo tests | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| source $HOME/.cargo/env | |
| cargo test --verbose | |
| - name: Test coverage (baseline + admin gate) | |
| if: github.event_name != 'pull_request' || steps.changes.outputs.contracts == 'true' | |
| run: | | |
| source $HOME/.cargo/env | |
| cargo install cargo-llvm-cov | |
| # TODO: restore the original 95% gate after the legacy test suite is repaired. | |
| cargo llvm-cov --lib --fail-under-lines 50 | |
| cd quicklendx-contracts | |
| cargo llvm-cov clean --workspace | |
| cargo llvm-cov --lib --lcov --output-path coverage/lcov.info | |
| bash scripts/check-admin-coverage.sh coverage/lcov.info |