/
githubmirror
/
Front-End-Checklist
Обзор
Документация
Войти
/
githubmirror
/
Front-End-Checklist
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
.github/workflows/ci.yml
319 строк
8 KB
David Dias
ci: remove lighthouse push check
30 май 2026, 04:15
30 май 2026, 04:15
a057ee7
Код
Авторство
О чём код?
name: CI on: push: branches: [main, develop] workflow_dispatch: env: TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} TURBO_TEAM: ${{ vars.TURBO_TEAM }} jobs: rule-structure: name: Rule Structure runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.33.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Validate rule structure run: pnpm validate:rule-structure guide-validation: name: Guide Validation runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.33.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Validate guide structure run: pnpm validate:guide-structure - name: Validate guide publish readiness run: pnpm validate:guides lint: name: Lint runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.33.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Run Biome linting run: pnpm run lint - name: Check formatting run: pnpm biome check --no-errors-on-unmatched . typecheck: name: Type Check runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.33.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build content collections run: pnpm --filter web build:content - name: Run TypeScript type checking run: pnpm run typecheck --filter=web unit-tests: name: Unit Tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.33.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build content collections run: pnpm --filter web build:content - name: Run unit tests with coverage run: pnpm run test:ci --filter=web - name: Upload coverage reports uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} files: ./apps/web/coverage/lcov.info flags: unittests name: codecov-umbrella fail_ci_if_error: false - name: Check coverage thresholds run: pnpm run test:coverage:check --filter=web - name: Generate coverage summary if: always() run: | echo "## Coverage Report" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY pnpm run test:coverage:check --filter=web >> $GITHUB_STEP_SUMMARY 2>&1 || true echo '```' >> $GITHUB_STEP_SUMMARY build: name: Build runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.33.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Build all packages run: pnpm run build env: NEXT_TELEMETRY_DISABLED: 1 - name: Check build output run: | if [ ! -d "apps/web/.next" ]; then echo "Build failed: .next directory not found" exit 1 fi - name: Upload build artifacts if: success() uses: actions/upload-artifact@v4 with: name: build-output include-hidden-files: true path: | apps/web/.next apps/web/out retention-days: 1 e2e-tests: name: E2E Smoke Tests needs: [lint, typecheck, unit-tests, build] runs-on: ubuntu-latest timeout-minutes: 20 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 with: version: 10.33.0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile - name: Download build artifacts uses: actions/download-artifact@v4 with: name: build-output path: apps/web/ - name: Install Playwright browsers working-directory: ./apps/web run: pnpm exec playwright install --with-deps chromium - name: Run smoke E2E tests working-directory: ./apps/web run: | pnpm run e2e \ --project=chromium \ --grep="@smoke" \ --reporter=github,html env: CI: true - name: Upload test report if: always() uses: actions/upload-artifact@v4 with: name: e2e-smoke-report path: apps/web/playwright-report/ retention-days: 7 - name: Upload test results if: failure() uses: actions/upload-artifact@v4 with: name: e2e-smoke-results path: | apps/web/test-results/ apps/web/e2e/screenshots/ retention-days: 7 security-scan: name: Security Scan runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@master with: scan-type: 'fs' scan-ref: '.' format: 'sarif' output: 'trivy-results.sarif' - name: Upload Trivy results to GitHub Security uses: github/codeql-action/upload-sarif@v3 with: sarif_file: 'trivy-results.sarif' all-checks: name: All Checks Passed runs-on: ubuntu-latest needs: [rule-structure, guide-validation, lint, typecheck, unit-tests, build, e2e-tests, security-scan] if: always() steps: - name: Check all job results run: | if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then echo "One or more jobs failed" exit 1 fi echo "All checks passed successfully!" - name: Create success comment if: github.event_name == 'pull_request' && success() uses: actions/github-script@v7 with: script: | github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: '✅ All CI checks passed successfully!' });