Update to clang@1.4.0 to gain support for optional changing and nullish coalescing. Because this would trigger a change on >1800 files in the repository, also changes our format enforcement to only be run against changed files. This will allow us to incramentally roll out the value add of the upgraded clang format. PR Close #36203
125 lines
7.5 KiB
Bash
Executable File
125 lines
7.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Variables
|
|
readonly projectDir=$(realpath "$(dirname ${BASH_SOURCE[0]})/..")
|
|
readonly envHelpersPath="$projectDir/.circleci/env-helpers.inc.sh";
|
|
readonly bashEnvCachePath="$projectDir/.circleci/bash_env_cache";
|
|
|
|
if [ -f $bashEnvCachePath ]; then
|
|
# Since a bash env cache is present, load this into the $BASH_ENV
|
|
cat "$bashEnvCachePath" >> $BASH_ENV;
|
|
echo "BASH environment loaded from cached value at $bashEnvCachePath";
|
|
else
|
|
# Since no bash env cache is present, build out $BASH_ENV values.
|
|
|
|
# Load helpers and make them available everywhere (through `$BASH_ENV`).
|
|
source $envHelpersPath;
|
|
echo "source $envHelpersPath;" >> $BASH_ENV;
|
|
|
|
|
|
####################################################################################################
|
|
# Define PUBLIC environment variables for CircleCI.
|
|
####################################################################################################
|
|
# See https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables for more info.
|
|
####################################################################################################
|
|
setPublicVar PROJECT_ROOT "$projectDir";
|
|
setPublicVar CI_AIO_MIN_PWA_SCORE "95";
|
|
# This is the branch being built; e.g. `pull/12345` for PR builds.
|
|
setPublicVar CI_BRANCH "$CIRCLE_BRANCH";
|
|
setPublicVar CI_BUILD_URL "$CIRCLE_BUILD_URL";
|
|
setPublicVar CI_COMMIT "$CIRCLE_SHA1";
|
|
# `CI_COMMIT_RANGE` is only used on push builds (a.k.a. non-PR, non-scheduled builds and rerun
|
|
# workflows of such builds).
|
|
setPublicVar CI_GIT_BASE_REVISION "${CIRCLE_GIT_BASE_REVISION}";
|
|
setPublicVar CI_GIT_REVISION "${CIRCLE_GIT_REVISION}";
|
|
setPublicVar CI_COMMIT_RANGE "$CIRCLE_GIT_BASE_REVISION..$CIRCLE_GIT_REVISION";
|
|
setPublicVar CI_PULL_REQUEST "${CIRCLE_PR_NUMBER:-false}";
|
|
setPublicVar CI_REPO_NAME "$CIRCLE_PROJECT_REPONAME";
|
|
setPublicVar CI_REPO_OWNER "$CIRCLE_PROJECT_USERNAME";
|
|
|
|
# Store a PR's refs and shas so they don't need to be requested multiple times.
|
|
setPublicVar GITHUB_REFS_AND_SHAS $(node tools/utils/get-refs-and-shas-for-target.js ${CIRCLE_PR_NUMBER:-false} | awk '{ gsub(/"/,"\\\"") } 1');
|
|
|
|
|
|
####################################################################################################
|
|
# Define "lazy" PUBLIC environment variables for CircleCI.
|
|
# (I.e. functions to set an environment variable when called.)
|
|
####################################################################################################
|
|
createPublicVarSetter CI_STABLE_BRANCH "\$(npm info @angular/core dist-tags.latest | sed -r 's/^\\s*([0-9]+\\.[0-9]+)\\.[0-9]+.*$/\\1.x/')";
|
|
|
|
|
|
####################################################################################################
|
|
# Define SECRET environment variables for CircleCI.
|
|
####################################################################################################
|
|
setSecretVar CI_SECRET_AIO_DEPLOY_FIREBASE_TOKEN "$AIO_DEPLOY_TOKEN";
|
|
setSecretVar CI_SECRET_PAYLOAD_FIREBASE_TOKEN "$ANGULAR_PAYLOAD_TOKEN";
|
|
|
|
|
|
####################################################################################################
|
|
# Define SauceLabs environment variables for CircleCI.
|
|
####################################################################################################
|
|
setPublicVar SAUCE_USERNAME "angular-framework";
|
|
setSecretVar SAUCE_ACCESS_KEY "0c731274ed5f-cbc9-16f4-021a-9835e39f";
|
|
# TODO(josephperrott): Remove environment variables once all saucelabs tests are via bazel method.
|
|
setPublicVar SAUCE_LOG_FILE /tmp/angular/sauce-connect.log
|
|
setPublicVar SAUCE_READY_FILE /tmp/angular/sauce-connect-ready-file.lock
|
|
setPublicVar SAUCE_PID_FILE /tmp/angular/sauce-connect-pid-file.lock
|
|
setPublicVar SAUCE_TUNNEL_IDENTIFIER "angular-framework-${CIRCLE_BUILD_NUM}-${CIRCLE_NODE_INDEX}"
|
|
# Amount of seconds we wait for sauceconnect to establish a tunnel instance. In order to not
|
|
# acquire CircleCI instances for too long if sauceconnect failed, we need a connect timeout.
|
|
setPublicVar SAUCE_READY_FILE_TIMEOUT 120
|
|
|
|
|
|
####################################################################################################
|
|
# Define environment variables for the `angular/components` repo unit tests job.
|
|
####################################################################################################
|
|
# We specifically use a directory within "/tmp" here because we want the cloned repo to be
|
|
# completely isolated from angular/angular in order to avoid any bad interactions between
|
|
# their separate build setups. **NOTE**: When updating the temporary directory, also update
|
|
# the `save_cache` path configuration in `config.yml`
|
|
setPublicVar COMPONENTS_REPO_TMP_DIR "/tmp/angular-components-repo"
|
|
setPublicVar COMPONENTS_REPO_URL "https://github.com/angular/components.git"
|
|
setPublicVar COMPONENTS_REPO_BRANCH "master"
|
|
# **NOTE**: When updating the commit SHA, also update the cache key in the CircleCI `config.yml`.
|
|
setPublicVar COMPONENTS_REPO_COMMIT "598db096e668aa7e9debd56eedfd127b7a55e371"
|
|
|
|
# Save the created BASH_ENV into the bash env cache file.
|
|
cat "$BASH_ENV" >> $bashEnvCachePath;
|
|
fi
|
|
|
|
|
|
####################################################################################################
|
|
# Decrypt GCP Credentials and store them as the Google default credentials.
|
|
####################################################################################################
|
|
mkdir -p "$HOME/.config/gcloud";
|
|
openssl aes-256-cbc -d -in "${projectDir}/.circleci/gcp_token" \
|
|
-md md5 -k "$CIRCLE_PROJECT_REPONAME" -out "$HOME/.config/gcloud/application_default_credentials.json"
|
|
####################################################################################################
|
|
# Set bazel configuration for CircleCI runs.
|
|
####################################################################################################
|
|
cp "${projectDir}/.circleci/bazel.linux.rc" "$HOME/.bazelrc";
|
|
|
|
####################################################################################################
|
|
# Create shell script in /tmp for Bazel actions to access CI envs without
|
|
# busting the cache. Used by payload-size.sh script in integration tests.
|
|
####################################################################################################
|
|
readonly bazelVarEnv="/tmp/bazel-ci-env.sh"
|
|
echo "# Setup by /.circle/env.sh" > $bazelVarEnv
|
|
echo "export PROJECT_ROOT=\"${PROJECT_ROOT}\";" >> $bazelVarEnv
|
|
echo "export CI_BRANCH=\"${CI_BRANCH}\";" >> $bazelVarEnv
|
|
echo "export CI_BUILD_URL=\"${CI_BUILD_URL}\";" >> $bazelVarEnv
|
|
echo "export CI_COMMIT=\"${CI_COMMIT}\";" >> $bazelVarEnv
|
|
echo "export CI_COMMIT_RANGE=\"${CI_COMMIT_RANGE}\";" >> $bazelVarEnv
|
|
echo "export CI_PULL_REQUEST=\"${CI_PULL_REQUEST}\";" >> $bazelVarEnv
|
|
echo "export CI_REPO_NAME=\"${CI_REPO_NAME}\";" >> $bazelVarEnv
|
|
echo "export CI_REPO_OWNER=\"${CI_REPO_OWNER}\";" >> $bazelVarEnv
|
|
echo "export CI_SECRET_PAYLOAD_FIREBASE_TOKEN=\"${CI_SECRET_PAYLOAD_FIREBASE_TOKEN}\";" >> $bazelVarEnv
|
|
|
|
####################################################################################################
|
|
####################################################################################################
|
|
## Source `$BASH_ENV` to make the variables available immediately. ##
|
|
## ***NOTE: This must remain the the last action in this script*** ##
|
|
####################################################################################################
|
|
####################################################################################################
|
|
source $BASH_ENV;
|