build: migrate to pnpm #4933
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. | |
# Documentation: https://docs.github.com/en/actions | |
name: build | |
env: | |
PNPM_VERSION: 9.15.2 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: | |
- main | |
- develop | |
- next | |
- release/* | |
tags: | |
- '*' | |
pull_request: | |
branches: | |
- main | |
- develop | |
- next | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20] | |
steps: | |
- uses: actions/[email protected] | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
with: | |
version: ${{ env.PNPM_VERSION }} | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'pnpm' | |
- name: Load build cache | |
uses: actions/[email protected] | |
id: cache | |
with: | |
path: | | |
.turbo | |
./demos/node_modules/.vite | |
/home/runner/.cache/Cypress | |
key: ${{ runner.os }}-build-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-build- | |
- name: Install dependencies | |
id: install-dependencies | |
run: pnpm install | |
# - name: Fix code style linting errors | |
# id: lint-fix | |
# run: npm run lint:fix | |
# continue-on-error: true | |
# | |
# - name: Commit fixed linting errors | |
# id: commit | |
# uses: stefanzweifel/git-auto-commit-action@v4 | |
# with: | |
# commit_message: "ci: fix code style linting errors" | |
- name: Lint code | |
id: lint | |
run: npm run lint | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: [20] | |
test-spec: | |
- { name: "Integration", spec: "./tests/cypress/integration/**/*.spec.{js,ts}" } | |
#- { name: "Demos/Commands", spec: "./demos/src/Commands/**/*.spec.{js,ts}" } | |
- { name: "Demos/Examples", spec: "./demos/src/Examples/**/*.spec.{js,ts}" } | |
- { name: "Demos/Experiments", spec: "./demos/src/Experiments/**/*.spec.{js,ts}" } | |
- { name: "Demos/Extensions", spec: "./demos/src/Extensions/**/*.spec.{js,ts}" } | |
- { name: "Demos/GuideContent", spec: "./demos/src/GuideContent/**/*.spec.{js,ts}" } | |
- { name: "Demos/GuideGettingStarted", spec: "./demos/src/GuideGettingStarted/**/*.spec.{js,ts}" } | |
#- { name: "Demos/GuideNodeViews", "./demos/src/GuideNodeViews/**/*.spec.{js,ts}" } | |
- { name: "Demos/Marks", spec: "./demos/src/Marks/**/*.spec.{js,ts}" } | |
- { name: "Demos/Nodes", spec: "./demos/src/Nodes/**/*.spec.{js,ts}" } | |
#- { name: "Demos/Overview", spec: "./demos/src/Overview/**/*.spec.{js,ts}" } | |
steps: | |
- uses: actions/[email protected] | |
- name: Load build cache | |
uses: actions/[email protected] | |
id: cache | |
with: | |
path: | | |
.turbo | |
./demos/node_modules/.vite | |
/home/runner/.cache/Cypress | |
key: ${{ runner.os }}-build-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-build- | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
with: | |
version: ${{ env.PNPM_VERSION }} | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'pnpm' | |
- name: Install dependencies | |
id: install-dependencies | |
run: pnpm install | |
- name: Try to build the packages | |
id: build-packages | |
run: pnpm run build | |
- name: Test ${{ matrix.test-spec.name }} | |
id: cypress | |
uses: cypress-io/[email protected] | |
with: | |
cache-key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} | |
start: pnpm run serve | |
wait-on: 'http://localhost:3000' | |
spec: ${{ matrix.test-spec.spec }} | |
project: ./tests | |
browser: chrome | |
quiet: true | |
- name: Export screenshots (on failure only) | |
uses: actions/[email protected] | |
if: failure() | |
with: | |
name: cypress-screenshots | |
path: tests/cypress/screenshots | |
retention-days: 7 | |
- name: Export screen recordings (on failure only) | |
uses: actions/[email protected] | |
if: failure() | |
with: | |
name: cypress-videos | |
path: tests/cypress/videos | |
retention-days: 7 | |
build: | |
runs-on: ubuntu-latest | |
needs: lint | |
strategy: | |
matrix: | |
node-version: [20] | |
steps: | |
- uses: actions/[email protected] | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
with: | |
version: ${{ env.PNPM_VERSION }} | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'pnpm' | |
- name: Load build cache | |
uses: actions/[email protected] | |
id: cache | |
with: | |
path: | | |
.turbo | |
./demos/node_modules/.vite | |
/home/runner/.cache/Cypress | |
key: ${{ runner.os }}-build-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-build- | |
- name: Install dependencies | |
id: install-dependencies | |
run: pnpm install | |
- name: Try to build the packages | |
id: build-packages | |
run: pnpm run build:ci | |
- name: Soft release | |
id: soft-release | |
run: npx pkg-pr-new publish './packages/*' --compact |