Repository navigation
feat(contracts): add admin emergency stop to critical contracts #971
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: CI | |
| on: | |
| push: | |
| branches: [ main, dev, develop ] | |
| pull_request: | |
| branches: [ main, dev, develop ] | |
| jobs: | |
| # Frontend CI | |
| frontend: | |
| name: Frontend | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: ./frontend | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup 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: Check PWA assets | |
| run: npm run check:pwa-assets | |
| - name: Lint code | |
| run: npm run lint | |
| - name: Type check | |
| run: npx tsc --noEmit | |
| - name: Run tests | |
| run: npm test -- --ci --forceExit --passWithNoTests | |
| - name: Build | |
| run: npm run build | |
| env: | |
| NODE_ENV: production | |
| # Server (TypeScript) CI | |
| server: | |
| name: Server | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| defaults: | |
| run: | |
| working-directory: ./server | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '18' | |
| cache: 'npm' | |
| cache-dependency-path: server/package-lock.json | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Generate Prisma Client | |
| run: npm run prisma:generate | |
| - name: Type check (Lint) | |
| run: npm run lint | |
| - name: Build | |
| run: npm run build | |
| # Backend database migration CI | |
| backend-migrations: | |
| name: Backend Migrations | |
| runs-on: ubuntu-latest | |
| services: | |
| postgres: | |
| image: postgres:14 | |
| env: | |
| POSTGRES_USER: arenax | |
| POSTGRES_PASSWORD: arenax | |
| POSTGRES_DB: arenax_ci | |
| ports: | |
| - 5432:5432 | |
| options: >- | |
| --health-cmd "pg_isready -U arenax -d arenax_ci" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| env: | |
| DATABASE_URL: postgres://arenax:arenax@localhost:5432/arenax_ci | |
| defaults: | |
| run: | |
| working-directory: ./backend | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| ~/.cargo/bin/sqlx | |
| key: ${{ runner.os }}-cargo-sqlx-cli-${{ hashFiles('backend/Cargo.lock') }} | |
| - name: Install SQLx CLI | |
| run: | | |
| if ! command -v sqlx >/dev/null 2>&1; then | |
| cargo install sqlx-cli --version 0.8.6 --no-default-features --features rustls,postgres --locked | |
| fi | |
| - name: Verify migration files | |
| run: ./scripts/verify-migrations.sh | |
| - name: Apply migrations | |
| run: ./scripts/migrate.sh | |
| - name: Rollback verification (up -> down -> up, #871) | |
| env: | |
| SKIP_BACKUP: "1" # CI database is disposable; never skip the backup on shared data | |
| run: | | |
| chmod +x ./scripts/rollback-verify.sh | |
| ./scripts/rollback-verify.sh | |
| # Contracts CI (Rust) | |
| contracts: | |
| name: Contracts | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| defaults: | |
| run: | |
| working-directory: ./contracts | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt, clippy | |
| - name: Install wasm target | |
| run: rustup target add wasm32-unknown-unknown | |
| - name: Cache cargo | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| contracts/target | |
| key: ${{ runner.os }}-cargo-contracts-${{ hashFiles('contracts/Cargo.lock') }} | |
| - name: Check formatting | |
| run: cargo fmt --all -- --check | |
| - name: Run clippy | |
| run: cargo clippy --all-targets --all-features -- -D warnings | |
| - name: Build contracts | |
| run: cargo build --target wasm32-unknown-unknown --release | |
| - name: Run tests | |
| run: cargo test | |
| # Frontend E2E tests | |
| e2e: | |
| name: E2E Tests | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: ./frontend | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup 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: Install Playwright browsers | |
| run: npx playwright install --with-deps chromium | |
| - name: Build app | |
| run: npm run build | |
| env: | |
| NODE_ENV: production | |
| - name: Run E2E tests | |
| run: npm run test:e2e | |
| env: | |
| PLAYWRIGHT_BASE_URL: http://localhost:3000 | |
| CI: true | |
| - name: Upload Playwright report | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: playwright-report | |
| path: frontend/playwright-report/ | |
| retention-days: 7 |