The node LTS version is 18 and node 16 has reached its end of support the 11th september 2023. Furthermore, some JS packages starts to remove support of node version less than 18. That's why it seems to be the right moment for us to level up to node 18.18.
230 lines
6.1 KiB
YAML
230 lines
6.1 KiB
YAML
version: 2.1
|
|
|
|
aliases:
|
|
- &checkout_cunningham
|
|
checkout:
|
|
path: ~/cunningham
|
|
|
|
- &restore_node_modules
|
|
restore_cache:
|
|
name: Restore node_modules cache
|
|
keys:
|
|
- v1-front-dependencies-{{ checksum "~/cunningham/yarn.lock" }}
|
|
|
|
jobs:
|
|
lint-git:
|
|
docker:
|
|
- image: cimg/python:3.11
|
|
working_directory: ~/cunningham
|
|
steps:
|
|
- checkout:
|
|
path: ~/cunningham
|
|
- run:
|
|
name: Check absence of fixup commits
|
|
command: |
|
|
! git log origin/main..HEAD | grep 'fixup!'
|
|
- run:
|
|
name: Install gitlint
|
|
command: |
|
|
pip install --user requests gitlint
|
|
- run:
|
|
name: lint commit messages added to main
|
|
command: |
|
|
~/.local/bin/gitlint --commits origin/main..HEAD
|
|
|
|
# Check that renovate configuration file is valid
|
|
check-renovate-configuration:
|
|
docker:
|
|
- image: renovate/renovate
|
|
auth:
|
|
username: $DOCKER_USER
|
|
password: $DOCKER_PASS
|
|
working_directory: ~/cunningham
|
|
steps:
|
|
- *checkout_cunningham
|
|
- run:
|
|
name: Run renovate-config-validator command
|
|
command: renovate-config-validator
|
|
|
|
# ---- Codebase -----
|
|
build:
|
|
docker:
|
|
- image: cimg/node:18.18
|
|
working_directory: ~/cunningham
|
|
steps:
|
|
- *checkout_cunningham
|
|
- *restore_node_modules
|
|
# If the yarn.lock file is not up-to-date with the package.json file,
|
|
# using the --frozen-lockfile should fail.
|
|
- run:
|
|
name: Install dependencies
|
|
command: yarn install --frozen-lockfile
|
|
- run:
|
|
name: Build packages
|
|
# Symlinks to bins in the monorepo are not created by yarn, so we need to do it manually.
|
|
command: |
|
|
ln -sf ../../packages/tokens/dist/bin/Main.js node_modules/.bin/cunningham &&
|
|
yarn build
|
|
- persist_to_workspace:
|
|
root: ~/cunningham
|
|
paths:
|
|
- apps/demo/dist
|
|
- packages/tokens/dist
|
|
- packages/react/dist
|
|
- save_cache:
|
|
paths:
|
|
- ./node_modules
|
|
- ./apps/demo/node_modules
|
|
- ./packages/eslint-config-custom/node_modules
|
|
- ./packages/react/node_modules
|
|
- ./packages/tokens/node_modules
|
|
key: v1-front-dependencies-{{ checksum "yarn.lock" }}
|
|
lint:
|
|
docker:
|
|
- image: cimg/node:18.18
|
|
working_directory: ~/cunningham
|
|
steps:
|
|
- *checkout_cunningham
|
|
- *restore_node_modules
|
|
- run:
|
|
name: Run linter over all workspaces
|
|
command: yarn lint
|
|
|
|
test:
|
|
docker:
|
|
- image: cimg/node:18.18
|
|
parallelism: 4
|
|
resource_class: large
|
|
working_directory: ~/cunningham
|
|
steps:
|
|
- *checkout_cunningham
|
|
- *restore_node_modules
|
|
- attach_workspace:
|
|
at: ~/cunningham
|
|
- run:
|
|
name: Run test suites over all workspaces
|
|
command: yarn test-ci
|
|
|
|
# ---- Internationalization ----
|
|
crowdin-upload:
|
|
docker:
|
|
- image: crowdin/cli:3.10.0
|
|
auth:
|
|
username: $DOCKER_USER
|
|
password: $DOCKER_PASS
|
|
working_directory: ~/cunningham
|
|
steps:
|
|
- *checkout_cunningham
|
|
- run:
|
|
name: upload translation files to crowdin
|
|
command: crowdin upload sources -c crowdin/config.yml
|
|
|
|
# ---- Deploy ----
|
|
publish-storybook:
|
|
docker:
|
|
- image: cimg/node:18.18
|
|
working_directory: ~/cunningham
|
|
steps:
|
|
- add_ssh_keys:
|
|
fingerprints:
|
|
- "5e:86:38:27:26:f2:1b:7f:4b:36:99:38:63:d9:2b:75"
|
|
- *checkout_cunningham
|
|
- *restore_node_modules
|
|
- attach_workspace:
|
|
at: ~/cunningham
|
|
- run:
|
|
name: Publish storybook
|
|
command: |
|
|
cd packages/react
|
|
git config user.email "funmoocbot@users.noreply.github.com"
|
|
git config user.name "FUN MOOC bot"
|
|
yarn deploy-storybook
|
|
publish-packages:
|
|
docker:
|
|
- image: cimg/node:18.18
|
|
auth:
|
|
username: $DOCKER_USER
|
|
password: $DOCKER_PASS
|
|
working_directory: ~/cunningham
|
|
steps:
|
|
- add_ssh_keys:
|
|
fingerprints:
|
|
- "5e:86:38:27:26:f2:1b:7f:4b:36:99:38:63:d9:2b:75"
|
|
- *checkout_cunningham
|
|
- *restore_node_modules
|
|
- attach_workspace:
|
|
at: ~/cunningham
|
|
- run:
|
|
name: Authenticate with registry
|
|
command: echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/cunningham/.npmrc
|
|
- run:
|
|
name: Init Git identity in order to allow changeset to create tags
|
|
command: |
|
|
git config user.email "funmoocbot@users.noreply.github.com"
|
|
git config user.name "FUN MOOC bot"
|
|
- run:
|
|
name: Publish package as public if package version are bumped
|
|
command: yarn changeset publish
|
|
- run:
|
|
name: Push release tags if some were created
|
|
command: git push --follow-tags origin HEAD
|
|
workflows:
|
|
version: 2.1
|
|
|
|
cunningham:
|
|
jobs:
|
|
# Git jobs
|
|
#
|
|
# Check validity of git history
|
|
- lint-git:
|
|
filters:
|
|
tags:
|
|
only: /.*/
|
|
# Check Renovate
|
|
- check-renovate-configuration:
|
|
filters:
|
|
tags:
|
|
only: /.*/
|
|
# ---- Internationalization ----
|
|
- crowdin-upload:
|
|
filters:
|
|
branches:
|
|
only:
|
|
- main
|
|
requires:
|
|
- build
|
|
# ---- Codebase ----
|
|
- build:
|
|
filters:
|
|
tags:
|
|
only: /.*/
|
|
- lint:
|
|
filters:
|
|
tags:
|
|
only: /.*/
|
|
requires:
|
|
- build
|
|
- test:
|
|
filters:
|
|
tags:
|
|
only: /.*/
|
|
requires:
|
|
- build
|
|
- lint
|
|
- publish-storybook:
|
|
filters:
|
|
branches:
|
|
only:
|
|
- main
|
|
requires:
|
|
- test
|
|
- publish-packages:
|
|
filters:
|
|
branches:
|
|
only:
|
|
- main
|
|
requires:
|
|
- build
|
|
- lint
|
|
- test
|