Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[core] Try out circleci workspaces #1369

Draft
wants to merge 7 commits into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 61 additions & 35 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ default-job: &default-job
TEST_GATE: << parameters.test-gate >>
AWS_REGION_ARTIFACTS: eu-central-1
COREPACK_ENABLE_DOWNLOAD_PROMPT: '0'
working_directory: /tmp/base-ui
working_directory: /mnt/ramdisk/base-ui
docker:
- image: cimg/node:18.20

Expand All @@ -60,32 +60,46 @@ default-context: &default-context
# key: v1-repo-{{ .Branch }}-{{ .Revision }}

commands:
install_js:
install_pnpm:
parameters:
browsers:
type: boolean
default: false
description: 'Set to true if you intend to any browser (for example with playwright).'
react-version:
description: The version of react to be used
type: string
default: stable

steps:
- when:
condition: << parameters.browsers >>
steps:
- run:
name: Install pnpm package manager
command: corepack enable
command: |
corepack enable
pnpm config set store-dir /mnt/ramdisk/.pnpm-store
- when:
condition:
not: << parameters.browsers >>
steps:
- run:
name: Install pnpm package manager
# See https://stackoverflow.com/a/73411601
command: corepack enable --install-directory ~/bin
command: |
corepack enable --install-directory ~/bin
pnpm config set store-dir /mnt/ramdisk/.pnpm-store

install_js:
parameters:
browsers:
type: boolean
default: false
description: 'Set to true if you intend to any browser (for example with playwright).'
react-version:
description: The version of react to be used
type: string
default: stable

steps:
- install_pnpm:
browsers: << parameters.browsers >>

- run:
name: Resolve React version
Expand Down Expand Up @@ -130,6 +144,10 @@ jobs:
condition:
equal: [<< parameters.react-version >>, stable]
steps:
- persist_to_workspace:
root: .
paths:
- .
- run:
name: Should not have any git not staged
command: git add -A && git diff --exit-code --staged
Expand All @@ -146,9 +164,10 @@ jobs:
test_unit:
<<: *default-job
steps:
- checkout
- install_js:
react-version: << parameters.react-version >>
- attach_workspace:
at: .
- install_pnpm:
browsers: false
- run:
name: Run tests on JSDOM
command: pnpm test:jsdom:coverage
Expand All @@ -168,9 +187,10 @@ jobs:
test_lint:
<<: *default-job
steps:
- checkout
- install_js:
react-version: << parameters.react-version >>
- attach_workspace:
at: .
- install_pnpm:
browsers: false
- run:
name: Eslint
command: pnpm eslint:ci
Expand All @@ -186,9 +206,10 @@ jobs:
test_static:
<<: *default-job
steps:
- checkout
- install_js:
react-version: << parameters.react-version >>
- attach_workspace:
at: .
- install_pnpm:
browsers: false
- run:
name: '`pnpm prettier` changes committed?'
command: pnpm prettier --check
Expand Down Expand Up @@ -218,9 +239,10 @@ jobs:
<<: *default-job
resource_class: 'medium+'
steps:
- checkout
- install_js:
react-version: << parameters.react-version >>
- attach_workspace:
at: .
- install_pnpm:
browsers: false
- run:
name: Tests TypeScript definitions
command: pnpm typescript
Expand All @@ -239,9 +261,10 @@ jobs:
<<: *default-job
resource_class: 'medium+'
steps:
- checkout
- install_js:
react-version: << parameters.react-version >>
- attach_workspace:
at: .
- install_pnpm:
browsers: false
- run:
name: Resolve typescript version
command: |
Expand Down Expand Up @@ -283,10 +306,11 @@ jobs:
resource_class: 'medium+'
docker:
- image: mcr.microsoft.com/playwright:v1.50.0-noble
working_directory: /tmp/base-ui
steps:
- checkout
- install_js:
react-version: << parameters.react-version >>
- attach_workspace:
at: .
- install_pnpm:
browsers: true
- run:
name: Run tests on headless Chromium
Expand All @@ -309,9 +333,9 @@ jobs:
docker:
- image: mcr.microsoft.com/playwright:v1.50.0-noble
steps:
- checkout
- install_js:
react-version: << parameters.react-version >>
- attach_workspace:
at: .
- install_pnpm:
browsers: true
- run:
name: Run visual regression tests
Expand All @@ -324,8 +348,9 @@ jobs:
docker:
- image: mcr.microsoft.com/playwright:v1.50.0-noble
steps:
- checkout
- install_js:
- attach_workspace:
at: .
- install_pnpm:
browsers: true
- run:
name: pnpm test:e2e
Expand All @@ -339,9 +364,10 @@ jobs:
test_package:
<<: *default-job
steps:
- checkout
- install_js:
react-version: << parameters.react-version >>
- attach_workspace:
at: .
- install_pnpm:
browsers: false
- run:
name: Build packages
command: pnpm release:build
Expand Down