Merge pull request #181 from LLK/circleci

ci: Replace Travis with CircleCI
This commit is contained in:
Andy O'Neill 2022-11-23 13:00:40 -05:00 committed by GitHub
commit 50b7ade0d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 14897 additions and 35 deletions

91
.circleci/config.yml Normal file
View file

@ -0,0 +1,91 @@
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

View file

@ -1,3 +1,6 @@
# Development files
/.circleci
# Testing
/.nyc_output
/coverage

View file

@ -1,34 +0,0 @@
language: node_js
node_js:
- 8
- node
env:
matrix:
- NPM_SCRIPT="tap -- --jobs=4"
cache:
directories:
- node_modules
script: npm run $NPM_SCRIPT
jobs:
include:
- env: NPM_SCRIPT=build
node_js: 8
if: not (branch in (master, develop) and type != pull_request)
- env: NPM_SCRIPT=lint
node_js: 8
- stage: release
node_js: 8
env: NPM_SCRIPT=build
before_deploy:
- npm --no-git-tag-version version 0.1.0-prerelease.$(date +%Y%m%d%H%M%S)
deploy:
- provider: npm
on:
all_branches: true
skip_cleanup: true
email: $NPM_EMAIL
api_key: $NPM_TOKEN
stages:
- test
- name: release
if: branch in (master, develop) and type != pull_request

View file

@ -5,7 +5,7 @@
#### Please note this project is at an early stage and we are not ready for pull requests
[![Build Status](https://travis-ci.org/LLK/scratch-audio.svg?branch=develop)](https://travis-ci.org/LLK/scratch-audio)
[![CircleCI](https://circleci.com/gh/LLK/scratch-audio/tree/develop.svg?style=shield&circle-token=3792f4f51158c8c9b448527466ffe302b0c6f0f5)](https://circleci.com/gh/LLK/scratch-audio?branch=develop)
## Installation
This requires you to have Git and Node.js installed.

14801
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -33,6 +33,7 @@
"babel-preset-env": "1.7.0",
"eslint": "3.19.0",
"eslint-config-scratch": "3.1.0",
"json": "9.0.6",
"tap": "12.7.0",
"web-audio-test-api": "0.5.2",
"webpack": "4.46.0",