valor-software/ng2-bootstrap

View on GitHub
.travis.yml

Summary

Maintainability
Test Coverage
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