f6805de8eb
Currently whenever someone creates a pull request, the NPM dependencies are downloaded and installed. This is problematic because we have a lot NPM dependencies with potentially large files that would need to be downloaded (e.g. the Bazel binaries). The caches are currently not being restored because we added the `{Branch}` variable to the CircleCI cache key. Since every PR has a different branch name (e.g. `devversion/refs/heads/my-banch`), the cache keys would never match an existing cache key, and the PR would start fresh by downloading everything. We can safely remove the `{Branch}` variable from the cache key because it does not provide any value since the cached files are based on the state of the `yarn.lock` file and not based on the current branch name. This reduces our dependency on the slow and sometimes **flaky** Yarn registry. We should try to depend as few as possible on external services (e.g. see how Saucelabs flakiness can cause trouble for the caretaker; same applies to flaky Yarn installs) PR Close #28480 |
||
---|---|---|
.. | ||
README.md | ||
bazel.rc | ||
config.yml | ||
env-helpers.inc.sh | ||
env.sh | ||
gcp_token | ||
get-commit-range.js | ||
github_token | ||
setup_cache.sh | ||
trigger-webhook.js |
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