angular-docs-cn/integration/ng_update_migrations
George Kalpakas 7f0d7f4d12 build: update lockfiles for integration projects (#33968)
In the `integration_test` CircleCI job, we run `yarn install` on all
projects in the `integration/` directory. If a project has no lockfile
or if the lockfile is out-of-sync with the corresponding `package.json`
file, then the installed dependency versions are no longer pinned, which
can result in different versions being installed between different runs
of the same job (if, for example, a new version is released for a
package) and breaks hermeticity.

This could be prevented by using the `--frozen-lockfile` option with
`yarn install`, but this is not possible with the current setup, because
yarn needs to be able to install the locally built Angular packages,
whose checksums will be different from the ones in the lockfile.
Therefore, we have to manually ensure that the lockfiles remain in-sync
with the corresponding `package.json` files for the rest of the
dependencies.

For example, previously, [cli-hello-world-lazy/yarn.lock][1] had an
entry for `@angular-devkit/build-angular@0.900.0-next.9` (pinned to
`0.900.0-next.9`), but [cli-hello-world-lazy/package.json][2] specified
the `@angular-devkit/build-angular` version as `^0.900.0-rc.0` (note the
leading caret). As a result, since the version in the lock file does not
much the one in `package.json`, the lockfile is ignored and the latest
available version that matches `^0.900.0-rc.0` is installed.

This, for example, started causing unrelated CI failures ([example][3]),
when `@angular-devkit/build-angular@9.0.0-rc.3` was released with a size
improvement.

This commit ensures that all integration projects have a lockfile and
that lockfiles are up-to-date (with the current `package.json` files).

[1]: https://github.com/angular/angular/blob/fc2f6b845/integration/cli-hello-world-lazy/yarn.lock#L13
[2]: https://github.com/angular/angular/blob/fc2f6b845/integration/cli-hello-world-lazy/package.json#L26
[3]: https://circleci.com/gh/angular/angular/535959#tests/containers/2

PR Close #33968
2019-11-26 16:08:32 -08:00
..
src feat(core): missing-injectable migration should migrate empty object literal providers (#33709) 2019-11-18 15:47:20 -08:00
.gitignore build: create integration test for ng-update migrations (#32349) 2019-08-29 12:34:43 -07:00
README.md build: create integration test for ng-update migrations (#32349) 2019-08-29 12:34:43 -07:00
angular.json build: create integration test for ng-update migrations (#32349) 2019-08-29 12:34:43 -07:00
browserslist build: create integration test for ng-update migrations (#32349) 2019-08-29 12:34:43 -07:00
karma.conf.js build: create integration test for ng-update migrations (#32349) 2019-08-29 12:34:43 -07:00
package.json build: update to Angular CLI 9.0.0-rc.3 (#33955) 2019-11-21 09:17:18 -08:00
test.js build: update to Angular CLI 9.0.0-rc.3 (#33955) 2019-11-21 09:17:18 -08:00
tsconfig.app.json build: create integration test for ng-update migrations (#32349) 2019-08-29 12:34:43 -07:00
tsconfig.json build: create integration test for ng-update migrations (#32349) 2019-08-29 12:34:43 -07:00
tsconfig.spec.json build: create integration test for ng-update migrations (#32349) 2019-08-29 12:34:43 -07:00
yarn.lock build: update lockfiles for integration projects (#33968) 2019-11-26 16:08:32 -08:00

README.md

NgUpdateMigrations

This project was generated with Angular CLI version 8.0.0-beta.15.

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.