fix: don't check presence of `GERRIT_PROJECT_PREFIX`
In POSIX shell and derivatives like Bash, the `${FOO?}` parameter
expansion expands the `FOO` variable if it's defined, and triggers a
"parameter not set" error if it isn't.
We use this to sanity-check our use of the `GERRIT_PROJECT_PREFIX`
environment variable, which is expected to represent the site-specific
Gerrit project prefix ("" on production, "next/" on staging). This
environment variable is defined globally by our CloudBees bundles.
Unfortunately, Jenkins appears to skip exporting environment variables
with empty values to processes it executes (see [here][1]), which means
that this environment variable is unset on the production site.
This change works around this behaviour by removing the sanity-checks,
instead expanding to an empty variable if the variable is undefined
using the `${FOO:-}` parameter expansion.
[1]: https://community.jenkins.io/t/environment-variables-with-empty-values-are-not-passed-to-process-jenkins-exec/9949
Change-Id: I5c2fd0bec6bfcdb23024e3e02802f9842f2970f1
Signed-off-by: Chris Kay <chris.kay@arm.com>
diff --git a/rf-a-main.yaml b/rf-a-main.yaml
index 7244cb0..88a482f 100644
--- a/rf-a-main.yaml
+++ b/rf-a-main.yaml
@@ -106,7 +106,7 @@
RFA_REFSPEC=${{RFA_REFSPEC}}
GERRIT_REFSPEC=${{GERRIT_REFSPEC}}
GERRIT_BRANCH=${{GERRIT_BRANCH}}
- TF_GERRIT_PROJECT=${{GERRIT_PROJECT_PREFIX?}}TF-A/trusted-firmware-a
+ TF_GERRIT_PROJECT=${{GERRIT_PROJECT_PREFIX:-}}TF-A/trusted-firmware-a
TF_GERRIT_REFSPEC=${{TF_GERRIT_REFSPEC}}
EOF
- multijob:
diff --git a/scripts/clone.sh b/scripts/clone.sh
index b59cea1..7611fb4 100755
--- a/scripts/clone.sh
+++ b/scripts/clone.sh
@@ -22,31 +22,31 @@
export GIT_SSH_COMMAND="ssh ${SSH_PARAMS}"
# Defaults Projects
-TF_GERRIT_PROJECT="${TF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-A/trusted-firmware-a}"
-TF_M_TESTS_GERRIT_PROJECT="${TF_M_TESTS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-M/tf-m-tests}"
-TF_M_EXTRAS_GERRIT_PROJECT="${TF_M_EXTRAS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-M/tf-m-extras}"
-TFTF_GERRIT_PROJECT="${TFTF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-A/tf-a-tests}"
-SPM_GERRIT_PROJECT="${SPM_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}hafnium/hafnium}"
-RMM_GERRIT_PROJECT="${RMM_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}TF-RMM/tf-rmm}"
-CI_GERRIT_PROJECT="${CI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}ci/tf-a-ci-scripts}"
-RF_GERRIT_PROJECT="${RF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}RF-A/rusted-firmware-a}"
-ARM_FFA_GERRIT_PROJECT="${ARM_FFA_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-ffa}"
-ARM_PL011_UART_GERRIT_PROJECT="${ARM_PL011_UART_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-pl011-uart}"
-ARM_PSCI_GERRIT_PROJECT="${ARM_PSCI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-psci}"
-ARM_FVP_BASE_PAC_GERRIT_PROJECT="${ARM_FVP_BASE_PAC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-fvp-base-pac}"
-ARM_SP805_GERRIT_PROJECT="${ARM_SP805_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-sp805}"
-ARM_XLAT_GERRIT_PROJECT="${ARM_XLAT_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}rust-spmc/arm-xlat}"
-ARM_FW_DEV_GUIDE_GERRIT_PROJECT="${ARM_FW_DEV_GUIDE_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}rust-spmc/firmware-development-guide}"
-ARM_GENERIC_TIMER_GERRIT_PROJECT="${ARM_GENERIC_TIMER_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-generic-timer}"
-ARM_CCI_GERRIT_PROJECT="${ARM_CCI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-cci}"
-ARM_GIC_GERRIT_PROJECT="${ARM_GIC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-gic}"
-ARM_TZC_GERRIT_PROJECT="${ARM_TZC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-tzc}"
-ARM_PL061_GERRIT_PROJECT="${ARM_PL061_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-pl061}"
-ARM_MHU_GERRIT_PROJECT="${ARM_MHU_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-mhu}"
-ARM_SCMI_GERRIT_PROJECT="${ARM_SCMI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-scmi}"
-ARM_SYSREGS_GERRIT_PROJECT="${ARM_SYSREGS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}arm-firmware-crates/arm-sysregs}"
-TF_FIRMWARE_HANDOFF_GERRIT_PROJECT="${TF_FIRMWARE_HANDOFF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX?}shared/tf-firmware-handoff}"
-JOBS_PROJECT="${JOBS_PROJECT:-${GERRIT_PROJECT_PREFIX?}ci/tf-a-job-configs.git}"
+TF_GERRIT_PROJECT="${TF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-A/trusted-firmware-a}"
+TF_M_TESTS_GERRIT_PROJECT="${TF_M_TESTS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-M/tf-m-tests}"
+TF_M_EXTRAS_GERRIT_PROJECT="${TF_M_EXTRAS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-M/tf-m-extras}"
+TFTF_GERRIT_PROJECT="${TFTF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-A/tf-a-tests}"
+SPM_GERRIT_PROJECT="${SPM_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}hafnium/hafnium}"
+RMM_GERRIT_PROJECT="${RMM_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}TF-RMM/tf-rmm}"
+CI_GERRIT_PROJECT="${CI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}ci/tf-a-ci-scripts}"
+RF_GERRIT_PROJECT="${RF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}RF-A/rusted-firmware-a}"
+ARM_FFA_GERRIT_PROJECT="${ARM_FFA_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-ffa}"
+ARM_PL011_UART_GERRIT_PROJECT="${ARM_PL011_UART_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-pl011-uart}"
+ARM_PSCI_GERRIT_PROJECT="${ARM_PSCI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-psci}"
+ARM_FVP_BASE_PAC_GERRIT_PROJECT="${ARM_FVP_BASE_PAC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-fvp-base-pac}"
+ARM_SP805_GERRIT_PROJECT="${ARM_SP805_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-sp805}"
+ARM_XLAT_GERRIT_PROJECT="${ARM_XLAT_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}rust-spmc/arm-xlat}"
+ARM_FW_DEV_GUIDE_GERRIT_PROJECT="${ARM_FW_DEV_GUIDE_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}rust-spmc/firmware-development-guide}"
+ARM_GENERIC_TIMER_GERRIT_PROJECT="${ARM_GENERIC_TIMER_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-generic-timer}"
+ARM_CCI_GERRIT_PROJECT="${ARM_CCI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-cci}"
+ARM_GIC_GERRIT_PROJECT="${ARM_GIC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-gic}"
+ARM_TZC_GERRIT_PROJECT="${ARM_TZC_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-tzc}"
+ARM_PL061_GERRIT_PROJECT="${ARM_PL061_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-pl061}"
+ARM_MHU_GERRIT_PROJECT="${ARM_MHU_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-mhu}"
+ARM_SCMI_GERRIT_PROJECT="${ARM_SCMI_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-scmi}"
+ARM_SYSREGS_GERRIT_PROJECT="${ARM_SYSREGS_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}arm-firmware-crates/arm-sysregs}"
+TF_FIRMWARE_HANDOFF_GERRIT_PROJECT="${TF_FIRMWARE_HANDOFF_GERRIT_PROJECT:-${GERRIT_PROJECT_PREFIX}shared/tf-firmware-handoff}"
+JOBS_PROJECT="${JOBS_PROJECT:-${GERRIT_PROJECT_PREFIX}ci/tf-a-job-configs.git}"
# Default Reference specs
TF_GERRIT_REFSPEC="${TF_GERRIT_REFSPEC:-${REFSPEC_MASTER}}"
diff --git a/scripts/tf-a-lts-docs-watcher.sh b/scripts/tf-a-lts-docs-watcher.sh
index 693ebea..4ef6606 100755
--- a/scripts/tf-a-lts-docs-watcher.sh
+++ b/scripts/tf-a-lts-docs-watcher.sh
@@ -8,7 +8,7 @@
set -e
-if [ "${GERRIT_PROJECT}" == "${GERRIT_PROJECT_PREFIX?}TF-A/trusted-firmware-a" ]; then
+if [ "${GERRIT_PROJECT}" == "${GERRIT_PROJECT_PREFIX:-}TF-A/trusted-firmware-a" ]; then
# For real production project, non-sandbox run goes to production RTD project,
# while for sandbox run to a separate RTD project.
if [ "${SANDBOX_RUN}" == "false" ]; then
@@ -22,7 +22,7 @@
RTD_WEBHOOK_SECRET_KEY=${TFA_SANDBOX_RTD_WEBHOOK_SECRET}
RTD_API_TOKEN=${PFALCON_RTD_API_TOKEN}
fi
-elif [ "${GERRIT_PROJECT}" == "${GERRIT_PROJECT_PREFIX?}sandbox/pfalcon/trusted-firmware-a" ]; then
+elif [ "${GERRIT_PROJECT}" == "${GERRIT_PROJECT_PREFIX:-}sandbox/pfalcon/trusted-firmware-a" ]; then
# For test project, both "production" and "sandbox" go to the same elsewhere project.
RTD_PROJECT="pfalcon-trustedfirmware-a-sandbox"
RTD_WEBHOOK_URL="https://readthedocs.org/api/v2/webhook/pfalcon-trustedfirmware-a-sandbox/263459/"
@@ -68,7 +68,7 @@
while [ "${ver_slug}" != "${version}" ];
do
- [ ${retry} -gt ${max_retry_time} ] && break
+ [ ${retry} -gt ${max_retry_time} ] && break
sleep 30
retry=$((retry+1))
ver_slug=$(curl -s -H "Authorization: Token ${RTD_API_TOKEN}" ${RTD_VER_API}/${version}/ | \
diff --git a/tf-a-builder/feedback-trace-splitter.sh b/tf-a-builder/feedback-trace-splitter.sh
index f6a59f7..69edecd 100755
--- a/tf-a-builder/feedback-trace-splitter.sh
+++ b/tf-a-builder/feedback-trace-splitter.sh
@@ -56,14 +56,14 @@
temp_sources=$(cat <<-END
{
"type": "git",
- "URL": "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX?}TF-A/trusted-firmware-a",
+ "URL": "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX:-}TF-A/trusted-firmware-a",
"COMMIT": "",
"REFSPEC": "${TF_GERRIT_REFSPEC}",
"LOCATION": "trusted-firmware-a"
},
{
"type": "git",
- "URL": "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX?}hafnium/hafnium",
+ "URL": "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX:-}hafnium/hafnium",
"COMMIT": "",
"REFSPEC": "${SPM_REFSPEC}",
"LOCATION": "spm"
@@ -71,12 +71,12 @@
END
)
;;
- *)
+ *)
grep -w "bl1\|bl2\|bl31" elfs.txt > tf-a-elfs.txt
temp_sources=$(cat <<-END
{
"type": "git",
- "URL": "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX?}TF-A/trusted-firmware-a",
+ "URL": "https://review.trustedfirmware.org/${GERRIT_PROJECT_PREFIX:-}TF-A/trusted-firmware-a",
"COMMIT": "",
"REFSPEC": "${TF_GERRIT_REFSPEC}",
"LOCATION": "trusted-firmware-a"
diff --git a/tf-a-eclair-daily.yaml b/tf-a-eclair-daily.yaml
index 3e84871..b1d9791 100644
--- a/tf-a-eclair-daily.yaml
+++ b/tf-a-eclair-daily.yaml
@@ -77,8 +77,8 @@
set -ex
export PATH=~/.local/bin:$PATH
pwd
- git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
- git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-ci-scripts.git
+ git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
+ git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-ci-scripts.git
git clone --recurse-submodules https://${{GERRIT_HOST}}/${{GERRIT_PROJECT}} -b ${{GERRIT_REFNAME}}
ls -l
diff --git a/tf-a-eclair-delta.yaml b/tf-a-eclair-delta.yaml
index f1226b9..3b31270 100644
--- a/tf-a-eclair-delta.yaml
+++ b/tf-a-eclair-delta.yaml
@@ -98,8 +98,8 @@
export PATH=~/.local/bin:$PATH
pwd
env | grep GERRIT
- git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
- git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-ci-scripts.git
+ git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
+ git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-ci-scripts.git
git clone --recurse-submodules https://${{GERRIT_HOST}}/${{GERRIT_PROJECT}} -b ${{GERRIT_BRANCH}}
if [ -n "${{GERRIT_REFSPEC}}" ]; then
diff --git a/tf-a-lts-automation.yaml b/tf-a-lts-automation.yaml
index ec21fcd..7695dfe 100644
--- a/tf-a-lts-automation.yaml
+++ b/tf-a-lts-automation.yaml
@@ -75,7 +75,7 @@
# Triggered by hafnium-lts-automation
echo "Triggered by hafnium-lts-automation"
echo "New LTS branch created: ${{new_branch}}"
- MAIN_PROJ="${{GERRIT_PROJECT_PREFIX?}}TF-A/trusted-firmware-a"
+ MAIN_PROJ="${{GERRIT_PROJECT_PREFIX:-}}TF-A/trusted-firmware-a"
elif [ "${{GERRIT_EVENT_TYPE:-}}" = "ref-updated" -a \
"${{GERRIT_OLDREV:-}}" = "0000000000000000000000000000000000000000" ]; then
# Triggered from new LTS branch creation
@@ -86,7 +86,7 @@
fi
# Create new LTS branch to related repositories
- repos="${{MAIN_PROJ:-}} ${{GERRIT_PROJECT_PREFIX?}}TF-A/tf-a-tests ${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts ${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-job-configs"
+ repos="${{MAIN_PROJ:-}} ${{GERRIT_PROJECT_PREFIX:-}}TF-A/tf-a-tests ${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts ${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-job-configs"
for r in ${{repos}};
do
echo "Create branch \"${{new_branch}}\" from tag \"${{forked_tag}}\" in the \"${{r}}\" project"
@@ -125,7 +125,7 @@
condition-command: |
set -eux
- COUNTERPART_PROJ="${{GERRIT_PROJECT_PREFIX?}}hafnium/hafnium"
+ COUNTERPART_PROJ="${{GERRIT_PROJECT_PREFIX:-}}hafnium/hafnium"
GERRIT_HOST=${{GERRIT_HOST:-review.trustedfirmware.org}}
GERRIT_SERVER="https://${{GERRIT_HOST}}"
REF="${{GERRIT_REFNAME:-}}"
diff --git a/tf-a-lts-cleanup.yaml b/tf-a-lts-cleanup.yaml
index bf63fcd..6f1c50e 100644
--- a/tf-a-lts-cleanup.yaml
+++ b/tf-a-lts-cleanup.yaml
@@ -28,6 +28,6 @@
ssh-keyscan -p 29418 review.trustedfirmware.org >> ~/.ssh/known_hosts
export GIT_SSH_COMMAND="ssh -i $CI_BOT_KEY -o 'PubkeyAcceptedKeyTypes +ssh-rsa'"
- git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
+ git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
cd tf-a-ci-scripts/lts
./lts-cleanup-sandbox-refs.py --user $CI_BOT_USERNAME --limit 1
diff --git a/tf-a-lts-create-release.yaml b/tf-a-lts-create-release.yaml
index 61c9c57..61e70d6 100644
--- a/tf-a-lts-create-release.yaml
+++ b/tf-a-lts-create-release.yaml
@@ -46,7 +46,7 @@
set -ex
env | grep GERRIT
echo SANDBOX_RUN=$SANDBOX_RUN
- git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
+ git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
git clone https://$GERRIT_HOST/$GERRIT_PROJECT
DIR=$(basename $GERRIT_PROJECT)
cd $DIR
diff --git a/tf-a-lts-release-mail.yaml b/tf-a-lts-release-mail.yaml
index d8e6a75..261e068 100644
--- a/tf-a-lts-release-mail.yaml
+++ b/tf-a-lts-release-mail.yaml
@@ -57,7 +57,7 @@
#!/bin/bash
set -ex
- git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX?}}ci/tf-a-ci-scripts.git
+ git clone https://git.trustedfirmware.org/${{GERRIT_PROJECT_PREFIX:-}}ci/tf-a-ci-scripts.git
./tf-a-ci-scripts/lts/lts-release-mail.py --url https://${{GERRIT_HOST}}/${{GERRIT_PROJECT}} --branch "${{GERRIT_BRANCH}}" ${{RELEASE_TAG}} >email.txt
awk -F": " '/Subject:/ {{print $2}}' email.txt >subject.txt
# Remove email headers, put in a seperate file.