name: CI on: pull_request: push: branches: [main] permissions: contents: read concurrency: group: ci-${{ github.ref }} cancel-in-progress: true jobs: verificar: name: Lint, design e build runs-on: ubuntu-latest timeout-minutes: 15 env: # O Puppeteer só é usado em scripts locais (slides, capturas); não precisa do Chrome na CI. PUPPETEER_SKIP_DOWNLOAD: "true" NEXT_TELEMETRY_DISABLED: "1" steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm # Next.js guarda aqui o resultado da compilação anterior; sem isso, cada # execução recompila todas as páginas do zero. - name: Cache de build do Next uses: actions/cache@v4 with: path: .next/cache key: next-${{ runner.arch }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('app/**', 'components/**', 'lib/**') }} restore-keys: | next-${{ runner.arch }}-${{ hashFiles('package-lock.json') }}- next-${{ runner.arch }}- - run: npm ci # eslint + auditoria do design system (tokens, contraste AAA) + auditoria de páginas - run: npm run check - run: npm run build