ci: use CircleCI parameterized jobs (#32745)
Parameterized jobs lets us reduce duplication of very similar jobs. See https://circleci.com/docs/2.0/reusing-config/#authoring-parameterized-jobs for more info. PR Close #32745
This commit is contained in:
parent
296954041e
commit
fc3260d87e
@ -205,6 +205,8 @@ commands:
|
|||||||
curl --request POST --header "Content-Type: application/json" --data "$notificationJson" $SLACK_DEV_INFRA_CI_FAILURES_WEBHOOK_URL
|
curl --request POST --header "Content-Type: application/json" --data "$notificationJson" $SLACK_DEV_INFRA_CI_FAILURES_WEBHOOK_URL
|
||||||
|
|
||||||
# Job definitions
|
# 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:
|
jobs:
|
||||||
setup:
|
setup:
|
||||||
executor: action-executor
|
executor: action-executor
|
||||||
@ -384,13 +386,17 @@ jobs:
|
|||||||
- run: yarn --cwd aio deploy-production
|
- run: yarn --cwd aio deploy-production
|
||||||
|
|
||||||
test_aio_local:
|
test_aio_local:
|
||||||
|
parameters:
|
||||||
|
ivy:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
# Needed because the AIO tests and the PWA score test depend on Chrome being available.
|
# Needed because the AIO tests and the PWA score test depend on Chrome being available.
|
||||||
executor: browsers-executor
|
executor: browsers-executor
|
||||||
steps:
|
steps:
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
# Build aio (with local Angular packages)
|
# Build aio (with local Angular packages)
|
||||||
- run: yarn --cwd aio build-local-ci
|
- run: yarn --cwd aio build-local<<# parameters.ivy >>-with-ivy<</ parameters.ivy >>-ci
|
||||||
# Run unit tests
|
# Run unit tests
|
||||||
- run: yarn --cwd aio test --progress=false --watch=false
|
- run: yarn --cwd aio test --progress=false --watch=false
|
||||||
# Run e2e tests
|
# Run e2e tests
|
||||||
@ -398,24 +404,7 @@ jobs:
|
|||||||
# Run PWA-score tests
|
# Run PWA-score tests
|
||||||
- run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
|
- run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
|
||||||
# Check the bundle sizes.
|
# Check the bundle sizes.
|
||||||
- run: yarn --cwd aio payload-size aio-local
|
- run: yarn --cwd aio payload-size aio-local<<# parameters.ivy >>-ivy<</ parameters.ivy >>
|
||||||
|
|
||||||
test_aio_local_ivy:
|
|
||||||
# Needed because the AIO tests and the PWA score test depend on Chrome being available.
|
|
||||||
executor: browsers-executor
|
|
||||||
steps:
|
|
||||||
- custom_attach_workspace
|
|
||||||
- init_environment
|
|
||||||
# Build aio with Ivy (using local Angular packages)
|
|
||||||
- run: yarn --cwd aio build-with-ivy-ci
|
|
||||||
# Run unit tests
|
|
||||||
- run: yarn --cwd aio test --progress=false --watch=false
|
|
||||||
# Run e2e tests
|
|
||||||
- run: yarn --cwd aio e2e --configuration=ci
|
|
||||||
# Run PWA-score tests
|
|
||||||
- run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
|
|
||||||
# Check the bundle sizes.
|
|
||||||
- run: yarn --cwd aio payload-size aio-local-ivy
|
|
||||||
|
|
||||||
test_aio_tools:
|
test_aio_tools:
|
||||||
executor: action-executor
|
executor: action-executor
|
||||||
@ -430,45 +419,33 @@ jobs:
|
|||||||
- run: ./aio/aio-builds-setup/scripts/test.sh
|
- run: ./aio/aio-builds-setup/scripts/test.sh
|
||||||
|
|
||||||
test_docs_examples:
|
test_docs_examples:
|
||||||
|
parameters:
|
||||||
|
ivy:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
executor:
|
executor:
|
||||||
# Needed because the example e2e tests depend on Chrome.
|
# Needed because the example e2e tests depend on Chrome.
|
||||||
name: browsers-executor
|
name: browsers-executor
|
||||||
resource_class: xlarge
|
resource_class: xlarge
|
||||||
parallelism: 4
|
|
||||||
steps:
|
|
||||||
- custom_attach_workspace
|
|
||||||
- init_environment
|
|
||||||
# Install aio
|
|
||||||
- run: yarn --cwd aio install --frozen-lockfile --non-interactive
|
|
||||||
# Run examples tests. The "CIRCLE_NODE_INDEX" will be set if "parallelism" is enabled.
|
|
||||||
# Since the parallelism is set to "3", there will be three parallel CircleCI containers
|
|
||||||
# with either "0", "1" or "2" as node index. This can be passed to the "--shard" argument.
|
|
||||||
- run: yarn --cwd aio example-e2e --setup --local --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL} --retry 2
|
|
||||||
|
|
||||||
test_docs_examples_ivy:
|
|
||||||
executor:
|
|
||||||
# Needed because the example e2e tests depend on Chrome.
|
|
||||||
name: browsers-executor
|
|
||||||
resource_class: xlarge
|
|
||||||
# We increase the parallelism here to five while the "test_docs_examples" job runs with
|
|
||||||
# a parallelism of four. This is necessary because this job also need to run NGCC which
|
|
||||||
# takes up more time and we don't want these jobs to impact the overall CI turnaround.
|
|
||||||
parallelism: 5
|
parallelism: 5
|
||||||
steps:
|
steps:
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
# Install aio
|
# Install aio
|
||||||
- run: yarn --cwd aio install --frozen-lockfile --non-interactive
|
- run: yarn --cwd aio install --frozen-lockfile --non-interactive
|
||||||
|
- when:
|
||||||
|
condition: << parameters.ivy >>
|
||||||
|
steps:
|
||||||
# Rename the Ivy packages dist folder to "dist/packages-dist" as the AIO
|
# Rename the Ivy packages dist folder to "dist/packages-dist" as the AIO
|
||||||
# package installer picks up the locally built packages from that location.
|
# package installer picks up the locally built packages from that location.
|
||||||
# *Note*: We could also adjust the packages installer, but given we won't have
|
# *Note*: We could also adjust the packages installer, but given we won't have
|
||||||
# two different folders of Angular distributions in the future, we should keep
|
# two different folders of Angular distributions in the future, we should keep
|
||||||
# the packages installer unchanged.
|
# the packages installer unchanged.
|
||||||
- run: mv dist/packages-dist-ivy-aot dist/packages-dist
|
- run: mv dist/packages-dist-ivy-aot dist/packages-dist
|
||||||
# Run examples tests with ivy. The "CIRCLE_NODE_INDEX" will be set if "parallelism" is enabled.
|
# Run examples tests. The "CIRCLE_NODE_INDEX" will be set if "parallelism" is enabled.
|
||||||
# Since the parallelism is set to "3", there will be three parallel CircleCI containers
|
# Since the parallelism is set to "5", there will be five parallel CircleCI containers.
|
||||||
# with either "0", "1" or "2" as node index. This can be passed to the "--shard" argument.
|
# with either "0", "1", etc as node index. This can be passed to the "--shard" argument.
|
||||||
- run: yarn --cwd aio example-e2e --setup --local --ivy --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL} --retry 2
|
- run: yarn --cwd aio example-e2e --setup --local <<# parameters.ivy >>--ivy<</ parameters.ivy >> --cliSpecsConcurrency=5 --shard=${CIRCLE_NODE_INDEX}/${CIRCLE_NODE_TOTAL} --retry 2
|
||||||
|
|
||||||
# This job should only be run on PR builds, where `CI_PULL_REQUEST` is not `false`.
|
# This job should only be run on PR builds, where `CI_PULL_REQUEST` is not `false`.
|
||||||
aio_preview:
|
aio_preview:
|
||||||
@ -826,7 +803,9 @@ workflows:
|
|||||||
- test_aio_local:
|
- test_aio_local:
|
||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
- test_aio_local_ivy:
|
- test_aio_local:
|
||||||
|
name: test_aio_local_ivy
|
||||||
|
ivy: true
|
||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
- test_aio_tools:
|
- test_aio_tools:
|
||||||
@ -835,7 +814,9 @@ workflows:
|
|||||||
- test_docs_examples:
|
- test_docs_examples:
|
||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
- test_docs_examples_ivy:
|
- test_docs_examples:
|
||||||
|
name: test_docs_examples_ivy
|
||||||
|
ivy: true
|
||||||
requires:
|
requires:
|
||||||
- build-ivy-npm-packages
|
- build-ivy-npm-packages
|
||||||
- aio_preview:
|
- aio_preview:
|
||||||
|
@ -18,7 +18,7 @@ Here are the most important tasks you might need to use:
|
|||||||
|
|
||||||
* `yarn build` - create a production build of the application (after installing dependencies, boilerplate, etc).
|
* `yarn build` - create a production build of the application (after installing dependencies, boilerplate, etc).
|
||||||
* `yarn build-local` - same as `build`, but use `setup-local` instead of `setup`.
|
* `yarn build-local` - same as `build`, but use `setup-local` instead of `setup`.
|
||||||
* `yarn build-with-ivy` - same as `build-local`, but in addition also turns on `ivy` mode in aio.
|
* `yarn build-local-with-ivy` - same as `build-local`, but in addition also turns on `ivy` mode in aio.
|
||||||
(Note: To turn on `ivy` mode in examples, see `yarn boilerplate:add` below.)
|
(Note: To turn on `ivy` mode in examples, see `yarn boilerplate:add` below.)
|
||||||
|
|
||||||
* `yarn start` - run a development web server that watches the files; then builds the doc-viewer and reloads the page, as necessary.
|
* `yarn start` - run a development web server that watches the files; then builds the doc-viewer and reloads the page, as necessary.
|
||||||
|
@ -19,10 +19,10 @@
|
|||||||
"build-local": "yarn ~~build",
|
"build-local": "yarn ~~build",
|
||||||
"prebuild-local-ci": "yarn setup-local --no-build-packages",
|
"prebuild-local-ci": "yarn setup-local --no-build-packages",
|
||||||
"build-local-ci": "yarn ~~build --progress=false",
|
"build-local-ci": "yarn ~~build --progress=false",
|
||||||
"prebuild-with-ivy": "yarn setup-local && node scripts/switch-to-ivy",
|
"prebuild-local-with-ivy": "yarn setup-local && node scripts/switch-to-ivy",
|
||||||
"build-with-ivy": "yarn ~~build",
|
"build-local-with-ivy": "yarn ~~build",
|
||||||
"prebuild-with-ivy-ci": "yarn setup-local --no-build-packages && node scripts/switch-to-ivy",
|
"prebuild-local-with-ivy-ci": "yarn setup-local --no-build-packages && node scripts/switch-to-ivy",
|
||||||
"build-with-ivy-ci": "yarn ~~build --progress=false",
|
"build-local-with-ivy-ci": "yarn ~~build --progress=false",
|
||||||
"extract-cli-command-docs": "node tools/transforms/cli-docs-package/extract-cli-commands.js 0a36071b8",
|
"extract-cli-command-docs": "node tools/transforms/cli-docs-package/extract-cli-commands.js 0a36071b8",
|
||||||
"lint": "yarn check-env && yarn docs-lint && ng lint && yarn example-lint && yarn tools-lint",
|
"lint": "yarn check-env && yarn docs-lint && ng lint && yarn example-lint && yarn tools-lint",
|
||||||
"test": "yarn check-env && ng test",
|
"test": "yarn check-env && ng test",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user