mirror of
https://github.com/avatao-content/test-tutorial-framework
synced 2025-06-28 10:35:12 +00:00
Refactor baseimage related stuff to libhack/baseimage.sh
This commit is contained in:
91
hack/libhack/baseimage.sh
Normal file
91
hack/libhack/baseimage.sh
Normal file
@ -0,0 +1,91 @@
|
||||
# Requires context:
|
||||
# - BASEIMAGE_PATH: absolute path of baseimage repo
|
||||
|
||||
BASEIMAGE_NAME="${BASEIMAGE_NAME:-eu.gcr.io/avatao-challengestore/tutorial-framework}"
|
||||
libhack_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
|
||||
source "${libhack_dir}/common.sh"
|
||||
|
||||
|
||||
baseimage::build_as_latest() {
|
||||
pushd "${BASEIMAGE_PATH}"
|
||||
baseimage::build
|
||||
baseimage::tag_as_latest
|
||||
popd
|
||||
}
|
||||
|
||||
baseimage::build() {
|
||||
pushd "${BASEIMAGE_PATH}"
|
||||
docker build -t "${BASEIMAGE_NAME}:$(releasename)" \
|
||||
.
|
||||
popd
|
||||
}
|
||||
|
||||
baseimage::tag_as_latest() {
|
||||
docker tag "${BASEIMAGE_NAME}:$(releasename)" "${BASEIMAGE_NAME}:latest"
|
||||
}
|
||||
|
||||
baseimage::release() {
|
||||
pushd "${BASEIMAGE_PATH}"
|
||||
check_drone_releasename
|
||||
|
||||
local tag
|
||||
tag="$(releasename)"
|
||||
read -p "Tag and push new TFW version \"${tag}\"? [y/N]" -r && echo
|
||||
if [[ $REPLY =~ ^(y|Y|yes|Yes|YES)$ ]]
|
||||
then
|
||||
prompt_for_tag_description # This command sets $description
|
||||
tag="${tag}" description="${description}" force_push_tag
|
||||
fi
|
||||
popd
|
||||
}
|
||||
|
||||
releasename() {
|
||||
local version
|
||||
local date
|
||||
version="$(cat VERSION | head -n 1)"
|
||||
date="$(date +%Y%m%d)"
|
||||
printf "${version}-${date}"
|
||||
}
|
||||
|
||||
check_drone_releasename() {
|
||||
local drone_releasename
|
||||
local actual_releasename
|
||||
drone_releasename="$(grep -oP '(?<=branch:\srefs/tags/).+(?=-.+)' .drone.yml)"
|
||||
actual_releasename="$(baseimage_releasename | grep -oP ".+(?=-\d{8})")"
|
||||
if [ "${drone_releasename}" != "${actual_releasename}" ]; then
|
||||
echo "Release name '${drone_releasename}' in .drone.yml does not match \
|
||||
actual release name '${actual_releasename}' in VERSION."
|
||||
echo "Please make them match before releasing!"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
prompt_for_tag_description() {
|
||||
local editor
|
||||
local tempfile
|
||||
editor="$(git config --global core.editor)"
|
||||
tempfile="$(mktemp)"
|
||||
|
||||
printf "\n\n" >> "${tempfile}"
|
||||
echo "# Please enter the description for this release." >> "${tempfile}"
|
||||
echo "# Lines starting with '#' will be ignored." >> "${tempfile}"
|
||||
echo "# An empty description aborts the release." >> "${tempfile}"
|
||||
|
||||
${editor} "${tempfile}"
|
||||
sed -i -e 's/#.*$//' -e '/^$/d' "${tempfile}"
|
||||
sed -i 's/\n/ /g' "${tempfile}"
|
||||
if [[ ! -s "${tempfile}" ]]; then
|
||||
echo "Aborting release due to empty description."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
description="$(tr '\n' ' ' < "${tempfile}")"
|
||||
rm "${tempfile}"
|
||||
}
|
||||
|
||||
force_push_tag() {
|
||||
git tag -d "${tag}" > /dev/null 2>&1 || :
|
||||
git push --delete origin "${tag}" > /dev/null 2>&1 || :
|
||||
git tag -s -m "${description}" "${tag}"
|
||||
git push origin "${tag}"
|
||||
}
|
7
hack/libhack/common.sh
Normal file
7
hack/libhack/common.sh
Normal file
@ -0,0 +1,7 @@
|
||||
pushd() {
|
||||
command pushd "$@" > /dev/null
|
||||
}
|
||||
|
||||
popd() {
|
||||
command popd "$@" > /dev/null
|
||||
}
|
Reference in New Issue
Block a user