2022-11-16 12:59:18 -05:00
version : 2.1
orbs :
node : circleci/node@5
aliases :
- &release-branches
- master
- develop
- /^hotfix\//
2022-11-21 16:53:55 -05:00
executors :
default-executor :
docker :
- image : cimg/node:16.18.1 # Consider switching to LTS when scratch-audio supports that version
working_directory : ~/project
resource_class : medium
2022-11-16 12:59:18 -05:00
commands :
2022-11-21 16:53:55 -05:00
test :
steps :
- run :
name : Test
command : npm run test
2022-11-16 12:59:18 -05:00
setup_deploy :
steps :
- run :
name : Setup Deploy
command : |
export NODE_ENV=production
export RELEASE_TIMESTAMP=$(date +'%Y%m%d%H%M%S')
echo "export NPM_TAG=latest" >> $BASH_ENV
npm run build
if [ -z "$BEFORE_DEPLOY_RAN" ]; then
VPKG=$($(npm bin)/json -f package.json version)
VERSION=${VPKG}-prerelease.${RELEASE_TIMESTAMP}
echo "export RELEASE_VERSION=${VPKG}-prerelease.${RELEASE_TIMESTAMP}" >> $BASH_ENV
npm --no-git-tag-version version $VERSION
if [[ "$CIRCLE_BRANCH" == hotfix/* ]]; then # double brackets are important for matching the wildcard
echo "export NPM_TAG=hotfix" >> $BASH_ENV
fi
git config --global user.email "$(git log --pretty=format:"%ae" -n1)"
git config --global user.name "$(git log --pretty=format:"%an" -n1)"
echo "export BEFORE_DEPLOY_RAN=true" >> $BASH_ENV
fi
deploy :
steps :
- run :
name : Deploy
command : |
echo "Deploying version $RELEASE_VERSION to $NPM_TAG"
npm set //registry.npmjs.org/:_authToken=$NPM_TOKEN
npm publish --tag $NPM_TAG
if npm info | grep -q $RELEASE_VERSION; then git tag $RELEASE_VERSION && git push https://${GH_TOKEN}@github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}.git $RELEASE_VERSION; fi
jobs :
2022-11-21 16:53:55 -05:00
build-and-test :
executor : default-executor
2022-11-16 12:59:18 -05:00
steps :
- checkout
- node/install-packages
2022-11-21 16:53:55 -05:00
- test
- persist_to_workspace :
root : ~/project
paths :
- .
deploy :
executor : default-executor
steps :
- attach_workspace :
at : ~/project
2022-11-16 12:59:18 -05:00
- setup_deploy
- deploy
workflows :
build-and-test-workflow :
jobs :
2022-11-21 16:53:55 -05:00
- build-and-test :
2022-11-16 12:59:18 -05:00
filters :
branches :
ignore : *release-branches
deploy-workflow :
jobs :
2022-11-21 16:53:55 -05:00
- build-and-test :
2022-11-16 12:59:18 -05:00
filters :
branches :
only : *release-branches
- deploy :
context :
- scratch-npm-creds
requires :
2022-11-21 16:53:55 -05:00
- build-and-test