Spaces:
Running
Running
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 }} | |