# Configuration file for https://circleci.com/gh/angular/material2

# Note: YAML anchors allow an object to be re-used, reducing duplication.
# The ampersand declares an alias for an object, then later the `<<: *name`
# syntax dereferences it.
# See http://blog.daemonl.com/2016/02/yaml.html
# To validate changes, use an online parser, eg.
# http://yaml-online-parser.appspot.com/

# Settings common to each job
anchor_1: &job_defaults
  working_directory: ~/ng
  docker:
    - image: angular/ngcontainer:0.0.4

# After checkout, rebase on top of master.
# Similar to travis behavior, but not quite the same.
# By default, PRs are not rebased on top of master, which we want.
# See https://discuss.circleci.com/t/1662
anchor_2: &post_checkout
  post: git pull --ff-only origin "refs/pull/${CI_PULL_REQUEST//*pull\//}/merge"

version: 2
jobs:
  build:
    <<: *job_defaults
    steps:
      - checkout:
          <<: *post_checkout
      - restore_cache:
          key: material2-{{ .Branch }}-{{ checksum "package-lock.json" }}

      - run: bazel run @nodejs//:npm install
      # For some reason, circleci needs the postinstall to be run explicitly.
      # This may be unnecessary once ngcontainer uses nodejs 8
      - run: bazel run @nodejs//:npm run postinstall
      - run: bazel build src/cdk/...
      - save_cache:
          key: material2-{{ .Branch }}-{{ checksum "package-lock.json" }}
          paths:
            - "node_modules"

workflows:
  version: 2
  default_workflow:
    jobs:
      - build

notify:
  webhooks:
    - url: https://us-central1-test-jperrott.cloudfunctions.net/circleCi
