Our main goal doing this is to allow us to have multiple static build standing next to each other on our gh-pages.
229 lines
6.0 KiB
YAML
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
|