summaryrefslogtreecommitdiffstats
path: root/src/ci/scripts/setup-environment.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/ci/scripts/setup-environment.sh')
-rwxr-xr-xsrc/ci/scripts/setup-environment.sh47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/ci/scripts/setup-environment.sh b/src/ci/scripts/setup-environment.sh
new file mode 100755
index 000000000..0bc35f932
--- /dev/null
+++ b/src/ci/scripts/setup-environment.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# This script guesses some environment variables based on the builder name and
+# the current platform, to reduce the amount of variables defined in the CI
+# configuration.
+
+set -euo pipefail
+IFS=$'\n\t'
+
+source "$(cd "$(dirname "$0")" && pwd)/../shared.sh"
+
+# Load extra environment variables
+vars="${EXTRA_VARIABLES-}"
+echo "${vars}" | jq '' >/dev/null # Validate JSON and exit on errors
+for key in $(echo "${vars}" | jq "keys[]" -r); do
+ # On Windows, for whatever reason, $key contains the BOM character in it,
+ # and that messes up `jq ".${key}"`. This line strips the BOM from the key.
+ #
+ # https://unix.stackexchange.com/a/381263
+ key="$(echo "${key}" | sed '1s/^\xEF\xBB\xBF//')"
+
+ echo "adding extra environment variable ${key}"
+ value="$(echo "${vars}" | jq ".${key}" -r)"
+ export "${key}"="${value}"
+ ciCommandSetEnv "${key}" "${value}"
+done
+
+# Builders starting with `dist-` are dist builders, but if they also end with
+# `-alt` they are alternate dist builders.
+if [[ "${CI_JOB_NAME}" = dist-* ]]; then
+ if [[ "${CI_JOB_NAME}" = *-alt ]]; then
+ echo "alternate dist builder detected, setting DEPLOY_ALT=1"
+ ciCommandSetEnv DEPLOY_ALT 1
+ else
+ echo "normal dist builder detected, setting DEPLOY=1"
+ ciCommandSetEnv DEPLOY 1
+ fi
+fi
+
+# All the Linux builds happen inside Docker.
+if isLinux; then
+ if [[ -z "${IMAGE+x}" ]]; then
+ echo "linux builder detected, using docker to run the build"
+ ciCommandSetEnv IMAGE "${CI_JOB_NAME}"
+ else
+ echo "a custom docker image is already set"
+ fi
+fi