1b2d6ea11b
Previously, in the `test_aio` CI job, we ran ngcc before building the app with `yarn build`. This was supposed to have the benefit of taking advantage of the parallel capabilities of standalone ngcc (vs implicitly running it via `ng build`). It turns out that the work done by the standalone ngcc was thrown away before the `ng build`, resulting in `ng build` having to run ngcc all over again. This happened because the `yarn build` script (run after the standalone ngcc step) also runs `yarn install`, which essentially cleans up `node_modules/`, thus discarding all the work already done by ngcc. Here is an [example CI job][1], where this can be seen in action: One can see the "Compiling <some-package> : es2015 as esm2015" logs in the `yarn --cwd aio ngcc --properties es2015` step (as the standalone ngcc processes the various entry-points) and then see the same logs in the `yarn --cwd aio build --progress=false` step (as ngcc has to process the entry-points all over again). This commit removes the redundant standalone ngcc run and lets the CLI handle ngcc via `ng build`. It is possible to instrument the build process in a way that we can run the standalone ngcc after `yarn install` and thus take advantage of the performance gains in parallel mode, but the latest version of the CLI can already run ngcc in parallel mode as a pre-build step, so this is unnecessary. [1]: https://circleci.com/gh/angular/angular/658691 PR Close #36145 |
||
---|---|---|
.. | ||
README.md | ||
bazel.common.rc | ||
bazel.linux.rc | ||
bazel.windows.rc | ||
config.yml | ||
env-helpers.inc.sh | ||
env.sh | ||
gcp_token | ||
github_token | ||
setup_cache.sh | ||
trigger-webhook.js | ||
windows-env.ps1 |
README.md
Encryption
Based on https://github.com/circleci/encrypted-files
In the CircleCI web UI, we have a secret variable called KEY
https://circleci.com/gh/angular/angular/edit#env-vars
which is only exposed to non-fork builds
(see "Pass secrets to builds from forked pull requests" under
https://circleci.com/gh/angular/angular/edit#advanced-settings)
We use this as a symmetric AES encryption key to encrypt tokens like a GitHub token that enables publishing snapshots.
To create the github_token file, we take this approach:
- Find the angular-builds:token in http://valentine
- Go inside the CircleCI default docker image so you use the same version of openssl as we will at runtime:
docker run --rm -it circleci/node:10.12
- echo "https://[token]:@github.com" > credentials
- openssl aes-256-cbc -e -in credentials -out .circleci/github_token -k $KEY
- If needed, base64-encode the result so you can copy-paste it out of docker:
base64 github_token