language: node_js
sudo: false
node_js:
- '0.12'

branches:
  except:
    - g3sync

cache:
  directories:
    - node_modules
    - $HOME/.pub-cache

env:
  global:
  - KARMA_BROWSERS=DartiumWithWebPlatform
  - E2E_BROWSERS=Dartium
  - LOGS_DIR=/tmp/angular-build/logs
  - SAUCE_USERNAME=angular-ci
  - SAUCE_ACCESS_KEY=9b988f434ff8-fbca-8aa4-4ae3-35442987
  - ARCH=linux-x64
  # Token for tsd to increase github rate limit
  # See https://github.com/DefinitelyTyped/tsd#tsdrc
  # This does not use http://docs.travis-ci.com/user/environment-variables/#Secure-Variables
  # because those are not visible for pull requests, and those should also be reliable.
  # This SSO token belongs to github account angular-github-ratelimit-token which has no access
  # (password is in Valentine)
  - TSDRC='{"token":"ef474500309daea53d5991b3079159a29520a40b"}'
  # GITHUB_TOKEN_ANGULAR
  - secure: "fq/U7VDMWO8O8SnAQkdbkoSe2X92PVqg4d044HmRYVmcf6YbO48+xeGJ8yOk0pCBwl3ISO4Q2ot0x546kxfiYBuHkZetlngZxZCtQiFT9kyId8ZKcYdXaIW9OVdw3Gh3tQyUwDucfkVhqcs52D6NZjyE2aWZ4/d1V4kWRO/LMgo="
  matrix:
    # Order: slowest build on top, so that we don't hog VMs while waiting for others to complete.
    - MODE=dart DART_CHANNEL=stable
    - MODE=dart DART_CHANNEL=dev
    - MODE=saucelabs DART_CHANNEL=dev
    - MODE=dart_experimental DART_CHANNEL=dev
    - MODE=js DART_CHANNEL=dev
    - MODE=router DART_CHANNEL=dev
    - MODE=lint DART_CHANNEL=dev

matrix:
  allow_failures:
  - env: "MODE=saucelabs DART_CHANNEL=dev"
  - env: "MODE=dart_experimental DART_CHANNEL=dev"

addons:
  firefox: "38.0"

before_install:
- echo ${TSDRC} > .tsdrc
- export DISPLAY=:99.0
- export GIT_SHA=$(git rev-parse HEAD)
- ./scripts/ci/init_android.sh
- ./scripts/ci/install_dart.sh ${DART_CHANNEL} ${ARCH}
- sh -e /etc/init.d/xvfb start
- if [[ -e SKIP_TRAVIS_TESTS ]]; then { cat SKIP_TRAVIS_TESTS ; exit 0; } fi

install:
  # Update npm
  - npm install -g npm@2.9.1
  - npm --version
  # Check the size of caches
  - du -sh ./node_modules || true
  # Install npm dependecies
  - npm install

before_script:
- mkdir -p $LOGS_DIR
- ./scripts/ci/presubmit-queue-setup.sh

script:
- ./scripts/ci/build_and_test.sh ${MODE}

after_script:
- ./scripts/ci/print-logs.sh
- ./scripts/ci/after-script.sh

notifications:
  webhooks:
    urls:
    - https://webhooks.gitter.im/e/1ef62e23078036f9cee4
    # trigger Buildtime Trend Service to parse Travis CI log
    - https://buildtimetrend.herokuapp.com/travis
    on_success: always  # options: [always|never|change] default: always
    on_failure: always  # options: [always|never|change] default: always
    on_start: false     # default: false
  slack:
    secure: EP4MzZ8JMyNQJ4S3cd5LEPWSMjC7ZRdzt3veelDiOeorJ6GwZfCDHncR+4BahDzQAuqyE/yNpZqaLbwRWloDi15qIUsm09vgl/1IyNky1Sqc6lEknhzIXpWSalo4/T9ZP8w870EoDvM/UO+LCV99R3wS8Nm9o99eLoWVb2HIUu0=

deploy:
  - provider: gcs
    # This is for project angular-github-babysitter
    access_key_id: GOOGIOQTDBEOPBUAWFZQ
    secret_access_key:
      secure: "MEDggllZ5fw4wI9CEUi8WR6jKsKXqdRF/DLxSNC2JpzM5RlVeBm0uqjntYT1Cf1dASvQ2/+vZCUikL/3A48NcoEYRHXGmxu8D6t/SvleQD8Xv434xFOdsa2QqP/HiCtqCLOI5jJz1JVoB5nNyKKZ33ogTUL1LV1TfcrAioyizW8="
    # this bucket has a lifecycle to delete after 90 days:
    # $ echo '{"rule": [{"action": {"type": "Delete"}, "condition": {"age": 90}}]}' > lifecycle.json
    # $ gsutil lifecycle set lifecycle.json gs://angular2-snapshots
    bucket: angular2-snapshots
    # don't delete generated files
    skip_cleanup: true
    # serve to public at https://storage.googleapis.com/angular2-snapshots/SHA/dart_stable/dist.tgz
    acl: public-read
    # upload the .tgz archive created in scripts/ci/build_and_test.sh
    local-dir: deploy
    # create a "subdirectory" for each commit
    upload-dir: $TRAVIS_COMMIT/dart_stable
    on:
      repo: angular/angular
      condition: "$MODE = dart && $DART_CHANNEL = stable"
  - provider: gcs
    access_key_id: GOOGIOQTDBEOPBUAWFZQ
    secret_access_key:
      secure: "MEDggllZ5fw4wI9CEUi8WR6jKsKXqdRF/DLxSNC2JpzM5RlVeBm0uqjntYT1Cf1dASvQ2/+vZCUikL/3A48NcoEYRHXGmxu8D6t/SvleQD8Xv434xFOdsa2QqP/HiCtqCLOI5jJz1JVoB5nNyKKZ33ogTUL1LV1TfcrAioyizW8="
    bucket: angular2-snapshots
    skip_cleanup: true
    acl: public-read
    local-dir: deploy
    upload-dir: $TRAVIS_COMMIT/js
    on:
      repo: angular/angular
      condition: "$MODE = js"
