fix(lsp): autocomplete silent failure — sync files + error notifications #265
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
| # ============================================================ | |
| # StellarForge — CI Pipeline (§15.2) | |
| # | |
| # On every push: install → lint → typecheck → unit tests → Next.js build | |
| # On PR to main: + Docker build + Playwright E2E (headless) | |
| # A red pipeline means the change isn't done — fix before merging. | |
| # ============================================================ | |
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| # Cancel in-progress runs for the same branch | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # --- Lint + Typecheck --- | |
| lint: | |
| name: Lint & Typecheck | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Lint | |
| run: bun run lint | |
| - name: Typecheck | |
| run: npx tsc --noEmit || true # non-blocking for now | |
| # --- Build --- | |
| build: | |
| name: Next.js Build | |
| runs-on: ubuntu-latest | |
| needs: lint | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Build | |
| run: bun run build | |
| env: | |
| DATABASE_URL: "postgresql://dummy:dummy@localhost:5432/dummy" | |
| SESSION_SECRET: "ci-build-secret-32-chars-minimum-padding" | |
| # --- Docker Build (PR only) --- | |
| docker: | |
| name: Docker Build | |
| runs-on: ubuntu-latest | |
| needs: build | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build Docker image | |
| uses: docker/build-push-action@v5 | |
| with: | |
| context: . | |
| file: ./Dockerfile | |
| push: false | |
| tags: stellarforge:ci | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| # --- Playwright E2E (PR only) --- | |
| e2e: | |
| name: Playwright E2E | |
| runs-on: ubuntu-latest | |
| needs: build | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: latest | |
| - name: Install dependencies | |
| run: bun install --frozen-lockfile | |
| - name: Install Playwright browsers | |
| run: npx playwright install --with-deps chromium | |
| - name: Run Playwright tests | |
| run: npx playwright test || true # non-blocking until tests are written | |
| env: | |
| DATABASE_URL: "postgresql://dummy:dummy@localhost:5432/dummy" | |
| SESSION_SECRET: "ci-e2e-secret-32-chars-minimum-padding" |