.travis.yml
sudo: false
language: node_js
node_js: "9"
notifications:
email: false
git:
depth: 3
submodules: false
env:
global:
- MOZ_HEADLESS=1
- SAUCE_USERNAME_PR=valorkinpr
- SAUCE_ACCESS_KEY_PR=e0a97bd3-4b74-4408-89bf-cce1b44a8bf1
- BROWSER_PROVIDER_READY_FILE=/tmp/sauce-connect-ready
- LOGS_DIR=/tmp/logs
stages:
- &stage
name: precache
if: ( branch = development AND type = push ) OR type = pull_request OR tag =~ ^v2
- <<: *stage
name: lint
- <<: *stage
name: test
- <<: *stage
name: cypress-tests
- <<: *stage
name: build
- name: deploy
if: branch = development AND type = push OR tag =~ ^v2
- name: publish
if: tag =~ ^v2
- <<: *stage
name: sauce-tests
before_install:
- sh -e /etc/init.d/xvfb start
- rm -rf node_modules/ngx-bootstrap
install:
- npm i -g npm@5.7.1
- npm ci > /dev/null
- npm run build > /dev/null
- if [[ "$NGV" == "latest" ]]; then ./scripts/ci/npm-ng-latest.sh; fi
- if [[ "$NGV" == "next" ]]; then ./scripts/ci/npm-ng-next.sh; fi
- npm i ./dist > /dev/null
- if [[ "$TRAVIS_PULL_REQUEST" != false ]]; then export SAUCE_USERNAME=$SAUCE_USERNAME_PR; export SAUCE_ACCESS_KEY=$SAUCE_ACCESS_KEY_PR; fi
jobs:
fast_finish: true
allow_failures:
- env: NGV=next
- env: SAUCE=true
- stage: sauce-tests
include:
# precache npm and apt dependencies
- stage: precache
install:
- npm i -g npm@5.7.1
- npm ci > /dev/null
script: true
addons:
chrome: stable
apt:
sources:
- ubuntu-toolchain-r-test
# required by node-gyp to build some packages
packages:
- g++-4.8
# lint code
- stage: lint
install: true
script: npm run lint
# test
- &test
stage: test
script: npm run test-coverage
after_success:
- ./node_modules/.bin/codecov
- <<: *test
env: NGV=latest
- <<: *test
env: NGV=next
# test cypress
- stage: cypress-tests
env: URL=localhost:4200/#
before_script: ng serve --prod &
script: $(npm bin)/wait-on http-get://$URL && npm run cy:run
# check prod build
- &build
stage: build
script: npm run demo.ng-build
- <<: *build
env: NGV=latest
- <<: *build
env: NGV=next
- stage: sauce-tests
env: SAUCE=true
before_script:
- mkdir -p $LOGS_DIR
- ./scripts/sauce/sauce_connect_setup.sh
script:
- ./scripts/sauce/sauce_connect_block.sh
- npm run test-cross
after_script: ./scripts/sauce/sauce_connect_teardown.sh
# deploy to ngx-bootstrap.surge.sh
- &surge
stage: deploy
script: npm run demo.build
deploy:
provider: surge
project: ./gh-pages/
domain: ngx-bootstrap.surge.sh
on: development
- <<: *surge
env: NGV=latest
deploy:
provider: surge
project: ./gh-pages/
domain: ngx-bootstrap-latest.surge.sh
on: development
- stage: deploy
script: npm run build:dynamic
before_deploy:
- cd ./demo/dist
deploy:
provider: heroku
api_key: $HEROKU_API_KEY
skip_cleanup: true
app: ngx-universal
on: development
# publish to gh pages and npm
- stage: publish
script: npm run demo.build
after_deploy: npm run flow.github-release
deploy:
provider: pages
local_dir: gh-pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
app: ngx-universal
on:
tags: true
- stage: publish
script: npm run build
before_deploy: "cd dist"
deploy:
provider: npm
email: "valorkin@gmail.com"
api_key: $NPM_AUTH_TOKEN
tag: next
skip_cleanup: true
on:
tags: true
cache:
apt: true
npm: true
directories:
- node_modules