mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-19 07:14:22 +01:00
There's no need to pass repo_root_dir to get_last_modification() as the variable used everywhere is exported from that very same file. Fixes: #6431 Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@intel.com>
132 lines
2.9 KiB
Bash
132 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2018-2020 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
export GOPATH=${GOPATH:-${HOME}/go}
|
|
export tests_repo="${tests_repo:-github.com/kata-containers/tests}"
|
|
export tests_repo_dir="$GOPATH/src/$tests_repo"
|
|
export BUILDER_REGISTRY="quay.io/kata-containers/builders"
|
|
export PUSH_TO_REGISTRY="${PUSH_TO_REGISTRY:-"no"}"
|
|
|
|
this_script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
export repo_root_dir="$(cd "${this_script_dir}/../../../" && pwd)"
|
|
|
|
short_commit_length=10
|
|
|
|
hub_bin="hub-bin"
|
|
|
|
clone_tests_repo() {
|
|
# KATA_CI_NO_NETWORK is (has to be) ignored if there is
|
|
# no existing clone.
|
|
if [ -d "${tests_repo_dir}" ] && [ -n "${KATA_CI_NO_NETWORK:-}" ]; then
|
|
return
|
|
fi
|
|
|
|
go get -d -u "$tests_repo" || true
|
|
}
|
|
|
|
install_yq() {
|
|
clone_tests_repo
|
|
pushd "$tests_repo_dir"
|
|
.ci/install_yq.sh
|
|
popd
|
|
}
|
|
|
|
get_from_kata_deps() {
|
|
local dependency="$1"
|
|
versions_file="${this_script_dir}/../../../versions.yaml"
|
|
|
|
command -v yq &>/dev/null || die 'yq command is not in your $PATH'
|
|
result=$("yq" read -X "$versions_file" "$dependency")
|
|
[ "$result" = "null" ] && result=""
|
|
echo "$result"
|
|
}
|
|
|
|
die() {
|
|
echo >&2 "ERROR: $*"
|
|
exit 1
|
|
}
|
|
|
|
info() {
|
|
echo >&2 "INFO: $*"
|
|
}
|
|
|
|
get_repo_hash() {
|
|
local repo_dir=${1:-}
|
|
[ -d "${repo_dir}" ] || die "${repo_dir} is not a directory"
|
|
pushd "${repo_dir}" >>/dev/null
|
|
git rev-parse --verify HEAD
|
|
popd >>/dev/null
|
|
}
|
|
|
|
build_hub() {
|
|
info "Get hub"
|
|
|
|
if cmd=$(command -v hub); then
|
|
hub_bin="${cmd}"
|
|
return
|
|
else
|
|
hub_bin="${tmp_dir:-/tmp}/hub-bin"
|
|
fi
|
|
|
|
local hub_repo="github.com/github/hub"
|
|
local hub_repo_dir="${GOPATH}/src/${hub_repo}"
|
|
[ -d "${hub_repo_dir}" ] || git clone --quiet --depth 1 "https://${hub_repo}.git" "${hub_repo_dir}"
|
|
pushd "${hub_repo_dir}" >>/dev/null
|
|
git checkout master
|
|
git pull
|
|
./script/build -o "${hub_bin}"
|
|
popd >>/dev/null
|
|
}
|
|
|
|
arch_to_golang()
|
|
{
|
|
local -r arch="$1"
|
|
|
|
case "$arch" in
|
|
aarch64) echo "arm64";;
|
|
ppc64le) echo "$arch";;
|
|
x86_64) echo "amd64";;
|
|
s390x) echo "s390x";;
|
|
*) die "unsupported architecture: $arch";;
|
|
esac
|
|
}
|
|
|
|
get_kata_hash() {
|
|
repo=$1
|
|
ref=$2
|
|
git ls-remote --heads --tags "https://github.com/${project}/${repo}.git" | grep "${ref}" | awk '{print $1}'
|
|
}
|
|
|
|
# $1 - The file we're looking for the last modification
|
|
get_last_modification() {
|
|
local file="${1}"
|
|
|
|
# This is a workaround needed for when running this code on Jenkins
|
|
git config --global --add safe.directory ${repo_root_dir} &> /dev/null
|
|
|
|
dirty=""
|
|
[ $(git status --porcelain | grep "${file#${repo_root_dir}/}" | wc -l) -gt 0 ] && dirty="-dirty"
|
|
|
|
echo "$(git log -1 --pretty=format:"%H" ${file})${dirty}"
|
|
}
|
|
|
|
# $1 - The tag to be pushed to the registry
|
|
# $2 - "yes" to use sudo, "no" otherwise
|
|
push_to_registry() {
|
|
local tag="${1}"
|
|
local use_sudo="${2:-"yes"}"
|
|
|
|
if [ "${PUSH_TO_REGISTRY}" == "yes" ]; then
|
|
if [ "${use_sudo}" == "yes" ]; then
|
|
sudo docker push ${tag}
|
|
else
|
|
docker push ${tag}
|
|
fi
|
|
fi
|
|
}
|