Merge pull request #721 from yasinmuhd/feature/yasinmuhd-fixes #461
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 | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| # Cancel in-progress runs for the same branch on new pushes. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| # --------------------------------------------------------------------------- | |
| # Job 1: check — fast-fail on formatting errors and clippy warnings. | |
| # Runs first; if it fails the more expensive test/build jobs are skipped. | |
| # --------------------------------------------------------------------------- | |
| check: | |
| name: Format & Lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust (stable + rustfmt + clippy) | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| # Lightweight cache just for the registry index — no target/ needed here. | |
| - name: Cache Cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-registry- | |
| - name: Check formatting | |
| run: cargo fmt --all -- --check | |
| - name: Run Clippy | |
| run: cargo clippy --all-targets --all-features -- -D warnings | |
| env: | |
| STELLAR_NETWORK: testnet | |
| POLL_INTERVAL_SECONDS: "60" | |
| DATABASE_URL: "sqlite::memory:" | |
| # --------------------------------------------------------------------------- | |
| # Job 2: test — run the full test suite including integration tests. | |
| # --------------------------------------------------------------------------- | |
| test: | |
| name: Test Suite | |
| runs-on: ubuntu-latest | |
| needs: check | |
| env: | |
| STELLAR_NETWORK: testnet | |
| POLL_INTERVAL_SECONDS: "60" | |
| DATABASE_URL: "sqlite::memory:" | |
| RUST_LOG: error | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust (stable) | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Cargo artifacts | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-test-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-test- | |
| ${{ runner.os }}-cargo- | |
| - name: Install SQLite system library | |
| run: sudo apt-get update && sudo apt-get install -y libsqlite3-dev | |
| - name: Run all tests | |
| run: cargo test --all | |
| # --------------------------------------------------------------------------- | |
| # Job 3: build — verify the release binary compiles cleanly. | |
| # Runs in parallel with test; both depend on check passing first. | |
| # --------------------------------------------------------------------------- | |
| build: | |
| name: Release Build | |
| runs-on: ubuntu-latest | |
| needs: check | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust (stable) | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache Cargo artifacts | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo-release- | |
| ${{ runner.os }}-cargo- | |
| - name: Install SQLite system library | |
| run: sudo apt-get update && sudo apt-get install -y libsqlite3-dev | |
| - name: Build release binary | |
| run: cargo build --release | |
| env: | |
| STELLAR_NETWORK: testnet | |
| POLL_INTERVAL_SECONDS: "60" | |
| DATABASE_URL: "sqlite::memory:" |