scratch-audio/.circleci/config.yml
Andy O'Neill a6d400dddb Revert "ci: Simplify with node orb"
This reverts commit ac0f98c431.
2022-11-21 16:53:55 -05:00

91 lines
2.6 KiB
YAML

version: 2.1
orbs:
node: circleci/node@5
aliases:
- &release-branches
- master
- develop
- /^hotfix\//
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
commands:
test:
steps:
- run:
name: Test
command: npm run test
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:
build-and-test:
executor: default-executor
steps:
- checkout
- node/install-packages
- test
- persist_to_workspace:
root: ~/project
paths:
- .
deploy:
executor: default-executor
steps:
- attach_workspace:
at: ~/project
- setup_deploy
- deploy
workflows:
build-and-test-workflow:
jobs:
- build-and-test:
filters:
branches:
ignore: *release-branches
deploy-workflow:
jobs:
- build-and-test:
filters:
branches:
only: *release-branches
- deploy:
context:
- scratch-npm-creds
requires:
- build-and-test