language: node_js node_js: - lts/* env: global: - NODE_ENV=production - NPM_TAG=latest - RELEASE_TIMESTAMP="$(date +'%Y%m%d%H%M%S')" matrix: - NPM_SCRIPT="tap:unit -- --jobs=4" - NPM_SCRIPT="tap:integration -- --jobs=4" cache: directories: - "$HOME/.npm" install: - npm ci --production=false script: npm run $NPM_SCRIPT jobs: include: - env: NPM_SCRIPT=lint - env: NPM_SCRIPT=build if: not (type != pull_request AND (branch =~ /^(develop|master|hotfix\/)/)) - stage: release env: NPM_SCRIPT=build before_deploy: - > if [ -z "$BEFORE_DEPLOY_RAN" ]; then VPKG=$($(npm bin)/json -f package.json version) export RELEASE_VERSION=${VPKG}-prerelease.${RELEASE_TIMESTAMP} npm --no-git-tag-version version $RELEASE_VERSION if [[ "$TRAVIS_BRANCH" == hotfix/* ]]; then # double brackets are important for matching the wildcard export NPM_TAG=hotfix fi git config --global user.email "$(git log --pretty=format:"%ae" -n1)" git config --global user.name "$(git log --pretty=format:"%an" -n1)" export BEFORE_DEPLOY_RAN=true fi deploy: - provider: npm on: branch: - master - develop - hotfix/* condition: $TRAVIS_EVENT_TYPE != cron skip_cleanup: true email: $NPM_EMAIL api_key: $NPM_TOKEN tag: $NPM_TAG - provider: script on: branch: - master - develop - hotfix/* condition: $TRAVIS_EVENT_TYPE != cron skip_cleanup: true script: if npm info | grep -q $RELEASE_VERSION; then git tag $RELEASE_VERSION && git push https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git $RELEASE_VERSION; fi - provider: script on: all_branches: true condition: $TRAVIS_EVENT_TYPE != cron skip_cleanup: true script: npm run --silent deploy -- -x -r $GH_PAGES_REPO - provider: script on: branch: develop condition: $TRAVIS_EVENT_TYPE == cron skip_cleanup: true script: npm run i18n:src && npm run i18n:push stages: - test - name: release if: type != pull_request AND (branch =~ /^(develop|master|hotfix\/)/)