[#452] Backend: Replace mock referral yield calculation with real on-chain or ledger-backed accounting #6
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: Monorepo CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: [ main ] | |
| jobs: | |
| changes: | |
| name: Detect changed packages | |
| runs-on: ubuntu-latest | |
| outputs: | |
| frontend: ${{ steps.filter.outputs.frontend }} | |
| backend: ${{ steps.filter.outputs.backend }} | |
| contracts: ${{ steps.filter.outputs.contracts }} | |
| shared: ${{ steps.filter.outputs.shared }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Path filter | |
| id: filter | |
| uses: dorny/paths-filter@v3 | |
| with: | |
| filters: | | |
| frontend: | |
| - 'frontend/**' | |
| backend: | |
| - 'backend/**' | |
| contracts: | |
| - 'contracts/**' | |
| - 'Cargo.toml' | |
| - 'Cargo.lock' | |
| shared: | |
| - 'frontend/src/types/**' | |
| - 'backend/openapi.json' | |
| - 'Cargo.toml' | |
| - 'Cargo.lock' | |
| frontend-lint-test: | |
| name: Frontend lint + test | |
| runs-on: ubuntu-latest | |
| needs: changes | |
| if: needs.changes.outputs.frontend == 'true' | |
| defaults: | |
| run: | |
| working-directory: frontend | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Lint | |
| run: npm run lint | |
| - name: Unit tests | |
| run: npm run test:run | |
| frontend-build: | |
| name: Frontend build | |
| runs-on: ubuntu-latest | |
| needs: changes | |
| if: needs.changes.outputs.frontend == 'true' | |
| defaults: | |
| run: | |
| working-directory: frontend | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build | |
| run: npm run build | |
| backend-lint-test: | |
| name: Backend lint + test | |
| runs-on: ubuntu-latest | |
| needs: changes | |
| if: needs.changes.outputs.backend == 'true' | |
| defaults: | |
| run: | |
| working-directory: backend | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| cache-dependency-path: backend/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run npm audit | |
| run: npm audit --audit-level=high | |
| - name: Lint | |
| run: npm run lint | |
| - name: Unit tests | |
| run: npm run test | |
| backend-build: | |
| name: Backend build | |
| runs-on: ubuntu-latest | |
| needs: changes | |
| if: needs.changes.outputs.backend == 'true' | |
| defaults: | |
| run: | |
| working-directory: backend | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: npm | |
| cache-dependency-path: backend/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build | |
| run: npm run build | |
| contracts-ci: | |
| name: Contracts lint + test + build | |
| runs-on: ubuntu-latest | |
| needs: changes | |
| if: needs.changes.outputs.contracts == 'true' || needs.changes.outputs.shared == 'true' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Rust toolchain | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| components: clippy | |
| profile: minimal | |
| override: true | |
| - name: Cache Cargo registry | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo- | |
| - name: Run cargo fmt check | |
| run: cargo fmt --all -- --check | |
| - name: Run clippy | |
| run: cargo clippy --all-targets --all-features -- -D warnings | |
| - name: Run tests | |
| run: cargo test --all-features --workspace --locked --quiet | |
| working-directory: contracts | |
| - name: Add WASM target | |
| run: rustup target add wasm32-unknown-unknown | |
| - name: Build WASM artifacts | |
| run: | | |
| cd contracts | |
| cargo build --all --target wasm32-unknown-unknown --release |