Files
cunningham/.circleci/config.yml
Nathan Vasse def859ee0b 👷(ci) put storybook build in a gh-pages sub folder
Our main goal doing this is to allow us to have multiple static build
standing next to each other on our gh-pages.
2024-02-14 15:47:44 +01:00

229 lines
6.0 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: |
git config user.email "funmoocbot@users.noreply.github.com"
git config user.name "FUN MOOC bot"
yarn deploy-ghpages
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