mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-24 16:16:27 +08:00
ci: introduce SauceLabs environment variables
This commit is contained in:
parent
38f5eeeebf
commit
515e67eb14
@ -46,7 +46,6 @@ executors:
|
|||||||
- image: circleci/node:<< parameters.nodeversion >>-browsers
|
- image: circleci/node:<< parameters.nodeversion >>-browsers
|
||||||
working_directory: ~/ng
|
working_directory: ~/ng
|
||||||
environment:
|
environment:
|
||||||
BASH_ENV: ~/.profile
|
|
||||||
NPM_CONFIG_PREFIX: ~/.npm-global
|
NPM_CONFIG_PREFIX: ~/.npm-global
|
||||||
resource_class: xlarge
|
resource_class: xlarge
|
||||||
|
|
||||||
@ -191,6 +190,9 @@ jobs:
|
|||||||
parallelism: 4
|
parallelism: 4
|
||||||
steps:
|
steps:
|
||||||
- attach_workspace: *attach_options
|
- attach_workspace: *attach_options
|
||||||
|
- run:
|
||||||
|
name: Initialize Environment
|
||||||
|
command: ./.circleci/env.sh
|
||||||
- run:
|
- run:
|
||||||
name: Execute CLI E2E Tests
|
name: Execute CLI E2E Tests
|
||||||
command: PATH=~/.npm-global/bin:$PATH node ./tests/legacy-cli/run_e2e --nb-shards=${CIRCLE_NODE_TOTAL} --shard=${CIRCLE_NODE_INDEX} <<# parameters.ivy >>--ivy<</ parameters.ivy >> <<# parameters.snapshots >>--ng-snapshots<</ parameters.snapshots >>
|
command: PATH=~/.npm-global/bin:$PATH node ./tests/legacy-cli/run_e2e --nb-shards=${CIRCLE_NODE_TOTAL} --shard=${CIRCLE_NODE_INDEX} <<# parameters.ivy >>--ivy<</ parameters.ivy >> <<# parameters.snapshots >>--ng-snapshots<</ parameters.snapshots >>
|
||||||
@ -202,8 +204,12 @@ jobs:
|
|||||||
parallelism: 4
|
parallelism: 4
|
||||||
steps:
|
steps:
|
||||||
- attach_workspace: *attach_options
|
- attach_workspace: *attach_options
|
||||||
# Ensure latest npm version to support local package repository
|
- run:
|
||||||
- run: PATH=~/.npm-global/bin:$PATH npm install --global npm
|
name: Initialize Environment
|
||||||
|
command: |
|
||||||
|
./.circleci/env.sh
|
||||||
|
# Ensure latest npm version to support local package repository
|
||||||
|
PATH=~/.npm-global/bin:$PATH npm install --global npm
|
||||||
- run: PATH=~/.npm-global/bin:$PATH node ./tests/legacy-cli/run_e2e --nb-shards=${CIRCLE_NODE_TOTAL} --shard=${CIRCLE_NODE_INDEX}
|
- run: PATH=~/.npm-global/bin:$PATH node ./tests/legacy-cli/run_e2e --nb-shards=${CIRCLE_NODE_TOTAL} --shard=${CIRCLE_NODE_INDEX}
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
73
.circleci/env-helpers.inc.sh
Normal file
73
.circleci/env-helpers.inc.sh
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
####################################################################################################
|
||||||
|
# Helpers for defining environment variables for CircleCI.
|
||||||
|
#
|
||||||
|
# In CircleCI, each step runs in a new shell. The way to share ENV variables across steps is to
|
||||||
|
# export them from `$BASH_ENV`, which is automatically sourced at the beginning of every step (for
|
||||||
|
# the default `bash` shell).
|
||||||
|
#
|
||||||
|
# See also https://circleci.com/docs/2.0/env-vars/#using-bash_env-to-set-environment-variables.
|
||||||
|
####################################################################################################
|
||||||
|
|
||||||
|
# Set and print an environment variable.
|
||||||
|
#
|
||||||
|
# Use this function for setting environment variables that are public, i.e. it is OK for them to be
|
||||||
|
# visible to anyone through the CI logs.
|
||||||
|
#
|
||||||
|
# Usage: `setPublicVar <name> <value>`
|
||||||
|
function setPublicVar() {
|
||||||
|
setSecretVar $1 "$2";
|
||||||
|
echo "$1=$2";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set (without printing) an environment variable.
|
||||||
|
#
|
||||||
|
# Use this function for setting environment variables that are secret, i.e. should not be visible to
|
||||||
|
# everyone through the CI logs.
|
||||||
|
#
|
||||||
|
# Usage: `setSecretVar <name> <value>`
|
||||||
|
function setSecretVar() {
|
||||||
|
# WARNING: Secrets (e.g. passwords, access tokens) should NOT be printed.
|
||||||
|
# (Keep original shell options to restore at the end.)
|
||||||
|
local -r originalShellOptions=$(set +o);
|
||||||
|
set +x -eu -o pipefail;
|
||||||
|
|
||||||
|
echo "export $1=\"${2:-}\";" >> $BASH_ENV;
|
||||||
|
|
||||||
|
# Restore original shell options.
|
||||||
|
eval "$originalShellOptions";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Create a function to set an environment variable, when called.
|
||||||
|
#
|
||||||
|
# Use this function for creating setter for public environment variables that require expensive or
|
||||||
|
# time-consuming computaions and may not be needed. When needed, you can call this function to set
|
||||||
|
# the environment variable (which will be available through `$BASH_ENV` from that point onwards).
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# - `<name>`: The name of the environment variable. The generated setter function will be
|
||||||
|
# `setPublicVar_<name>`.
|
||||||
|
# - `<code>`: The code to run to compute the value for the variable. Since this code should be
|
||||||
|
# executed lazily, it must be properly escaped. For example:
|
||||||
|
# ```sh
|
||||||
|
# # DO NOT do this:
|
||||||
|
# createPublicVarSetter MY_VAR "$(whoami)"; # `whoami` will be evaluated eagerly
|
||||||
|
#
|
||||||
|
# # DO this isntead:
|
||||||
|
# createPublicVarSetter MY_VAR "\$(whoami)"; # `whoami` will NOT be evaluated eagerly
|
||||||
|
# ```
|
||||||
|
#
|
||||||
|
# Usage: `createPublicVarSetter <name> <code>`
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# ```sh
|
||||||
|
# createPublicVarSetter MY_VAR 'echo "FOO"';
|
||||||
|
# echo $MY_VAR; # Not defined
|
||||||
|
#
|
||||||
|
# setPublicVar_MY_VAR;
|
||||||
|
# source $BASH_ENV;
|
||||||
|
# echo $MY_VAR; # FOO
|
||||||
|
# ```
|
||||||
|
function createPublicVarSetter() {
|
||||||
|
echo "setPublicVar_$1() { setPublicVar $1 \"$2\"; }" >> $BASH_ENV;
|
||||||
|
}
|
33
.circleci/env.sh
Executable file
33
.circleci/env.sh
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
readonly projectDir=$(realpath "$(dirname ${BASH_SOURCE[0]})/..")
|
||||||
|
readonly envHelpersPath="$projectDir/.circleci/env-helpers.inc.sh";
|
||||||
|
|
||||||
|
# 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";
|
||||||
|
|
||||||
|
####################################################################################################
|
||||||
|
# Define SauceLabs environment variables for CircleCI.
|
||||||
|
####################################################################################################
|
||||||
|
setPublicVar SAUCE_USERNAME "angular-ci";
|
||||||
|
setSecretVar SAUCE_ACCESS_KEY "9b988f434ff8-fbca-8aa4-4ae3-35442987";
|
||||||
|
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-${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
|
||||||
|
|
||||||
|
# Source `$BASH_ENV` to make the variables available immediately.
|
||||||
|
source $BASH_ENV;
|
Loading…
x
Reference in New Issue
Block a user