blob: 610ba7941f25253e83f04d6bd302ab24169e2d99 [file] [log] [blame]
- job:
name: tf-a-lts-automation
node: build-amd64-private
project-type: freestyle
disabled: false
defaults: global
description: |
Trusted Firmware A LTS automation, this job triggered by a new LTS branch created in the trusted-firmware-a repository.
It helps to create corrosponding branch in the tf-a-test, hafnium, and tf-a-ci-scripts repositories, as well as set up a new download
space for the new LTS branch.
properties:
- build-discarder:
days-to-keep: 15
parameters:
- string:
name: EMAIL_RECIPIENT
default: |
bipin.ravi@arm.com, vwadekar@nvidia.com, yann.gautier@st.com, palmer@google.com, govindraj.raja@arm.com, arthur.she@linaro.org
description: |
The notification recipients
wrappers:
- timestamps
- timeout:
timeout: 120
fail: true
- credentials-binding:
- ssh-user-private-key:
credential-id: TFA_CI_BOT_USER_SSH_KEY
key-file-variable: CI_BOT_KEY
username-variable: CI_BOT_USERNAME
passphrase-variable: ''
triggers:
- gerrit:
silent: true
server-name: 'review.trustedfirmware.org'
projects:
- branches:
- branch-compare-type: REG_EXP
branch-pattern: 'lts-v.*'
project-compare-type: PLAIN
project-pattern: 'TF-A/trusted-firmware-a'
trigger-on:
- ref-updated-event
builders:
- shell: |
echo "***************************************"
env | grep GERRIT
echo "***************************************"
- shell: |
#!/bin/bash
set -ex
SSH_PARAMS="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o PubkeyAcceptedKeyTypes=+ssh-rsa"
export GIT_SSH_COMMAND="ssh -p 29418 -i $CI_BOT_KEY ${SSH_PARAMS}"
gerrit_host="ssh://${CI_BOT_USERNAME}@${GERRIT_HOST}:29418"
new_branch=${GERRIT_REFNAME}
forked_tag=${new_branch##*-}
_workdir=$(mktemp -d)
rm -f email.txt || true
trap '[ -d "${_workdir}" ] && rm -rf "${_workdir}"' EXIT
git -C "${_workdir}" init > /dev/null 2>&1
# Check if the job is triggered by a new LTS branch creation
new_lts_branch=-1
# Verify if the branch already exists in the Hafnium project.
git -C "${_workdir}" ls-remote --exit-code ${gerrit_host}/hafnium/hafnium ${new_branch} || new_lts_branch=1
# Check if the job is not triggered by delete branch
git -C "${_workdir}" ls-remote --exit-code ${gerrit_host}/${GERRIT_PROJECT} ${new_branch} || new_lts_branch=-1
if [ ${new_lts_branch} -eq -1 ]; then
echo "No new LTS branch created! exit job"
exit 0
fi
# Create new LTS branch to related repositories
repos="hafnium/hafnium TF-A/tf-a-tests ci/tf-a-ci-scripts ci/tf-a-job-configs"
for r in ${repos};
do
echo "Create branch \"${new_branch}\" from tag \"${forked_tag}\" in the \"${r}\" project"
git -C "${_workdir}" fetch ${gerrit_host}/${r} ${forked_tag}
git -C "${_workdir}" push ${gerrit_host}/${r} FETCH_HEAD^{commit}:refs/heads/${new_branch}
done
# Create new download space
echo "Create new download space for \"${new_branch}\""
aws s3 sync s3://trustedfirmware-prod-storage/tf-a s3://trustedfirmware-prod-storage/tf-a-${new_branch}
echo "CI Environment Setup for ${new_branch} branch Completed" > subject.txt
cat << EOF >email.txt
Hello,
The new LTS branch "${new_branch}" has been created in the following repositoris
${repos}
And the new download space is ready on ${DOWNLOAD_SERVER_URL}/tf-a-${new_branch}
Please check the job log for the details
${BUILD_URL}console
EOF
echo "--------- email body ----------"
cat email.txt
publishers:
- conditional-publisher:
- condition-kind: file-exists
on-evaluation-failure: dont-run
condition-filename: email.txt
condition-basedir: workspace
action:
- email-ext:
always: true
recipients: ${EMAIL_RECIPIENT}
subject: '${FILE,path="subject.txt"}'
body: '${FILE,path="email.txt"}'