Skip to content

WIP

WIP #4619

Workflow file for this run

name: Pull Request CI
on:
merge_group:
pull_request:
types: [opened, synchronize, reopened]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build packages
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0
- uses: actions/cache@v4
name: Check for build cache
id: build-cache
with:
path: |
**/dist
.pnpm-store
key: ${{ runner.os }}-build-cache-${{ hashFiles('pnpm-lock.yaml', '**/src/**/*', 'package.json') }}
restore-keys: |
${{ runner.os }}-build-cache-
# Only setup & build if there was no build cache hit
- name: Use Node 18
uses: actions/setup-node@v4
if: ${{ steps.build-cache.outputs.cache-hit != 'true' }}
with:
node-version: '18'
cache: pnpm
cache-dependency-path: 'pnpm-lock.yaml'
- name: Install
if: ${{ steps.build-cache.outputs.cache-hit != 'true' }}
run: pnpm install --frozen-lockfile --prefer-offline
- name: Build
if: ${{ steps.build-cache.outputs.cache-hit != 'true' }}
run: pnpm build
lint:
name: Check lints
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- name: pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0
- name: Use Node 18
uses: actions/setup-node@v4
with:
node-version: '18'
cache: pnpm
cache-dependency-path: 'pnpm-lock.yaml'
- uses: actions/cache/restore@v4
name: Restore build cache
id: build-cache
with:
path: |
**/dist
!**/node_modules
key: ${{ runner.os }}-build-cache-${{ hashFiles('package.json', 'pnpm-lock.yaml', '**/src/', '!**/node_modules', '!**/dist') }}
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: lint
run: pnpm lint
chromatic:
name: Chromatic
runs-on: ubuntu-latest
needs: [build]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0
- name: Use Node 18
uses: actions/setup-node@v4
with:
node-version: '18'
cache: pnpm
cache-dependency-path: 'pnpm-lock.yaml'
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- uses: actions/cache/restore@v4
name: Restore build cache
id: build-cache
with:
path: |
**/dist
!**/node_modules
key: ${{ runner.os }}-build-cache-${{ hashFiles('package.json', 'pnpm-lock.yaml', '**/src/', '!**/node_modules', '!**/dist') }}
- name: Publish to Chromatic
env:
NODE_OPTIONS: '--max_old_space_size=16384'
uses: chromaui/action@v1
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
buildScriptName: 'build-storybook'
onlyChanged: true
exitOnceUploaded: true
exitZeroOnChanges: true
tests:
name: Run tests
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- name: pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0
- name: Use Node 18
uses: actions/setup-node@v4
with:
node-version: '18'
cache: pnpm
cache-dependency-path: 'pnpm-lock.yaml'
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- uses: actions/cache/restore@v4
name: Restore build cache
id: build-cache
with:
path: |
**/dist
!**/node_modules
key: ${{ runner.os }}-build-cache-${{ hashFiles('package.json', 'pnpm-lock.yaml', '**/src/', '!**/node_modules', '!**/dist') }}
- name: tests
run: pnpm test --ci
env:
JEST_JUNIT_OUTPUT: 'reports/junit/js-test-results.xml'
validate-builds:
name: Validate builds & dependencies
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- name: pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0
- name: Use Node 18
uses: actions/setup-node@v4
with:
node-version: '18'
cache: pnpm
cache-dependency-path: 'pnpm-lock.yaml'
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- uses: actions/cache/restore@v4
name: Restore build cache
id: build-cache
with:
path: |
**/dist
!**/node_modules
key: ${{ runner.os }}-build-cache-${{ hashFiles('package.json', 'pnpm-lock.yaml', '**/src/', '!**/node_modules', '!**/dist') }}
- name: validate
run: pnpm validate