Files
cunningham/.circleci/config.yml
Nathan Vasse 98c7075637 🔧(Docker) upgrade to node 18.18
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.
2023-11-21 17:00:07 +01:00

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