2022-05-06 00:23:38 +02:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
|
|
trap "exit" INT
|
|
|
|
|
|
|
|
|
|
REPO=apotdevin/thunderhub
|
|
|
|
|
BASE=base
|
2026-02-19 16:16:23 -05:00
|
|
|
TEST_MODE=false
|
|
|
|
|
|
|
|
|
|
# Parse flags
|
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
|
|
|
case "$1" in
|
|
|
|
|
--test) TEST_MODE=true; shift;;
|
|
|
|
|
*) echo "Unknown option: $1"; exit 1;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [ "$TEST_MODE" = true ]; then
|
|
|
|
|
echo
|
|
|
|
|
echo "------------------------------------------"
|
|
|
|
|
echo "Test build (local, no push, no branch switch)"
|
|
|
|
|
echo "------------------------------------------"
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
docker buildx create --name mybuilder --driver-opt network=host --use 2>/dev/null || true
|
|
|
|
|
|
|
|
|
|
START=`date +%s`
|
|
|
|
|
|
|
|
|
|
docker buildx build \
|
|
|
|
|
--platform linux/amd64,linux/arm64 \
|
|
|
|
|
--tag $REPO:test \
|
|
|
|
|
--file ./Dockerfile \
|
|
|
|
|
./
|
|
|
|
|
|
|
|
|
|
END=`date +%s`
|
|
|
|
|
RUNTIME=$((END-START))
|
|
|
|
|
|
|
|
|
|
echo
|
|
|
|
|
echo "------------------------------------------"
|
|
|
|
|
echo "DONE - Test build took $RUNTIME seconds"
|
|
|
|
|
echo "------------------------------------------"
|
|
|
|
|
echo
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
2022-05-06 00:23:38 +02:00
|
|
|
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
echo "------------------------------------------"
|
|
|
|
|
echo "Building multiarch image for" $REPO
|
|
|
|
|
echo "------------------------------------------"
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
git checkout master || exit
|
|
|
|
|
git pull || exit
|
|
|
|
|
|
|
|
|
|
VERSION=$(git describe --tags --abbrev=0 2>&1)
|
|
|
|
|
|
|
|
|
|
git checkout $VERSION || exit
|
|
|
|
|
|
|
|
|
|
NOT_LATEST=false
|
|
|
|
|
|
|
|
|
|
echo "Do you want to build images for version" $VERSION "?"
|
|
|
|
|
select yn in "Yes" "No" "Specify"; do
|
|
|
|
|
case $yn in
|
|
|
|
|
Yes ) break;;
|
2026-02-19 16:16:23 -05:00
|
|
|
Specify) NOT_LATEST=true; break;;
|
2022-05-06 00:23:38 +02:00
|
|
|
No ) exit;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [ "$NOT_LATEST" = true ]; then
|
|
|
|
|
read -p "Enter the version you want to build: " VERSION
|
|
|
|
|
git checkout $VERSION || exit
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
START=`date +%s`
|
|
|
|
|
|
2026-02-19 16:16:23 -05:00
|
|
|
docker buildx create --name mybuilder --driver-opt network=host --use 2>/dev/null || true
|
2022-05-06 00:23:38 +02:00
|
|
|
|
2026-02-19 16:16:23 -05:00
|
|
|
LATEST_TAGS=""
|
|
|
|
|
if [ "$NOT_LATEST" = false ]; then
|
|
|
|
|
LATEST_TAGS="--tag $REPO:latest"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
docker buildx build \
|
|
|
|
|
--platform linux/amd64,linux/arm64 \
|
2022-05-06 00:23:38 +02:00
|
|
|
--tag $REPO:$VERSION \
|
2026-02-19 16:16:23 -05:00
|
|
|
$LATEST_TAGS \
|
2022-05-06 00:23:38 +02:00
|
|
|
--file ./Dockerfile \
|
|
|
|
|
--push ./
|
|
|
|
|
|
|
|
|
|
END=`date +%s`
|
|
|
|
|
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
echo "Building basepath multiarch image for" $REPO
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
|
2026-02-19 16:16:23 -05:00
|
|
|
docker buildx build \
|
2022-05-06 00:23:38 +02:00
|
|
|
--build-arg BASE_PATH='/thub' \
|
2026-02-19 16:16:23 -05:00
|
|
|
--platform linux/amd64,linux/arm64 \
|
2022-05-06 00:23:38 +02:00
|
|
|
--tag $REPO:$BASE-$VERSION \
|
|
|
|
|
--file ./Dockerfile \
|
|
|
|
|
--push ./
|
|
|
|
|
|
|
|
|
|
ENDBASE=`date +%s`
|
|
|
|
|
|
|
|
|
|
RUNTIME=$((END-START))
|
|
|
|
|
RUNTIME1=$((ENDBASE-END))
|
|
|
|
|
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
echo "------------------------------------------"
|
|
|
|
|
echo "DONE"
|
|
|
|
|
echo "------------------------------------------"
|
|
|
|
|
echo
|
|
|
|
|
echo
|
|
|
|
|
echo "Finished building and pushing images for" $REPO:$VERSION "and for" $REPO:$BASE-$VERSION
|
|
|
|
|
echo
|
|
|
|
|
echo "multiarch took" $RUNTIME "seconds"
|
|
|
|
|
echo "multiarch base took" $RUNTIME1 "seconds"
|
|
|
|
|
echo
|
2026-02-19 16:16:23 -05:00
|
|
|
echo
|