mirror of
https://github.com/avatao-content/test-tutorial-framework
synced 2024-11-14 02:57:18 +00:00
Refactor baseimage related stuff to libhack/baseimage.sh
This commit is contained in:
parent
d4f4d5b288
commit
d86f6affac
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
|
||||||
|
}
|
80
hack/tfw.sh
80
hack/tfw.sh
@ -15,88 +15,16 @@ BASEIMAGE_PATH="${TAO_PATH}/${BASEIMAGE_REPO}"
|
|||||||
TEST_PATH="${TAO_PATH}/${TEST_REPO}"
|
TEST_PATH="${TAO_PATH}/${TEST_REPO}"
|
||||||
FRONTEND_PATH="${TAO_PATH}/${FRONTEND_REPO}"
|
FRONTEND_PATH="${TAO_PATH}/${FRONTEND_REPO}"
|
||||||
|
|
||||||
BASEIMAGE_NAME="${BASEIMAGE_NAME:-eu.gcr.io/avatao-challengestore/tutorial-framework}"
|
|
||||||
IMAGE_NAME="${IMAGE_NAME:-test-tutorial-framework}"
|
IMAGE_NAME="${IMAGE_NAME:-test-tutorial-framework}"
|
||||||
TEST_PORT="${TEST_PORT:-8888}"
|
TEST_PORT="${TEST_PORT:-8888}"
|
||||||
AVATAO_SECRET="${AVATAO_SECRET:-secret}"
|
AVATAO_SECRET="${AVATAO_SECRET:-secret}"
|
||||||
BUILD_CONTEXT="${BUILD_CONTEXT:-solvable}"
|
BUILD_CONTEXT="${BUILD_CONTEXT:-solvable}"
|
||||||
|
source "${SCRIPT_DIR}/libhack/baseimage.sh"
|
||||||
|
|
||||||
build_baseimage()
|
|
||||||
{
|
|
||||||
[ ! -d "$BASEIMAGE_PATH" ] && return || :
|
|
||||||
cd $BASEIMAGE_PATH
|
|
||||||
docker build -t "${BASEIMAGE_NAME}:${TFWTAG:-$(baseimage_releasename)}" \
|
|
||||||
-t "${BASEIMAGE_NAME}:latest" \
|
|
||||||
.
|
|
||||||
}
|
|
||||||
|
|
||||||
release_baseimage()
|
|
||||||
{
|
|
||||||
[ ! -d "$BASEIMAGE_PATH" ] && return || :
|
|
||||||
cd $BASEIMAGE_PATH
|
|
||||||
check_drone_releasename
|
|
||||||
|
|
||||||
TAG="$(baseimage_releasename)"
|
|
||||||
read -p "Tag and push new TFW version \"${TAG}\"? [y/N]" -r && echo
|
|
||||||
if [[ $REPLY =~ ^(y|Y|yes|Yes|YES)$ ]]
|
|
||||||
then
|
|
||||||
description=""
|
|
||||||
prompt_for_tag_description # This command overwrites $description
|
|
||||||
TAG="$TAG" DESCRIPTION="$description" force_push_tag
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_drone_releasename()
|
|
||||||
{
|
|
||||||
DRONEYML_RELEASENAME="$(grep -oP '(?<=branch:\srefs/tags/).+(?=-.+)' .drone.yml)"
|
|
||||||
ACTUAL_RELEASENAME="$(baseimage_releasename | grep -oP ".+(?=-\d{8})")"
|
|
||||||
if [ "$DRONEYML_RELEASENAME" != "$ACTUAL_RELEASENAME" ]; then
|
|
||||||
echo "Release name '${DRONEYML_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()
|
|
||||||
{
|
|
||||||
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"
|
|
||||||
}
|
|
||||||
|
|
||||||
baseimage_releasename()
|
|
||||||
{
|
|
||||||
VERSION="$(cat VERSION | head -n 1)"
|
|
||||||
DATE="$(date +%Y%m%d)"
|
|
||||||
printf "${VERSION}-${DATE}"
|
|
||||||
}
|
|
||||||
|
|
||||||
build_test_internal()
|
build_test_internal()
|
||||||
{
|
{
|
||||||
build_baseimage
|
[[ -d "$BASEIMAGE_PATH" ]] && baseimage::build_as_latest
|
||||||
cd $TEST_PATH
|
cd $TEST_PATH
|
||||||
docker build -t $IMAGE_NAME \
|
docker build -t $IMAGE_NAME \
|
||||||
-f ${BUILD_CONTEXT}/Dockerfile \
|
-f ${BUILD_CONTEXT}/Dockerfile \
|
||||||
@ -187,7 +115,7 @@ case ${1:-} in
|
|||||||
BUILD=0 RUN_FRONTEND=0 start_test ${@:2}
|
BUILD=0 RUN_FRONTEND=0 start_test ${@:2}
|
||||||
;;
|
;;
|
||||||
buildtfw)
|
buildtfw)
|
||||||
build_baseimage
|
[[ -d "$BASEIMAGE_PATH" ]] && baseimage::build_as_latest
|
||||||
;;
|
;;
|
||||||
build)
|
build)
|
||||||
build_test
|
build_test
|
||||||
@ -196,7 +124,7 @@ case ${1:-} in
|
|||||||
build_test_withfrontend
|
build_test_withfrontend
|
||||||
;;
|
;;
|
||||||
releasetfw)
|
releasetfw)
|
||||||
release_baseimage
|
[[ -d "$BASEIMAGE_PATH" ]] && baseimage::release
|
||||||
;;
|
;;
|
||||||
builddocs)
|
builddocs)
|
||||||
build_docs
|
build_docs
|
||||||
|
Loading…
Reference in New Issue
Block a user