blob: edd97b53e03edd8fb958aab0d9e09dbc2da2f058 [file] [log] [blame]
#!/usr/bin/env bash
#
# Copyright (c) 2019-2020 Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
# This script is meant to be run from Jenkins to make an initial clone of the
# CI repository.
#
# - If CI_ROOT is set, we assume that a parent job has already cloned required
# repositories; so we skip further cloning. However, in order to prevent this
# job from potentially cleaning up the filer workspace (which is the
# responsibility of the parent job which did the original clone), we unset
# the FILER_WS variable in the env file.
#
# - Otherwise, we call clone_repos.sh to have all required repositories to be
# cloned.
#
# Note that, since this file resides in the repository itself, a copy of this
# file must be 'wget'. I.e., any changes to to this file must be committed first
# to the CI repository master for it to take effect!
strip_var() {
local var="$1"
local val="$(echo "${!var}" | sed 's#^\s*\|\s*$##g')"
eval "$var=$val"
}
strip_var CI_REFSPEC
if [ "$CI_ENVIRONMENT" ]; then
tmpfile="$(mktemp --tmpdir="$WORKSPACE")"
echo "$CI_ENVIRONMENT" > "$tmpfile"
set -a
source "$tmpfile"
set +a
fi
if [ "$CI_ROOT" ]; then
# We're not going to clone repos; so prevent this job from cleaning up
# filer workspace.
echo "FILER_WS=" > env
# Resetting a variable doesn't seem to work on new Jenkins instance. So
# us a different variable altogether instead.
echo "DONT_CLEAN_WS=1" >> env
exit 0
fi
# If no CI ref specs were explicitly specified, but was triggered from a CI
# Gerrit trigger, move to the Gerrit refspec instead so that we use the expected
# version of clone_repos.sh.
if [ -z "$CI_REFSPEC" ] && [ "$REPO_UNDER_TEST" = "trusted-firmware-ci" ] && \
[ "$GERRIT_REFSPEC" ]; then
CI_REFSPEC="$GERRIT_REFSPEC"
fi
# Clone CI repository and move to the refspec
git clone -q --depth 1 \
https://gerrit.oss.arm.com/pdswinf/ci/pdcs-platforms/platform-ci
if [ "$CI_REFSPEC" ]; then
# Only recent Git versions support fetching refs via. commit IDs.
# However, platform slaves have been updated to a version that can do
# this (https://jira.arm.com/browse/SSGSWINF-1426). The module load
# commands have been commented out since.
#
# source /arm/tools/setup/init/bash
# module load swdev
# module load git/git/2.14.3
pushd platform-ci &>/dev/null
git fetch -q --depth 1 origin "$CI_REFSPEC"
git checkout -q FETCH_HEAD
echo "CI repo checked out to $CI_REFSPEC"
popd &>/dev/null
fi
if ! platform-ci/trusted-fw/new-ci/script/clone_repos.sh; then
echo "clone_repos.sh failed!"
cat clone_repos.log
exit 1
fi
# vim:set tw=80 sw=8 sts=8 noet: