Spaces:
Sleeping
Sleeping
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| build: | |
| strategy: | |
| matrix: | |
| node-version: [20.x, 22.x] | |
| # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ | |
| name: Build with ${{ matrix.node-version }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: npm | |
| - run: npm ci | |
| - run: npm run build | |
| test: | |
| strategy: | |
| matrix: | |
| node-version: [20.x] | |
| name: Run all tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # Retrieve Git history, needed to verify commits | |
| - name: Use Node.js ${{ matrix.node-version }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
| cache: npm | |
| - run: npm ci | |
| - name: Build Next.js for E2E tests | |
| run: npm run build | |
| env: | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| - if: github.event_name == 'pull_request' | |
| name: Validate all commits from PR | |
| run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose | |
| - name: Linter | |
| run: npm run lint | |
| - name: Type checking | |
| run: npm run check-types | |
| - name: Run unit tests | |
| run: npm run test -- --coverage | |
| - name: Upload coverage reports to Codecov | |
| uses: codecov/codecov-action@v5 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
| - name: Install Playwright (used for Storybook and E2E tests) | |
| run: npx playwright install --with-deps | |
| - name: Run storybook tests | |
| run: npm run test-storybook:ci | |
| - name: Run E2E tests | |
| run: npx percy exec -- npm run test:e2e | |
| env: | |
| PERCY_TOKEN: ${{ secrets.PERCY_TOKEN }} | |
| CLERK_SECRET_KEY: ${{ secrets.CLERK_SECRET_KEY }} | |
| - uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: test-results | |
| path: test-results/ | |
| retention-days: 7 | |
| synchronize-with-crowdin: | |
| name: GitHub PR synchronize with Crowdin | |
| runs-on: ubuntu-latest | |
| needs: [build, test] | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.pull_request.head.sha }} # Crowdin Actions needs to push commits to the PR branch, checkout HEAD commit instead of merge commit | |
| fetch-depth: 0 | |
| - name: crowdin action | |
| uses: crowdin/github-action@v2 | |
| with: | |
| upload_sources: true | |
| upload_translations: true | |
| download_translations: true | |
| create_pull_request: false | |
| localization_branch_name: ${{ github.head_ref || github.ref_name }} # explanation here: https://stackoverflow.com/a/71158878 | |
| commit_message: 'chore: new Crowdin translations by GitHub Action' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} | |
| CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} | |