feat(domain): explicit state machines for Loan, Vehicle, and Investment #140
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: | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| pull-request-checks: | |
| name: Pull request checks | |
| if: github.event_name == 'pull_request' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| # Pull requests intentionally receive no repository secrets. These inert | |
| # values keep build-time validation deterministic, including for forks. | |
| env: | |
| NEXT_PUBLIC_APP_URL: http://localhost:3000 | |
| MONGODB_URI: mongodb://localhost:27017/chainmove-ci | |
| JWT_SECRET: ci-only-placeholder-not-used-in-production | |
| ENABLE_MOCK_PAYMENTS: "true" | |
| ENABLE_MOCK_EMAILS: "true" | |
| ENABLE_MOCK_STELLAR: "true" | |
| NEXT_TELEMETRY_DISABLED: "1" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Lint | |
| run: npm run lint | |
| - name: TypeScript check | |
| run: npm run typecheck | |
| - name: API contract tests | |
| run: npm run test:contracts | |
| - name: OpenAPI contract checks | |
| run: npm run openapi:check | |
| - name: Build | |
| run: npm run build | |
| main-branch-checks: | |
| name: Main branch checks | |
| if: github.event_name == 'push' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| # Secret-backed values are restricted to trusted main-branch runs. Private | |
| # signing and deployment credentials are not needed by CI and stay omitted. | |
| env: | |
| NEXT_PUBLIC_APP_URL: ${{ secrets.NEXT_PUBLIC_APP_URL }} | |
| MONGODB_URI: ${{ secrets.MONGODB_URI }} | |
| JWT_SECRET: ${{ secrets.JWT_SECRET }} | |
| NEXT_PUBLIC_PRIVY_APP_ID: ${{ secrets.NEXT_PUBLIC_PRIVY_APP_ID }} | |
| PRIVY_APP_SECRET: ${{ secrets.PRIVY_APP_SECRET }} | |
| PRIVY_JWKS_URL: ${{ secrets.PRIVY_JWKS_URL }} | |
| PAYSTACK_PUBLIC_KEY: ${{ secrets.PAYSTACK_PUBLIC_KEY }} | |
| PAYSTACK_SECRET_KEY: ${{ secrets.PAYSTACK_SECRET_KEY }} | |
| RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }} | |
| BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} | |
| ENABLE_MOCK_PAYMENTS: "true" | |
| ENABLE_MOCK_EMAILS: "true" | |
| ENABLE_MOCK_STELLAR: "true" | |
| NEXT_TELEMETRY_DISABLED: "1" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: npm | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Lint | |
| run: npm run lint | |
| - name: TypeScript check | |
| run: npm run typecheck | |
| - name: API contract tests | |
| run: npm run test:contracts | |
| - name: OpenAPI contract checks | |
| run: npm run openapi:check | |
| - name: Build | |
| run: npm run build |