mirror of https://github.com/tidwall/tile38.git
56 lines
1.7 KiB
Bash
Executable File
56 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
cd $(dirname "${BASH_SOURCE[0]}")/..
|
|
|
|
# GIT_BRANCH is the current branch name
|
|
export GIT_BRANCH=$(git branch --show-current)
|
|
# GIT_VERSION - always the last verison number, like 1.12.1.
|
|
export GIT_VERSION=$(git describe --tags --abbrev=0)
|
|
# GIT_COMMIT_SHORT - the short git commit number, like a718ef0.
|
|
export GIT_COMMIT_SHORT=$(git rev-parse --short HEAD)
|
|
# DOCKER_REPO - the base repository name to push the docker build to.
|
|
export DOCKER_REPO=$DOCKER_USER/tile38
|
|
|
|
if [ "$GIT_BRANCH" != "master" ]; then
|
|
echo "Not pushing, not on master"
|
|
elif [ "$DOCKER_USER" == "" ]; then
|
|
echo "Not pushing, DOCKER_USER not set"
|
|
exit 1
|
|
elif [ "$DOCKER_LOGIN" == "" ]; then
|
|
echo "Not pushing, DOCKER_LOGIN not set"
|
|
exit 1
|
|
elif [ "$DOCKER_PASSWORD" == "" ]; then
|
|
echo "Not pushing, DOCKER_PASSWORD not set"
|
|
exit 1
|
|
else
|
|
# setup cross platform builder
|
|
# https://github.com/tonistiigi/binfmt
|
|
docker run --privileged --rm tonistiigi/binfmt --install all
|
|
docker buildx create --name multiarch --platform linux/amd64,linux/amd64/v2,linux/amd64/v3,linux/arm64,linux/386,linux/arm/v7 --use default
|
|
|
|
# docker login
|
|
echo $DOCKER_PASSWORD | docker login -u $DOCKER_LOGIN --password-stdin
|
|
if [ "$(curl -s https://hub.docker.com/v2/repositories/$DOCKER_REPO/tags/$GIT_VERSION/ | grep "digest")" == "" ]; then
|
|
# build the docker image
|
|
docker buildx build \
|
|
-f Dockerfile \
|
|
--platform linux/arm64,linux/amd64 \
|
|
--build-arg VERSION=$GIT_VERSION \
|
|
--tag $DOCKER_REPO:$GIT_VERSION \
|
|
--tag $DOCKER_REPO:latest \
|
|
--tag $DOCKER_REPO:edge \
|
|
--push \
|
|
.
|
|
else
|
|
# build the docker image
|
|
docker buildx build \
|
|
-f Dockerfile \
|
|
--platform linux/arm64,linux/amd64 \
|
|
--build-arg VERSION=$GIT_VERSION \
|
|
--tag $DOCKER_REPO:edge \
|
|
--push \
|
|
.
|
|
fi
|
|
fi
|