2017-07-13 15:16:02 -04:00
# Configuration file for https://circleci.com/gh/angular/angular
# 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/
2019-09-18 10:23:29 -04:00
# CircleCI configuration version
# Version 2.1 allows for extra config reuse features
# https://circleci.com/docs/2.0/reusing-config/#getting-started-with-config-reuse
version : 2.1
2019-01-31 17:57:26 -05:00
# We don't want to include the current branch name in the cache key because that would prevent
# PRs from being able to restore the cache since the branch names are always different for PRs.
# The cache key should only consist of dynamic values that change whenever something in the
2019-02-04 11:11:26 -05:00
# cache changes. For example:
# 1) yarn lock file changes --> cached "node_modules" are different.
# 2) bazel repository definitions change --> cached bazel repositories are different.
2019-09-18 10:25:23 -04:00
# Windows needs its own cache key because binaries in node_modules are different.
# **NOTE 1 **: If you change the cache key prefix, also sync the cache_key_fallback to match.
2019-02-05 13:30:26 -05:00
# **NOTE 2 **: Keep the static part of the cache key as prefix to enable correct fallbacks.
# See https://circleci.com/docs/2.0/caching/#restoring-cache for how prefixes work in CircleCI.
2020-03-17 06:56:22 -04:00
var_3 : &cache_key v4-angular-node-12-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "packages/bazel/package.bzl" }}-{{ checksum "aio/yarn.lock" }}
# We invalidate the cache if the Bazel version changes because otherwise the `bazelisk` cache
# folder will contain all previously used versions and ultimately cause the cache restoring to
# be slower due to its growing size.
var_4 : &cache_key_fallback v4-angular-node-12-{{ checksum ".bazelversion" }}
var_3_win : &cache_key_win v5-angular-win-node-12-{{ checksum ".bazelversion" }}-{{ checksum "yarn.lock" }}-{{ checksum "WORKSPACE" }}-{{ checksum "packages/bazel/package.bzl" }}-{{ checksum "aio/yarn.lock" }}
var_4_win : &cache_key_win_fallback v5-angular-win-node-12-{{ checksum ".bazelversion" }}
2017-12-12 04:23:09 -05:00
2020-01-22 15:54:16 -05:00
# Cache key for the `components-repo-unit-tests` job. **Note** when updating the SHA in the
# cache keys also update the SHA for the "COMPONENTS_REPO_COMMIT" environment variable.
2020-03-09 10:16:50 -04:00
var_5 : &components_repo_unit_tests_cache_key v5-angular-components-598db096e668aa7e9debd56eedfd127b7a55e371
2020-01-22 15:54:16 -05:00
var_6 : &components_repo_unit_tests_cache_key_fallback v5-angular-components-
2019-07-25 10:47:02 -04:00
2019-09-18 11:22:50 -04:00
# Workspace initially persisted by the `setup` job, and then enhanced by `build-npm-packages` and
# `build-ivy-npm-packages`.
# https://circleci.com/docs/2.0/workflows/#using-workspaces-to-share-data-among-jobs
# https://circleci.com/blog/deep-diving-into-circleci-workspaces/
var_7 : &workspace_location ~/
2018-08-02 00:02:36 -04:00
2019-10-22 07:30:09 -04:00
# Filter to run a job on builds for pull requests only.
var_8 : &only_on_pull_requests
filters :
branches :
only :
- /pull\/\d+/
# Filter to skip a job on builds for pull requests.
var_9 : &skip_on_pull_requests
2019-09-18 11:22:50 -04:00
filters :
branches :
ignore :
2019-10-22 07:30:09 -04:00
- /pull\/\d+/
# Filter to run a job on builds for the master branch only.
var_10 : &only_on_master
filters :
branches :
only :
- master
2019-09-18 11:22:50 -04:00
2019-09-18 10:23:29 -04:00
# Executor Definitions
# https://circleci.com/docs/2.0/reusing-config/#authoring-reusable-executors
# **NOTE 1**: Pin to exact images using an ID (SHA). See https://circleci.com/docs/2.0/circleci-images/#using-a-docker-image-id-to-pin-an-image-to-a-fixed-version.
# (Using the tag in not necessary when pinning by ID, but include it anyway for documentation purposes.)
# **NOTE 2**: If you change the version of the docker images, also change the `cache_key` suffix.
# **NOTE 3**: If you change the version of the `*-browsers` docker image, make sure the
2020-02-13 10:06:32 -05:00
# `--versions.chrome` arg in `integration/bazel-schematics/test.sh` specifies a
# ChromeDriver version that is compatible with the Chrome version in the image.
2019-09-18 10:23:29 -04:00
executors :
2019-09-26 07:40:28 -04:00
default-executor :
2019-09-18 10:23:29 -04:00
parameters :
resource_class :
type : string
default : medium
docker :
2020-01-24 12:59:15 -05:00
- image : circleci/node:12.14.1@sha256:f9de24fc0017059cc42ef7d07db060008af65a98b1f0cdd1ef3339213226bf6d
2019-09-18 10:23:29 -04:00
resource_class : << parameters.resource_class >>
working_directory : ~/ng
windows-executor :
working_directory : ~/ng
resource_class : windows.medium
# CircleCI windows VMs do have the GitBash shell available:
# https://github.com/CircleCI-Public/windows-preview-docs#shells
# But in this specific case we really should not use it because Bazel must not be ran from
# GitBash. These issues discuss why:
# https://github.com/bazelbuild/bazel/issues/5751
# https://github.com/bazelbuild/bazel/issues/5724#issuecomment-410194038
# https://github.com/bazelbuild/bazel/issues/6339#issuecomment-441600879
shell : powershell.exe -ExecutionPolicy Bypass
machine :
# Windows preview image that includes the following:
# - Visual Studio 2019 build tools
# - Node 12
# - yarn 1.17
# - Python 3 3.7.4
image : windows-server-2019-vs2019:201908-02
2019-09-18 11:22:50 -04:00
# Command Definitions
# https://circleci.com/docs/2.0/reusing-config/#authoring-reusable-commands
commands :
custom_attach_workspace :
description : Attach workspace at a predefined location
steps :
- attach_workspace :
at : *workspace_location
2020-01-31 18:50:44 -05:00
# Install shared libs used by Chrome that is either provisioned by
2020-02-07 06:38:58 -05:00
# rules_webtesting or by puppeteer.
2020-01-31 18:50:44 -05:00
install_chrome_libs :
description : Install shared Chrome libs
steps :
- run :
name : Install shared Chrome libs
command : |
sudo apt-get update
# Install GTK+ graphical user interface (libgtk-3-0), advanced linux sound architecture (libasound2)
# and network security service libraries (libnss3) & X11 Screen Saver extension library (libssx1)
# which are dependendies of chrome & needed for karma & protractor headless chrome tests.
# This is a very small install which takes around 7s in comparing to using the full
# circleci/node:x.x.x-browsers image.
sudo apt-get -y install libgtk-3-0 libasound2 libnss3 libxss1
2020-02-11 00:41:28 -05:00
# Install java runtime which is required by some integration tests such as
# //integration:hello_world__closure_test, //integration:i18n_test and
# //integration:ng_elements_test to run the closure compiler
install_java :
description : Install java
steps :
- run :
name : Install java
command : |
sudo apt-get update
# Install java runtime
sudo apt-get install default-jre
2019-12-17 12:05:22 -05:00
# Initializes the CI environment by setting up common environment variables.
init_environment :
2020-01-31 14:26:21 -05:00
description : Initializing environment (setting up variables)
2019-12-17 12:05:22 -05:00
steps :
2020-02-11 17:56:25 -05:00
- run :
name : Set up environment
environment :
CIRCLE_GIT_BASE_REVISION : << pipeline.git.base_revision >>
CIRCLE_GIT_REVISION : << pipeline.git.revision >>
command : ./.circleci/env.sh
2019-10-04 09:02:04 -04:00
- run :
# Configure git as the CircleCI `checkout` command does.
# This is needed because we only checkout on the setup job.
# Add GitHub to known hosts
name : Configure git
command : |
mkdir -p ~/.ssh
echo 'github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==' >> ~/.ssh/known_hosts
git config --global url."ssh://git@github.com".insteadOf "https://github.com" || true
git config --global gc.auto 0 || true
2019-09-18 11:22:50 -04:00
2020-02-06 08:17:03 -05:00
init_saucelabs_environment :
description : Sets up a domain that resolves to the local host.
steps :
- run :
name : Preparing environment for running tests on Saucelabs.
command : |
# For SauceLabs jobs, we set up a domain which resolves to the machine which launched
# the tunnel. We do this because devices are sometimes not able to properly resolve
# `localhost` or `127.0.0.1` through the SauceLabs tunnel. Using a domain that does not
# resolve to anything on SauceLabs VMs ensures that such requests are always resolved
# through the tunnel, and resolve to the actual tunnel host machine (i.e. the CircleCI VM).
# More context can be found in: https://github.com/angular/angular/pull/35171.
setPublicVar SAUCE_LOCALHOST_ALIAS_DOMAIN "angular-ci.local"
setSecretVar SAUCE_ACCESS_KEY $(echo $SAUCE_ACCESS_KEY | rev)
- run :
# Sets up a local domain in the machine's host file that resolves to the local
# host. This domain is helpful in Saucelabs tests where devices are not able to
# properly resolve `localhost` or `127.0.0.1` through the sauce-connect tunnel.
name : Setting up alias domain for local host.
command : echo "127.0.0.1 $SAUCE_LOCALHOST_ALIAS_DOMAIN" | sudo tee -a /etc/hosts
2019-09-18 11:41:56 -04:00
# Normally this would be an individual job instead of a command.
# But startup and setup time for each invidual windows job are high enough to discourage
# many small jobs, so instead we use a command for setup unless the gain becomes significant.
setup_win :
2019-09-18 11:22:50 -04:00
description : Setup windows node environment
steps :
2019-09-18 11:41:56 -04:00
# Use the Linux workspace directly, as it already has checkout, rebased and node modules.
- custom_attach_workspace
2019-09-18 11:22:50 -04:00
# Install Bazel pre-requisites that aren't in the preconfigured CircleCI Windows VM.
- run : ./.circleci/windows-env.ps1
- run : node --version
- run : yarn --version
2019-09-18 11:41:56 -04:00
- restore_cache :
keys :
- *cache_key_win
- *cache_key_win_fallback
# Reinstall to get windows binaries.
- run : yarn install --frozen-lockfile --non-interactive
2020-02-04 19:14:21 -05:00
# Install @bazel/bazelisk globally and use that for the first run.
2019-09-18 11:41:56 -04:00
# Workaround for https://github.com/bazelbuild/rules_nodejs/issues/894
2020-02-04 19:14:21 -05:00
# NB: the issue was for @bazel/bazel but the same problem applies to @bazel/bazelisk
- run : yarn global add @bazel/bazelisk@$env:BAZELISK_VERSION
- run : bazelisk info
2019-09-18 11:22:50 -04:00
2019-09-26 07:40:28 -04:00
notify_webhook_on_fail :
description : Notify a webhook about failure
parameters :
# `webhook_url_env_var` are secret env vars defined in CircleCI project settings.
# The URLs come from https://angular-team.slack.com/apps/A0F7VRE7N-circleci.
webhook_url_env_var :
type : env_var_name
2019-09-18 11:22:50 -04:00
steps :
- run :
when : on_fail
command : |
notificationJson="{\"text\":\":x: \`$CIRCLE_JOB\` job for $CIRCLE_BRANCH branch failed on build $CIRCLE_BUILD_NUM: $CIRCLE_BUILD_URL :scream:\"}"
2019-09-26 07:40:28 -04:00
curl --request POST --header "Content-Type: application/json" --data "$notificationJson" ${<< parameters.webhook_url_env_var >>}
2019-09-18 11:22:50 -04:00
# Job definitions
2019-09-18 12:23:18 -04:00
# Jobs can include parameters that are passed in the workflow job invocation.
# https://circleci.com/docs/2.0/reusing-config/#authoring-parameterized-jobs
2017-06-02 20:03:15 -04:00
jobs :
2019-02-22 16:33:53 -05:00
setup :
2019-09-26 07:40:28 -04:00
executor : default-executor
2017-06-02 20:03:15 -04:00
steps :
2019-01-31 09:14:59 -05:00
- checkout
2020-03-23 14:22:57 -04:00
- init_environment
2019-09-18 11:22:50 -04:00
- run :
name : Rebase PR on target branch
# After checkout, rebase on top of target branch.
command : >
if [[ -n "${CIRCLE_PR_NUMBER}" ]]; then
# User is required for rebase.
git config user.name "angular-ci"
git config user.email "angular-ci"
# Rebase PR on top of target branch.
node tools/rebase-pr.js angular/angular ${CIRCLE_PR_NUMBER}
else
echo "This build is not over a PR, nothing to do."
fi
2019-02-22 12:30:19 -05:00
# This cache is saved in the build-npm-packages so that Bazel cache is also included.
2019-09-18 11:22:50 -04:00
- restore_cache :
keys :
- *cache_key
- *cache_key_fallback
- run :
name : Running Yarn install
command : yarn install --frozen-lockfile --non-interactive
# Yarn's requests sometimes take more than 10mins to complete.
no_output_timeout : 45m
2019-02-22 12:30:19 -05:00
- run : yarn --cwd aio install --frozen-lockfile --non-interactive
2019-02-25 04:19:07 -05:00
# Make the bazel directories and add a file to them if they don't exist already so that
# persist_to_workspace does not fail.
- run : |
if [ ! -d ~/bazel_repository_cache ]; then
mkdir ~/bazel_repository_cache
touch ~/bazel_repository_cache/MARKER
fi
2019-02-22 12:30:19 -05:00
# Persist any changes at this point to be reused by further jobs.
2019-09-18 11:22:50 -04:00
# **NOTE**: To add new content to the workspace, always persist on the same root.
2019-02-22 12:30:19 -05:00
- persist_to_workspace :
2019-09-18 11:22:50 -04:00
root : *workspace_location
2019-02-22 12:30:19 -05:00
paths :
2019-02-25 04:19:07 -05:00
- ./ng
- ./bazel_repository_cache
2019-02-22 12:30:19 -05:00
lint :
2019-09-26 07:40:28 -04:00
executor : default-executor
2019-02-22 12:30:19 -05:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2018-01-25 12:55:27 -05:00
2018-12-05 15:16:14 -05:00
- run : 'yarn bazel:format -mode=check ||
(echo "BUILD files not formatted. Please run ''yarn bazel:format''" ; exit 1)'
2018-03-01 10:15:30 -05:00
# Run the skylark linter to check our Bazel rules
2018-12-05 15:16:14 -05:00
- run : 'yarn bazel:lint ||
(echo -e "\n.bzl files have lint errors. Please run ''yarn bazel:lint-fix''"; exit 1)'
2018-01-25 12:55:27 -05:00
2020-03-23 11:53:42 -04:00
- run : yarn lint --branch $CI_GIT_BASE_REVISION
2020-02-24 06:16:28 -05:00
- run : yarn ts-circular-deps:check
2020-03-30 13:33:37 -04:00
- run : yarn -s ng-dev pullapprove verify
2017-06-21 00:08:20 -04:00
2018-04-23 14:46:02 -04:00
test :
2019-09-18 10:23:29 -04:00
executor :
2019-09-26 07:40:28 -04:00
name : default-executor
2020-02-07 19:24:19 -05:00
# Now that large integration tests are running locally in parallel (they can't run on RBE yet
# as they require network access for yarn install), this test is running out of memory
# consistently with the xlarge machine.
# TODO: switch back to xlarge once integration tests are running on remote-exec
2020-02-14 20:23:49 -05:00
resource_class : 2xlarge+
2017-06-14 19:38:27 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-04 14:45:40 -05:00
- install_chrome_libs
2020-02-11 00:41:28 -05:00
- install_java
2019-07-25 10:40:05 -04:00
- run :
command : yarn bazel test //... --build_tag_filters=-ivy-only --test_tag_filters=-ivy-only
no_output_timeout : 20m
2017-12-13 12:18:16 -05:00
2018-06-05 14:38:46 -04:00
# Temporary job to test what will happen when we flip the Ivy flag to true
test_ivy_aot :
2019-09-18 10:23:29 -04:00
executor :
2019-09-26 07:40:28 -04:00
name : default-executor
2019-09-18 10:23:29 -04:00
resource_class : xlarge
2018-06-05 14:38:46 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-04 14:45:40 -05:00
- install_chrome_libs
2020-01-17 11:03:07 -05:00
# We need to explicitly specify the --symlink_prefix option because otherwise we would
# not be able to easily find the output bin directory when uploading artifacts for size
# measurements.
2019-07-25 10:40:05 -04:00
- run :
command : yarn test-ivy-aot //... --symlink_prefix=dist/
no_output_timeout : 20m
2018-11-10 05:27:08 -05:00
# Publish bundle artifacts which will be used to calculate the size change. **Note**: Make
# sure that the size plugin from the Angular robot fetches the artifacts from this CircleCI
# job (see .github/angular-robot.yml). Additionally any artifacts need to be stored with the
# following path format: "{projectName}/{context}/{fileName}". This format is necessary
# because otherwise the bot is not able to pick up the artifacts from CircleCI. See:
# https://github.com/angular/github-robot/blob/master/functions/src/plugins/size.ts#L392-L394
- store_artifacts :
path : dist/bin/packages/core/test/bundling/hello_world/bundle.min.js
destination : core/hello_world/bundle
- store_artifacts :
path : dist/bin/packages/core/test/bundling/todo/bundle.min.js
destination : core/todo/bundle
- store_artifacts :
path : dist/bin/packages/core/test/bundling/hello_world/bundle.min.js.br
destination : core/hello_world/bundle.br
- store_artifacts :
path : dist/bin/packages/core/test/bundling/todo/bundle.min.js.br
destination : core/todo/bundle.br
2017-06-14 19:38:27 -04:00
2020-02-24 12:17:32 -05:00
# NOTE: This is currently limited to master builds only. See the `monitoring` configuration.
2019-12-06 10:17:09 -05:00
saucelabs_view_engine :
2019-09-18 10:23:29 -04:00
executor :
2019-09-26 07:40:28 -04:00
name : default-executor
2019-09-18 10:23:29 -04:00
# In order to avoid the bottleneck of having a slow host machine, we acquire a better
# container for this job. This is necessary because we launch a lot of browsers concurrently
# and therefore the tunnel and Karma need to process a lot of file requests and tests.
resource_class : xlarge
2018-12-18 01:09:39 -05:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-06 08:17:03 -05:00
- init_saucelabs_environment
2020-01-13 17:40:21 -05:00
- run :
2020-02-23 20:35:46 -05:00
name : Run Bazel tests on Saucelabs with ViewEngine
2020-01-13 17:40:21 -05:00
# See /tools/saucelabs/README.md for more info
command : |
yarn bazel run //tools/saucelabs:sauce_service_setup
2020-03-17 13:00:16 -04:00
TESTS=$(./node_modules/.bin/bazelisk query --output label '(kind(karma_web_test, ...) intersect attr("tags", "saucelabs", ...)) except attr("tags", "ivy-only", ...) except attr("tags", "fixme-saucelabs-ve", ...)')
2020-02-23 20:35:46 -05:00
yarn bazel test --config=saucelabs ${TESTS}
2020-01-13 17:40:21 -05:00
yarn bazel run //tools/saucelabs:sauce_service_stop
2020-02-23 20:35:46 -05:00
no_output_timeout : 40m
2019-09-26 07:40:28 -04:00
- notify_webhook_on_fail :
webhook_url_env_var : SLACK_DEV_INFRA_CI_FAILURES_WEBHOOK_URL
2018-12-18 01:09:39 -05:00
2020-02-24 12:17:32 -05:00
# NOTE: This is currently limited to master builds only. See the `monitoring` configuration.
2019-12-06 10:17:09 -05:00
saucelabs_ivy :
executor :
name : default-executor
# In order to avoid the bottleneck of having a slow host machine, we acquire a better
# container for this job. This is necessary because we launch a lot of browsers concurrently
# and therefore the tunnel and Karma need to process a lot of file requests and tests.
resource_class : xlarge
steps :
- custom_attach_workspace
- init_environment
2020-02-06 08:17:03 -05:00
- init_saucelabs_environment
2019-12-06 10:17:09 -05:00
- run :
2020-02-23 20:35:46 -05:00
name : Run Bazel tests on Saucelabs with Ivy
2020-01-13 17:40:21 -05:00
# See /tools/saucelabs/README.md for more info
command : |
yarn bazel run //tools/saucelabs:sauce_service_setup
2020-03-17 13:00:16 -04:00
TESTS=$(./node_modules/.bin/bazelisk query --output label '(kind(karma_web_test, ...) intersect attr("tags", "saucelabs", ...)) except attr("tags", "no-ivy-aot", ...) except attr("tags", "fixme-saucelabs-ivy", ...)')
2020-02-23 20:35:46 -05:00
yarn bazel test --config=saucelabs --config=ivy ${TESTS}
2020-01-13 17:40:21 -05:00
yarn bazel run //tools/saucelabs:sauce_service_stop
2020-02-23 20:35:46 -05:00
no_output_timeout : 40m
- notify_webhook_on_fail :
webhook_url_env_var : SLACK_DEV_INFRA_CI_FAILURES_WEBHOOK_URL
2019-12-06 10:17:09 -05:00
2018-10-25 07:01:24 -04:00
test_aio :
2020-02-07 06:38:58 -05:00
executor : default-executor
2018-10-10 16:55:45 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-07 06:38:58 -05:00
- install_chrome_libs
2019-09-30 17:54:00 -04:00
# Compile dependencies to ivy
# Running `ngcc` here (instead of implicitly via `ng build`) allows us to take advantage of
# the parallel, async mode speed-up (~20-25s on CI).
2019-11-02 09:15:47 -04:00
- run : yarn --cwd aio ngcc --properties es2015
2018-10-10 16:55:45 -04:00
# Build aio
- run : yarn --cwd aio build --progress=false
# Lint the code
- run : yarn --cwd aio lint
# Run unit tests
2019-02-01 17:13:51 -05:00
- run : yarn --cwd aio test --progress=false --watch=false
2018-10-10 16:55:45 -04:00
# Run e2e tests
2019-02-01 17:13:51 -05:00
- run : yarn --cwd aio e2e --configuration=ci
2019-06-13 17:25:35 -04:00
# Run PWA-score tests
- run : yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
2019-07-03 19:34:32 -04:00
# Run accessibility tests
- run : yarn --cwd aio test-a11y-score-localhost
2019-06-13 17:25:35 -04:00
# Check the bundle sizes.
- run : yarn --cwd aio payload-size
2018-10-10 16:55:45 -04:00
# Run unit tests for Firebase redirects
- run : yarn --cwd aio redirects-test
2018-10-25 07:01:24 -04:00
deploy_aio :
2020-02-07 06:38:58 -05:00
executor : default-executor
2018-10-25 07:01:24 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-07 06:38:58 -05:00
- install_chrome_libs
2018-10-18 07:49:30 -04:00
# Deploy angular.io to production (if necessary)
2019-04-25 06:59:16 -04:00
- run : setPublicVar_CI_STABLE_BRANCH
2018-10-22 06:06:20 -04:00
- run : yarn --cwd aio deploy-production
2018-10-10 16:55:45 -04:00
test_aio_local :
2019-09-18 12:23:18 -04:00
parameters :
2019-09-30 17:54:00 -04:00
viewengine :
2019-09-18 12:23:18 -04:00
type : boolean
default : false
2020-02-07 06:38:58 -05:00
executor : default-executor
2018-10-10 16:55:45 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-07 06:38:58 -05:00
- install_chrome_libs
2018-10-10 16:55:45 -04:00
# Build aio (with local Angular packages)
2019-09-30 17:54:00 -04:00
- run : yarn --cwd aio build-local<<# parameters.viewengine >>-with-viewengine<</ parameters.viewengine >>-ci
2018-10-10 16:55:45 -04:00
# Run unit tests
2019-02-01 17:13:51 -05:00
- run : yarn --cwd aio test --progress=false --watch=false
2018-10-10 16:55:45 -04:00
# Run e2e tests
2019-02-01 17:13:51 -05:00
- run : yarn --cwd aio e2e --configuration=ci
2019-06-13 17:25:35 -04:00
# Run PWA-score tests
- run : yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
2019-06-14 06:01:37 -04:00
# Check the bundle sizes.
2019-09-30 17:54:00 -04:00
- run : yarn --cwd aio payload-size aio-local<<# parameters.viewengine >>-viewengine<</ parameters.viewengine >>
2018-11-05 12:21:27 -05:00
2018-10-10 16:55:45 -04:00
test_aio_tools :
2019-09-26 07:40:28 -04:00
executor : default-executor
2018-10-10 16:55:45 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2018-10-10 16:55:45 -04:00
# Install
- run : yarn --cwd aio install --frozen-lockfile --non-interactive
- run : yarn --cwd aio extract-cli-command-docs
# Run tools tests
- run : yarn --cwd aio tools-test
- run : ./aio/aio-builds-setup/scripts/test.sh
2019-01-06 09:37:55 -05:00
test_docs_examples :
2019-09-18 12:23:18 -04:00
parameters :
ivy :
type : boolean
default : false
2019-09-18 10:23:29 -04:00
executor :
2020-02-13 09:58:04 -05:00
name : default-executor
2019-09-18 10:23:29 -04:00
resource_class : xlarge
2019-02-26 14:24:04 -05:00
parallelism : 5
2019-02-05 16:20:05 -05:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-13 09:58:04 -05:00
- install_chrome_libs
2019-02-05 16:20:05 -05:00
# Install aio
- run : yarn --cwd aio install --frozen-lockfile --non-interactive
2019-09-18 12:23:18 -04:00
# Run examples tests. The "CIRCLE_NODE_INDEX" will be set if "parallelism" is enabled.
# Since the parallelism is set to "5", there will be five parallel CircleCI containers.
# with either "0", "1", etc as node index. This can be passed to the "--shard" argument.
- run : yarn --cwd aio example-e2e --setup --local <<# parameters.ivy >>--ivy<</ parameters.ivy >> --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL} --retry 2
2019-02-05 16:20:05 -05:00
2018-10-17 12:19:15 -04:00
# This job should only be run on PR builds, where `CI_PULL_REQUEST` is not `false`.
2018-05-09 13:54:13 -04:00
aio_preview :
2019-09-26 07:40:28 -04:00
executor : default-executor
2018-05-09 13:54:13 -04:00
environment :
AIO_SNAPSHOT_ARTIFACT_PATH : &aio_preview_artifact_path 'aio/tmp/snapshot.tgz'
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2018-10-17 12:19:15 -04:00
- run : ./aio/scripts/build-artifacts.sh $AIO_SNAPSHOT_ARTIFACT_PATH $CI_PULL_REQUEST $CI_COMMIT
2018-05-09 13:54:13 -04:00
- store_artifacts :
path : *aio_preview_artifact_path
# The `destination` needs to be kept in synch with the value of
# `AIO_ARTIFACT_PATH` in `aio/aio-builds-setup/Dockerfile`
destination : aio/dist/aio-snapshot.tgz
2018-12-04 08:50:17 -05:00
- run : node ./aio/scripts/create-preview $CIRCLE_BUILD_NUM
2018-05-09 13:54:13 -04:00
2018-10-17 12:19:15 -04:00
# This job should only be run on PR builds, where `CI_PULL_REQUEST` is not `false`.
2018-08-25 17:40:58 -04:00
test_aio_preview :
2020-02-07 06:38:58 -05:00
executor : default-executor
2018-08-25 17:40:58 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-07 06:38:58 -05:00
- install_chrome_libs
2019-02-06 03:19:51 -05:00
- run : yarn --cwd aio install --frozen-lockfile --non-interactive
2018-08-25 17:40:58 -04:00
- run :
name : Wait for preview and run tests
2018-10-22 06:06:20 -04:00
command : node aio/scripts/test-preview.js $CI_PULL_REQUEST $CI_COMMIT $CI_AIO_MIN_PWA_SCORE
2018-08-25 17:40:58 -04:00
2019-01-14 20:47:39 -05:00
# The `build-npm-packages` tasks exist for backwards-compatibility with old scripts and
# tests that rely on the pre-Bazel `dist/packages-dist` output structure (build.sh).
# Having multiple jobs that independently build in this manner duplicates some work; we build
# the bazel packages more than once. Even though we have a remote cache, these jobs will
# typically run in parallel so up-to-date outputs will not be available at the time the build
2018-04-23 14:46:02 -04:00
# starts.
2019-01-14 20:47:39 -05:00
# Build the view engine npm packages. No new jobs should depend on this.
build-npm-packages :
2019-09-18 10:23:29 -04:00
executor :
2019-09-26 07:40:28 -04:00
name : default-executor
2019-09-18 10:23:29 -04:00
resource_class : xlarge
2018-04-23 14:46:02 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-29 15:25:49 -05:00
- run : node scripts/build/build-packages-dist.js
2018-04-23 14:46:02 -04:00
# Save the npm packages from //packages/... for other workflow jobs to read
- persist_to_workspace :
2019-09-18 11:22:50 -04:00
root : *workspace_location
2018-04-23 14:46:02 -04:00
paths :
2019-02-25 04:19:07 -05:00
- ng/dist/packages-dist
2019-11-11 10:11:34 -05:00
- ng/dist/zone.js-dist
2019-01-14 20:47:39 -05:00
2019-02-25 04:19:07 -05:00
# Save dependencies and bazel repository cache to use on subsequent runs.
2019-02-06 03:26:36 -05:00
- save_cache :
key : *cache_key
paths :
- "node_modules"
2019-02-22 12:30:19 -05:00
- "aio/node_modules"
2019-02-06 03:26:36 -05:00
- "~/bazel_repository_cache"
2020-03-17 06:56:22 -04:00
- "~/.cache/bazelisk"
2019-02-06 03:26:36 -05:00
2019-01-14 20:47:39 -05:00
# Build the ivy npm packages.
build-ivy-npm-packages :
2019-09-18 10:23:29 -04:00
executor :
2019-09-26 07:40:28 -04:00
name : default-executor
2019-09-18 10:23:29 -04:00
resource_class : xlarge
2019-01-14 20:47:39 -05:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-29 15:25:49 -05:00
- run : node scripts/build/build-ivy-npm-packages.js
2019-01-14 20:47:39 -05:00
# Save the npm packages from //packages/... for other workflow jobs to read
- persist_to_workspace :
2019-09-18 11:22:50 -04:00
root : *workspace_location
2019-01-14 20:47:39 -05:00
paths :
2019-02-25 04:19:07 -05:00
- ng/dist/packages-dist-ivy-aot
2020-02-29 14:05:23 -05:00
- ng/dist/zone.js-dist-ivy-aot
2018-04-23 14:46:02 -04:00
2019-10-22 09:57:13 -04:00
# This job creates compressed tarballs (`.tgz` files) for all Angular packages and stores them as
# build artifacts. This makes it easy to try out changes from a PR build for testing purposes.
# More info CircleCI build artifacts: https://circleci.com/docs/2.0/artifacts
#
# NOTE: Currently, this job only runs for PR builds. See `publish_snapshot` for non-PR builds.
publish_packages_as_artifacts :
executor : default-executor
environment :
NG_PACKAGES_DIR : &ng_packages_dir 'dist/packages-dist'
NG_PACKAGES_ARCHIVES_DIR : &ng_packages_archives_dir 'dist/packages-dist-archives'
2019-11-11 09:55:16 -05:00
ZONEJS_PACKAGES_DIR : &zonejs_packages_dir 'dist/zone.js-dist'
ZONEJS_PACKAGES_ARCHIVES_DIR : &zonejs_packages_archives_dir 'dist/zone.js-dist-archives'
2019-10-22 09:57:13 -04:00
steps :
- custom_attach_workspace
- init_environment
2019-11-11 09:55:16 -05:00
# Publish `@angular/*` packages.
2019-10-22 09:57:13 -04:00
- run :
2019-11-11 09:55:16 -05:00
name : Create artifacts for @angular/* packages
2019-11-21 07:04:45 -05:00
command : ./scripts/ci/create-package-archives.sh $CI_BRANCH $CI_COMMIT $NG_PACKAGES_DIR $NG_PACKAGES_ARCHIVES_DIR
2019-10-22 09:57:13 -04:00
- store_artifacts :
path : *ng_packages_archives_dir
destination : angular
2019-11-11 09:55:16 -05:00
# Publish `zone.js` package.
- run :
name : Create artifacts for zone.js package
2019-11-21 07:04:45 -05:00
command : ./scripts/ci/create-package-archives.sh $CI_BRANCH $CI_COMMIT $ZONEJS_PACKAGES_DIR $ZONEJS_PACKAGES_ARCHIVES_DIR
2019-11-11 09:55:16 -05:00
- store_artifacts :
path : *zonejs_packages_archives_dir
destination : zone.js
2019-10-22 09:57:13 -04:00
2018-04-23 14:46:02 -04:00
# This job updates the content of repos like github.com/angular/core-builds
# for every green build on angular/angular.
publish_snapshot :
2019-09-26 07:40:28 -04:00
executor : default-executor
2018-04-23 14:46:02 -04:00
steps :
2018-04-27 19:21:38 -04:00
# See below - ideally this job should not trigger for non-upstream builds.
# But since it does, we have to check this condition.
- run :
name : Skip this job for Pull Requests and Fork builds
2019-02-28 10:23:54 -05:00
# Note: Using `CIRCLE_*` env variables (instead of those defined in `env.sh` so that this
# step can be run before `init_environment`.
command : >
if [[ -n "${CIRCLE_PR_NUMBER}" ]] ||
[ [ "$CIRCLE_PROJECT_USERNAME" != "angular" ]] ||
[ [ "$CIRCLE_PROJECT_REPONAME" != "angular" ]]; then
circleci step halt
fi
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2018-04-23 14:46:02 -04:00
# CircleCI has a config setting to force SSH for all github connections
# This is not compatible with our mechanism of using a Personal Access Token
# Clear the global setting
- run : git config --global --unset "url.ssh://git@github.com.insteadof"
2018-04-27 19:21:38 -04:00
- run :
name : Decrypt github credentials
2019-06-17 16:37:27 -04:00
# We need ensure that the same default digest is used for encoding and decoding with
# openssl. Openssl versions might have different default digests which can cause
# decryption failures based on the installed openssl version. https://stackoverflow.com/a/39641378/4317734
command : 'openssl aes-256-cbc -d -in .circleci/github_token -md md5 -k "${KEY}" -out ~/.git_credentials'
2018-04-23 14:46:02 -04:00
- run : ./scripts/ci/publish-build-artifacts.sh
2019-04-25 06:54:10 -04:00
aio_monitoring_stable :
2020-02-13 09:46:38 -05:00
executor : default-executor
2018-02-27 18:24:07 -05:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-13 09:46:38 -05:00
- install_chrome_libs
2019-04-25 06:59:16 -04:00
- run : setPublicVar_CI_STABLE_BRANCH
- run :
2020-01-24 13:05:04 -05:00
name : Check out `aio/` and yarn from the stable branch
2019-04-25 06:59:16 -04:00
command : |
git fetch origin $CI_STABLE_BRANCH
2020-01-24 13:05:04 -05:00
git checkout --force origin/$CI_STABLE_BRANCH -- aio/ .yarn/ .yarnrc
2020-01-31 14:26:21 -05:00
# Ignore yarn's engines check, because we checked out `aio/package.json` from the stable
# branch and there could be a node version skew, which is acceptable in this monitoring job.
2020-01-29 06:59:52 -05:00
- run : yarn config set ignore-engines true
2018-09-27 09:35:05 -04:00
- run :
2019-04-25 06:54:10 -04:00
name : Run tests against https://angular.io/
command : ./aio/scripts/test-production.sh https://angular.io/ $CI_AIO_MIN_PWA_SCORE
2019-09-26 07:40:28 -04:00
- notify_webhook_on_fail :
webhook_url_env_var : SLACK_CARETAKER_WEBHOOK_URL
- notify_webhook_on_fail :
webhook_url_env_var : SLACK_DEV_INFRA_CI_FAILURES_WEBHOOK_URL
2019-04-25 06:54:10 -04:00
aio_monitoring_next :
2020-02-07 06:38:58 -05:00
executor : default-executor
2019-04-25 06:54:10 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-07 06:38:58 -05:00
- install_chrome_libs
2019-04-25 06:54:10 -04:00
- run :
name : Run tests against https://next.angular.io/
command : ./aio/scripts/test-production.sh https://next.angular.io/ $CI_AIO_MIN_PWA_SCORE
2019-09-26 07:40:28 -04:00
- notify_webhook_on_fail :
webhook_url_env_var : SLACK_CARETAKER_WEBHOOK_URL
- notify_webhook_on_fail :
webhook_url_env_var : SLACK_DEV_INFRA_CI_FAILURES_WEBHOOK_URL
2018-02-27 18:24:07 -05:00
2019-01-04 14:58:33 -05:00
legacy-unit-tests-saucelabs :
2019-09-18 10:23:29 -04:00
executor :
2019-09-26 07:40:28 -04:00
name : default-executor
2019-09-18 10:23:29 -04:00
# In order to avoid the bottleneck of having a slow host machine, we acquire a better
# container for this job. This is necessary because we launch a lot of browsers concurrently
# and therefore the tunnel and Karma need to process a lot of file requests and tests.
resource_class : xlarge
2019-01-04 14:58:33 -05:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2020-02-06 08:17:03 -05:00
- init_saucelabs_environment
2019-01-04 14:58:33 -05:00
- run :
2020-01-13 17:40:21 -05:00
name : Starting Saucelabs tunnel service
command : ./tools/saucelabs/sauce-service.sh run
2019-01-04 14:58:33 -05:00
background : true
- run : yarn tsc -p packages
- run : yarn tsc -p modules
2019-10-05 23:06:53 -04:00
- run : yarn bazel build //packages/zone.js:npm_package
2020-01-13 17:40:21 -05:00
- run :
# Waiting on ready ensures that we don't run tests too early without Saucelabs not being ready.
name : Waiting for Saucelabs tunnel to connect
command : ./tools/saucelabs/sauce-service.sh ready-wait
2020-02-06 08:17:03 -05:00
- run :
name : Running tests on Saucelabs.
command : |
browsers=$(node -e 'console.log(require("./browser-providers.conf").sauceAliases.CI_REQUIRED.join(","))')
yarn karma start ./karma-js.conf.js --single-run --browsers=${browsers}
2020-01-13 17:40:21 -05:00
- run :
name : Stop Saucelabs tunnel service
command : ./tools/saucelabs/sauce-service.sh stop
2019-01-04 14:58:33 -05:00
2020-01-22 15:54:16 -05:00
# Job that runs all unit tests of the `angular/components` repository.
components-repo-unit-tests :
2019-09-18 10:23:29 -04:00
executor :
2020-01-22 15:54:16 -05:00
name : default-executor
2019-09-18 10:23:29 -04:00
resource_class : xlarge
2019-01-14 20:47:39 -05:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2019-07-23 16:54:56 -04:00
# Restore the cache before cloning the repository because the clone script re-uses
# the restored repository if present. This reduces the amount of times the components
# repository needs to be cloned (this is slow and increases based on commits in the repo).
2019-03-18 14:25:19 -04:00
- restore_cache :
keys :
2020-01-22 15:54:16 -05:00
- *components_repo_unit_tests_cache_key
# Whenever the `angular/components` SHA is updated, the cache key will no longer
# match. The fallback cache will still match, and CircleCI will restore the most
# recently cached repository folder. Without the fallback cache, we'd need to download
# the repository from scratch and it would slow down the job. This is because we can't
# clone the repository with reduced `--depth`, but rather need to clone the whole
# repository to be able to support arbitrary SHAs.
- *components_repo_unit_tests_cache_key_fallback
2019-07-23 16:54:56 -04:00
- run :
2020-01-22 15:54:16 -05:00
name : "Fetching angular/components repository"
command : ./scripts/ci/clone_angular_components_repo.sh
2019-03-18 14:25:19 -04:00
- run :
2020-01-22 15:54:16 -05:00
# Run yarn install to fetch the Bazel binaries as used in the components repo.
name : Installing dependencies.
2019-11-01 08:38:57 -04:00
# TODO: remove this once the repo has been updated to use NodeJS v12 and Yarn 1.19.1.
# We temporarily ignore the "engines" because the Angular components repository has
# minimum dependency on NodeJS v12 and Yarn 1.19.1, but the framework repository uses
# older versions.
2020-01-22 15:54:16 -05:00
command : yarn --ignore-engines --cwd ${COMPONENTS_REPO_TMP_DIR} install --frozen-lockfile --non-interactive
2019-03-18 14:25:19 -04:00
- save_cache :
2020-01-22 15:54:16 -05:00
key : *components_repo_unit_tests_cache_key
2019-03-18 14:25:19 -04:00
paths :
2020-01-22 15:54:16 -05:00
# Temporary directory must be kept in sync with the `$COMPONENTS_REPO_TMP_DIR` env
# variable. It needs to be hardcoded here, because env variables interpolation is
# not supported.
- "/tmp/angular-components-repo"
2020-01-11 06:35:18 -05:00
- run :
2020-01-22 15:54:16 -05:00
# Updates the `angular/components` `package.json` file to refer to the release output
# inside the `packages-dist` directory. Note that it's not necessary to perform a yarn
# install as Bazel runs Yarn automatically when needed.
2020-01-11 06:35:18 -05:00
name : Setting up release packages.
2020-01-22 15:54:16 -05:00
command : node scripts/ci/update-deps-to-dist-packages.js ${COMPONENTS_REPO_TMP_DIR}/package.json dist/packages-dist/
2019-03-20 07:43:20 -04:00
- run :
2020-01-22 15:54:16 -05:00
name : "Running `angular/components` unit tests"
2020-01-31 18:26:51 -05:00
command : ./scripts/ci/run_angular_components_unit_tests.sh
2019-01-14 20:47:39 -05:00
2019-05-31 11:56:07 -04:00
test_zonejs :
2019-10-14 13:16:13 -04:00
executor :
name : default-executor
resource_class : xlarge
2019-05-31 11:56:07 -04:00
steps :
2019-09-18 11:22:50 -04:00
- custom_attach_workspace
- init_environment
2019-05-31 11:56:07 -04:00
# Install
- run : yarn --cwd packages/zone.js install --frozen-lockfile --non-interactive
# Run zone.js tools tests
- run : yarn --cwd packages/zone.js promisetest
- run : yarn --cwd packages/zone.js promisefinallytest
2019-07-18 12:42:23 -04:00
- run : yarn bazel build //packages/zone.js:npm_package &&
cp dist/bin/packages/zone.js/npm_package/dist/zone-mix.js ./packages/zone.js/test/extra/ &&
cp dist/bin/packages/zone.js/npm_package/dist/zone-patch-electron.js ./packages/zone.js/test/extra/ &&
yarn --cwd packages/zone.js electrontest
2020-01-31 10:08:40 -05:00
- run : yarn --cwd packages/zone.js jesttest
2019-05-31 11:56:07 -04:00
2019-07-25 10:47:02 -04:00
# Windows jobs
# Docs: https://circleci.com/docs/2.0/hello-world-windows/
test_win :
2019-09-18 10:23:29 -04:00
executor : windows-executor
2019-07-25 10:47:02 -04:00
steps :
2019-09-18 11:41:56 -04:00
- setup_win
2019-07-25 10:47:02 -04:00
- run :
2019-09-18 11:41:56 -04:00
# Ran into a command parsing problem where `-browser:chromium-local` was converted to
# `-browser: chromium-local` (a space was added) in https://circleci.com/gh/angular/angular/357511.
# Probably a powershell command parsing thing. There's no problem using a yarn script though.
2019-07-25 10:47:02 -04:00
command : yarn circleci-win-ve
no_output_timeout : 45m
2019-09-18 11:41:56 -04:00
# Save bazel repository cache to use on subsequent runs.
# We don't save node_modules because it's faster to use the linux workspace and reinstall.
- save_cache :
key : *cache_key_win
paths :
- "C:/Users/circleci/bazel_repository_cache"
2019-07-25 10:47:02 -04:00
test_ivy_aot_win :
2019-09-18 10:23:29 -04:00
executor : windows-executor
2019-07-25 10:47:02 -04:00
steps :
2019-09-18 11:41:56 -04:00
- setup_win
2019-07-25 10:47:02 -04:00
- run :
command : yarn circleci-win-ivy
no_output_timeout : 45m
2017-06-14 19:38:27 -04:00
workflows :
version : 2
default_workflow :
jobs :
2019-08-19 20:52:25 -04:00
- setup :
filters :
branches :
ignore : g3
2019-02-22 12:30:19 -05:00
- lint :
requires :
2019-07-18 16:33:45 -04:00
- setup
2019-02-22 12:30:19 -05:00
- test :
requires :
2019-07-18 16:33:45 -04:00
- setup
2019-02-22 12:30:19 -05:00
- test_ivy_aot :
requires :
2019-07-18 16:33:45 -04:00
- setup
2019-02-22 12:30:19 -05:00
- build-npm-packages :
requires :
2019-07-18 16:33:45 -04:00
- setup
2019-02-22 12:30:19 -05:00
- build-ivy-npm-packages :
requires :
2019-07-18 16:33:45 -04:00
- setup
2019-03-12 14:44:03 -04:00
- legacy-unit-tests-saucelabs :
requires :
2019-07-18 16:33:45 -04:00
- setup
- test_aio :
requires :
- setup
2018-10-25 07:01:24 -04:00
- deploy_aio :
requires :
- test_aio
2018-10-10 16:55:45 -04:00
- test_aio_local :
requires :
2019-01-14 20:47:39 -05:00
- build-npm-packages
2019-09-18 12:23:18 -04:00
- test_aio_local :
2019-09-30 17:54:00 -04:00
name : test_aio_local_viewengine
viewengine : true
2018-11-05 12:21:27 -05:00
requires :
2019-04-02 14:53:49 -04:00
- build-npm-packages
2018-10-10 16:55:45 -04:00
- test_aio_tools :
requires :
2019-01-14 20:47:39 -05:00
- build-npm-packages
2019-01-06 09:37:55 -05:00
- test_docs_examples :
2018-10-10 16:55:45 -04:00
requires :
2019-01-14 20:47:39 -05:00
- build-npm-packages
2019-09-18 12:23:18 -04:00
- test_docs_examples :
name : test_docs_examples_ivy
ivy : true
2019-02-05 16:20:05 -05:00
requires :
2020-03-17 16:28:28 -04:00
- build-npm-packages
2018-09-20 04:21:53 -04:00
- aio_preview :
2019-10-22 07:30:09 -04:00
# Only run on PR builds. (There can be no previews for non-PR builds.)
<< : *only_on_pull_requests
2019-02-22 12:30:19 -05:00
requires :
2019-02-22 16:33:53 -05:00
- setup
2018-08-25 17:40:58 -04:00
- test_aio_preview :
requires :
- aio_preview
2019-10-22 09:57:13 -04:00
- publish_packages_as_artifacts :
requires :
- build-npm-packages
2018-04-23 14:46:02 -04:00
- publish_snapshot :
# Note: no filters on this job because we want it to run for all upstream branches
# We'd really like to filter out pull requests here, but not yet available:
# https://discuss.circleci.com/t/workflows-pull-request-filter/14396/4
2018-04-27 19:21:38 -04:00
# Instead, the job just exits immediately at the first step.
2018-04-23 14:46:02 -04:00
requires :
2018-04-23 19:41:10 -04:00
# Only publish if tests and integration tests pass
2018-04-23 19:14:34 -04:00
- test
2018-06-05 14:38:46 -04:00
- test_ivy_aot
2018-10-24 09:51:00 -04:00
# Only publish if `aio`/`docs` tests using the locally built Angular packages pass
- test_aio_local
2019-09-30 17:54:00 -04:00
- test_aio_local_viewengine
2019-01-06 09:37:55 -05:00
- test_docs_examples
2019-02-05 16:20:05 -05:00
- test_docs_examples_ivy
# Get the artifacts to publish from the build-packages-dist job
2018-04-23 19:14:34 -04:00
# since the publishing script expects the legacy outputs layout.
2019-01-14 20:47:39 -05:00
- build-npm-packages
- build-ivy-npm-packages
2019-03-12 14:44:03 -04:00
- legacy-unit-tests-saucelabs
2020-02-03 13:00:58 -05:00
- components-repo-unit-tests :
requires :
- build-npm-packages
2019-05-31 11:56:07 -04:00
- test_zonejs :
requires :
- setup
2019-09-18 11:41:56 -04:00
# Windows Jobs
# These are very slow so we run them on non-PRs only for now.
2019-07-25 10:47:02 -04:00
# TODO: remove the filter when CircleCI makes Windows FS faster.
# The Windows jobs are only run after their non-windows counterparts finish successfully.
# This isn't strictly necessary as there is no artifact dependency, but helps economize
# CI resources by not attempting to build when we know should fail.
- test_win :
2019-10-22 07:30:09 -04:00
<< : *skip_on_pull_requests
2019-07-25 10:47:02 -04:00
requires :
- test
- test_ivy_aot_win :
2019-10-22 07:30:09 -04:00
<< : *skip_on_pull_requests
2019-07-25 10:47:02 -04:00
requires :
- test_ivy_aot
2019-01-04 14:58:33 -05:00
2020-02-24 12:17:32 -05:00
monitoring :
2019-04-27 05:56:34 -04:00
jobs :
- setup
- aio_monitoring_stable :
requires :
- setup
- aio_monitoring_next :
requires :
- setup
2020-02-24 12:17:32 -05:00
- saucelabs_ivy :
# Testing saucelabs via Bazel currently taking longer than the legacy saucelabs job as it
# each karma_web_test target is provisioning and tearing down browsers which is adding
# a lot of overhead. Running once daily on master only to avoid wasting resources and
# slowing down CI for PRs.
# TODO: Run this job on all branches (including PRs) once karma_web_test targets can
# share provisioned browsers and we can remove the legacy saucelabs job.
requires :
- setup
- saucelabs_view_engine :
# Testing saucelabs via Bazel currently taking longer than the legacy saucelabs job as it
# each karma_web_test target is provisioning and tearing down browsers which is adding
# a lot of overhead. Running once daily on master only to avoid wasting resources and
# slowing down CI for PRs.
# TODO: Run this job on all branches (including PRs) once karma_web_test targets can
# share provisioned browsers and we can remove the legacy saucelabs job.
requires :
- setup
2019-04-27 05:56:34 -04:00
triggers :
- schedule :
2019-10-22 07:30:09 -04:00
<< : *only_on_master
2020-02-24 12:17:32 -05:00
# Runs monitoring jobs at 10:00AM every day.
2019-04-27 05:56:34 -04:00
cron : "0 10 * * *"