language: node_js node_js: - 8 - 10 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" before_install: # package-lock.json was introduced in npm@5 - '[[ $(node -v) =~ ^v9.*$ ]] || npm install -g npm@latest' # skipped when using node 9 - npm install -g greenkeeper-lockfile install: - if [[ ${TRAVIS_BRANCH:0:11} = greenkeeper ]]; then npm install --production=false; else npm ci --production=false; fi before_script: greenkeeper-lockfile-update script: npm run $NPM_SCRIPT after_script: greenkeeper-lockfile-upload jobs: include: - env: NPM_SCRIPT=lint node_js: 8 - env: NPM_SCRIPT=build node_js: 8 if: not (branch in (master, develop) and type != pull_request) - stage: release node_js: 8 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: branch in (master, develop) and type != pull_request