name: CI Front Component Renderer on: pull_request: merge_group: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} jobs: changed-files-check: if: github.event_name != 'merge_group' uses: ./.github/workflows/changed-files.yaml with: files: | package.json yarn.lock packages/twenty-front-component-renderer/** packages/twenty-sdk/** packages/twenty-shared/** !packages/twenty-sdk/package.json renderer-task: needs: changed-files-check if: needs.changed-files-check.outputs.any_changed == 'true' timeout-minutes: 30 runs-on: ubuntu-latest strategy: matrix: task: [build, typecheck, lint] steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: fetch-depth: 10 - name: Install dependencies uses: ./.github/actions/yarn-install - name: Run ${{ matrix.task }} run: npx nx ${{ matrix.task }} twenty-front-component-renderer renderer-sb-build: needs: changed-files-check if: needs.changed-files-check.outputs.any_changed == 'true' timeout-minutes: 30 runs-on: ubuntu-latest steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: fetch-depth: 10 - name: Install dependencies uses: ./.github/actions/yarn-install - name: Build storybook run: npx nx storybook:build twenty-front-component-renderer - name: Upload storybook build uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: storybook-twenty-front-component-renderer path: packages/twenty-front-component-renderer/storybook-static retention-days: 1 renderer-sb-test: timeout-minutes: 30 runs-on: ubuntu-latest needs: renderer-sb-build env: STORYBOOK_URL: http://localhost:6008 steps: - name: Fetch custom Github Actions and base branch history uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: fetch-depth: 10 - name: Install dependencies uses: ./.github/actions/yarn-install - name: Build dependencies run: npx nx build twenty-sdk - name: Download storybook build uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 with: name: storybook-twenty-front-component-renderer path: packages/twenty-front-component-renderer/storybook-static - name: Resolve Playwright version id: playwright-version run: echo "version=$(node -p "require('@playwright/test/package.json').version")" >> "$GITHUB_OUTPUT" - name: Cache Playwright browsers id: playwright-cache uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ~/.cache/ms-playwright key: v4-playwright-browsers-${{ runner.os }}-${{ steps.playwright-version.outputs.version }} - name: Install Playwright if: steps.playwright-cache.outputs.cache-hit != 'true' run: | cd packages/twenty-front-component-renderer npx playwright install chromium - name: Serve storybook & run tests run: | npx http-server packages/twenty-front-component-renderer/storybook-static --port 6008 --silent & timeout 30 bash -c 'until curl -sf http://localhost:6008 > /dev/null 2>&1; do sleep 1; done' npx nx storybook:test twenty-front-component-renderer ci-front-component-renderer-status-check: if: always() && !cancelled() timeout-minutes: 5 runs-on: ubuntu-latest needs: [ changed-files-check, renderer-task, renderer-sb-build, renderer-sb-test, ] steps: - name: Fail job if any needs failed if: contains(needs.*.result, 'failure') run: exit 1