-
Notifications
You must be signed in to change notification settings - Fork 27.4k
chore(*): update Node.js from 8 to 12, update some dependencies #16915
Changes from all commits
43c3e5b
c4b79d5
9c810eb
974700a
a0488b3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,380 @@ | ||
# 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/ | ||
|
||
# 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 | ||
|
||
# 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_workspace_location: &workspace_location ~/ | ||
|
||
# Filter to run a job on builds for pull requests only. | ||
var_only_on_pull_requests: &only_on_pull_requests | ||
filters: | ||
branches: | ||
only: | ||
- /pull\/\d+/ | ||
|
||
# Filter to skip a job on builds for pull requests. | ||
var_skip_on_pull_requests: &skip_on_pull_requests | ||
filters: | ||
branches: | ||
ignore: | ||
- /pull\/\d+/ | ||
|
||
# Filter to run a job on builds for the master branch only. | ||
var_only_on_master: &only_on_master | ||
filters: | ||
branches: | ||
only: | ||
- master | ||
|
||
# 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 | ||
# `--versions.chrome` arg in `integration/bazel-schematics/test.sh` specifies a | ||
# ChromeDriver version that is compatible with the Chrome version in the image. | ||
executors: | ||
default-executor: | ||
parameters: | ||
resource_class: | ||
type: string | ||
default: medium | ||
docker: | ||
- image: circleci/node:12.16.3 | ||
resource_class: << parameters.resource_class >> | ||
working_directory: ~/ng | ||
cloud-sdk: | ||
description: The docker container to use when running gcp-gcs commands | ||
docker: | ||
- image: google/cloud-sdk:alpine | ||
|
||
|
||
# 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 | ||
|
||
# Install shared libs used by Chrome. | ||
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 | ||
|
||
install_java: | ||
description: Install java | ||
steps: | ||
- run: | ||
name: Install java | ||
command: | | ||
sudo apt-get update | ||
# Install java runtime | ||
sudo apt-get install default-jre | ||
|
||
# Initializes the CI environment by setting up common environment variables. | ||
init_environment: | ||
description: Initializing environment (setting up variables) | ||
steps: | ||
- run: | ||
name: Set up environment | ||
environment: | ||
CIRCLE_GIT_BASE_REVISION: << pipeline.git.base_revision >> | ||
CIRCLE_GIT_REVISION: << pipeline.git.revision >> | ||
command: ./.circleci/env.sh | ||
- 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://[email protected]".insteadOf "https://github.com" || true | ||
git config --global gc.auto 0 || true | ||
- install_java | ||
|
||
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 | ||
|
||
start_saucelabs: | ||
steps: | ||
- run: | ||
name: Starting Saucelabs tunnel service | ||
command: ./lib/saucelabs/sauce-service.sh start-ready-wait | ||
|
||
stop_saucelabs: | ||
steps: | ||
- run: | ||
name: Stopping Saucelabs tunnel service | ||
command: ./lib/saucelabs/sauce-service.sh stop | ||
|
||
|
||
run_e2e_tests: | ||
parameters: | ||
specs: | ||
type: string | ||
steps: | ||
- custom_attach_workspace | ||
- init_environment | ||
- init_saucelabs_environment | ||
- start_saucelabs | ||
- run: | ||
command: yarn grunt test:circleci-protractor --specs="<< parameters.specs >>" | ||
no_output_timeout: 30m | ||
- stop_saucelabs | ||
|
||
run_e2e_tests_jquery: | ||
parameters: | ||
specs: | ||
type: string | ||
steps: | ||
- custom_attach_workspace | ||
- init_environment | ||
- init_saucelabs_environment | ||
- start_saucelabs | ||
- run: | ||
environment: | ||
USE_JQUERY: 1 | ||
command: yarn grunt test:circleci-protractor --specs="<< parameters.specs >>" | ||
no_output_timeout: 30m | ||
- stop_saucelabs | ||
|
||
# Job definitions | ||
# Jobs can include parameters that are passed in the workflow job invocation. | ||
# https://circleci.com/docs/2.0/reusing-config/#authoring-parameterized-jobs | ||
jobs: | ||
setup: | ||
executor: default-executor | ||
steps: | ||
- checkout | ||
- init_environment | ||
- 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 | ||
- run: yarn grunt package | ||
# Persist any changes at this point to be reused by further jobs. | ||
# **NOTE**: To add new content to the workspace, always persist on the same root. | ||
- persist_to_workspace: | ||
root: *workspace_location | ||
paths: | ||
- ./ng | ||
|
||
lint: | ||
executor: default-executor | ||
steps: | ||
- custom_attach_workspace | ||
- init_environment | ||
- run: yarn -s grunt ci-checks | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I copied it from the angular/angular project where it is used extensively. Then I forgot about it. I'll remove it because I don't think it makes much difference and is confusing if not used consistently. |
||
- run: yarn commitplease "${CI_COMMIT_RANGE/.../..}" | ||
- run: yarn grunt validate-angular-files | ||
|
||
unit-test: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- custom_attach_workspace | ||
- init_environment | ||
- init_saucelabs_environment | ||
- run: yarn grunt test:promises-aplus | ||
- run: | ||
command: yarn grunt test:jqlite --browsers="$BROWSERS" --reporters=spec | ||
no_output_timeout: 10m | ||
- run: | ||
command: yarn grunt test:modules --browsers="$BROWSERS" --reporters=spec | ||
no_output_timeout: 10m | ||
- run: | ||
command: yarn grunt test:docs --browsers="$BROWSERS" --reporters=spec | ||
no_output_timeout: 10m | ||
|
||
unit-test-jquery: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- custom_attach_workspace | ||
- init_environment | ||
- init_saucelabs_environment | ||
- run: | ||
command: yarn grunt test:jquery --browsers="$BROWSERS" --reporters=spec | ||
no_output_timeout: 10m | ||
- run: | ||
command: yarn grunt test:jquery-2.2 --browsers="$BROWSERS" --reporters=spec | ||
no_output_timeout: 10m | ||
- run: | ||
command: yarn grunt test:jquery-2.1 --browsers="$BROWSERS" --reporters=spec | ||
no_output_timeout: 10m | ||
|
||
e2e-test-1: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- run_e2e_tests: | ||
specs: test/e2e/tests/**/*.js | ||
|
||
e2e-test-2a: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- run_e2e_tests: | ||
specs: build/docs/ptore2e/example-ng*/**/default_test.js | ||
|
||
e2e-test-2b: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- run_e2e_tests: | ||
specs: "build/docs/ptore2e/!(example-ng*)/**/default_test.js" | ||
|
||
e2e-test-jquery-1: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- run_e2e_tests_jquery: | ||
specs: test/e2e/tests/**/*.js | ||
|
||
e2e-test-jquery-2a: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- run_e2e_tests_jquery: | ||
specs: build/docs/ptore2e/example-ng*/**/jquery_test.js | ||
|
||
e2e-test-jquery-2b: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- run_e2e_tests_jquery: | ||
specs: build/docs/ptore2e/!(example-ng*)/**/jquery_test.js | ||
|
||
deploy-docs: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- custom_attach_workspace | ||
- init_environment | ||
- run: yarn grunt prepareDeploy | ||
# Install dependencies for Firebase functions to prevent parsing errors during deployment | ||
# See https://github.com/angular/angular.js/pull/16453 | ||
- run: yarn -cwd $PROJECT_ROOT/scripts/docs.angularjs.org-firebase/functions | ||
- run: yarn firebase deploy --token "$FIREBASE_TOKEN" --only hosting | ||
|
||
deploy-code: | ||
executor: | ||
name: default-executor | ||
steps: | ||
- run: | ||
name: Authenticate and configure Docker | ||
command: | | ||
echo $GCLOUD_SERVICE_KEY | gcloud auth activate-service-account --key-file=- | ||
gcloud --quiet config set project ${GOOGLE_PROJECT_ID} | ||
- run: | ||
name: Sync files to code.angularjs.org | ||
command: | | ||
gsutil -m rsync $PROJECT_ROOT/deploy/code gs://code-angularjs-org-338b8.appspot.com | ||
|
||
workflows: | ||
version: 2 | ||
default_workflow: | ||
jobs: | ||
- setup | ||
- lint: | ||
requires: | ||
- setup | ||
- unit-test: | ||
requires: | ||
- setup | ||
- unit-test-jquery: | ||
requires: | ||
- setup | ||
- e2e-test-1: | ||
requires: | ||
- setup | ||
- e2e-test-2a: | ||
requires: | ||
- setup | ||
- e2e-test-2b: | ||
requires: | ||
- setup | ||
- e2e-test-jquery-1: | ||
requires: | ||
- setup | ||
- e2e-test-jquery-2a: | ||
requires: | ||
- setup | ||
- e2e-test-jquery-2b: | ||
requires: | ||
- setup | ||
- deploy-docs: | ||
filters: | ||
branches: | ||
only: | ||
- latest | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Previously deployments of the "latest" build, i.e. the releases that have a value of This is more difficult in CircleCI, so I had this idea that we would simply keep a new I never got it fleshed out properly - and now I am thinking, given the status of the project, that we can just run manual deployments when we run the release. WDYT? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why is it more difficult in CircleCI. It seems quite straight forward to me (just check There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hmm, I guess that could work. I was thinking of ways to avoid running the job in the first place. |
||
requires: | ||
- unit-test | ||
- unit-test-jquery | ||
- e2e-test-1 | ||
- e2e-test-2a | ||
- e2e-test-2b | ||
- e2e-test-jquery-1 | ||
- e2e-test-jquery-2a | ||
- e2e-test-jquery-2b | ||
- deploy-code: | ||
filters: | ||
branches: | ||
only: | ||
- master | ||
- latest | ||
requires: | ||
- unit-test | ||
- unit-test-jquery | ||
- e2e-test-1 | ||
- e2e-test-2a | ||
- e2e-test-2b | ||
- e2e-test-jquery-1 | ||
- e2e-test-jquery-2a | ||
- e2e-test-jquery-2b |
Uh oh!
There was an error while loading. Please reload this page.