scratch-paint/.circleci/config.yml
2022-04-22 10:23:30 -04:00

142 lines
3.6 KiB
YAML

version: 2.1
aliases:
- &defaults
docker:
- image: cimg/node:12.22.11-browsers
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
working_directory: ~/repo
environment:
NODE_ENV: production
- &setup
name: "setup"
command: |
npm --production=false ci
mkdir ./test/results
- &lint
name: "run lint tests"
command: npm run lint -- --format junit -o ./test/results/lint-results.xml
- &unit
name: "run unit tests"
command: JEST_JUNIT_OUTPUT_NAME=unit-jest-results.xml npm run unit -- --reporters=jest-junit
- &build
name: "run npm build"
command: |
NODE_ENV=production npm run build
- &tag-setup
name: "setup tags"
command: |
RELEASE_TIMESTAMP="$(date +'%Y%m%d%H%M%S')"
VPKG=$($(npm bin)/json -f package.json version)
echo export RELEASE_VERSION=${VPKG}-prerelease.${RELEASE_TIMESTAMP} >> $BASH_ENV
echo export NPM_TAG=latest >> $BASH_ENV
if [[ "$CIRCLE_BRANCH" == hotfix/* ]]; then # double brackets are important for matching the wildcard
echo export NPM_TAG=hotfix >> $BASH_ENV
fi
- &deploy-gh-pages
name: "deploy to gh pages"
command: |
git config --global user.email $(git log --pretty=format:"%ae" -n1)
git config --global user.name $(git log --pretty=format:"%an" -n1)
npm run deploy -- -e $CIRCLE_BRANCH
- &deploy-npm
name: "deploy to npm"
command: |
echo "npm tag: $NPM_TAG"
echo "release version: $RELEASE_VERSION"
npm version --no-git-tag-version $RELEASE_VERSION
npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN
npm publish --tag $NPM_TAG
- &tag-commit
name: "tag commit in github"
command: |
echo $RELEASE_VERSION
git tag $RELEASE_VERSION
git push $CIRCLE_REPOSITORY_URL $RELEASE_VERSION
jobs:
build-test:
<<: *defaults
steps:
- checkout
- run:
<<: *setup
- run:
<<: *lint
- run:
<<: *unit
- run:
<<: *build
- store_test_results:
path: test/results
build-test-deploy:
<<: *defaults
steps:
- checkout
- run:
<<: *setup
- run:
<<: *lint
- run:
<<: *unit
- run:
<<: *build
- store_test_results:
path: test/results
- run:
<<: *tag-setup
- run:
<<: *deploy-gh-pages
- run:
<<: *deploy-npm
- run:
<<: *tag-commit
push-translations:
<<: *defaults
steps:
- checkout
- run:
<<: *setup
- run:
name: "run i18n script"
command: |
npm run i18n:src
npm run i18n:push
workflows:
build-test-no-deploy:
jobs:
- build-test:
context:
- dockerhub-credentials
filters:
branches:
ignore:
- master
- develop
- /^hotfix\/.*/
- gh-pages
build-test-deploy:
jobs:
- build-test-deploy:
context:
- dockerhub-credentials
filters:
branches:
only:
- master
- develop
- /^hotfix\/.*/
push-translations:
triggers:
- schedule:
cron: 0 0 * * * # daily at 12 UTC, 8 ET
filters:
branches:
only:
- develop
jobs:
- push-translations:
context:
- dockerhub-credentials