factorio-docker/build.sh

100 lines
3.0 KiB
Bash
Raw Normal View History

#!/bin/bash
set -eoux pipefail
2020-05-18 03:56:55 +02:00
if [[ -z ${1:-} && -n ${CI:-} ]]; then
2019-10-18 11:15:36 +02:00
echo 'Usage: ./build.sh VERSION_SHORT'
exit 1
2020-05-18 03:56:55 +02:00
elif [[ ${CI:-} == true || -n ${1:-} ]]; then
VERSION_SHORT="$1"
else
VERSION_SHORT=$(find . -maxdepth 1 -type d | sort | tail -1 | grep -o "[[0-9]].[[0-9]]*")
EXTRA_TAG=latest
fi
cd "$VERSION_SHORT" || exit 1
VERSION=$(grep -oP '[0-9]+\.[0-9]+\.[0-9]+' Dockerfile | head -1)
DOCKER_REPO=factoriotools/factorio
2019-10-18 11:37:43 +02:00
if [[ ${TRAVIS_PULL_REQUEST:-} == true ]]; then
TAGS="$DOCKER_REPO:$TRAVIS_PULL_REQUEST_SLUG"
else
2019-10-18 11:37:43 +02:00
if [[ -n ${CI:-} ]]; then
# we are either on master or on a tag build
2020-05-18 03:56:55 +02:00
if [[ ${TRAVIS_BRANCH:-} == master || ${TRAVIS_BRANCH:-} == "$VERSION" ]]; then
2019-10-18 11:56:07 +02:00
TAGS="-t $DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
2019-10-18 11:37:43 +02:00
# we are on an incremental build of a tag
elif [[ $VERSION == "${TRAVIS_BRANCH%-*}" ]]; then
2019-10-18 11:56:07 +02:00
TAGS="-t $DOCKER_REPO:$TRAVIS_BRANCH -t $DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
2020-05-18 03:56:55 +02:00
# we build a other branch than master and exclude dependabot branches from tags cause the / is not supported by docker
elif [[ -n ${TRAVIS_BRANCH:-} && $TRAVIS_BRANCH =~ "/" ]]; then
TAGS="-t $DOCKER_REPO:$TRAVIS_BRANCH"
2019-10-18 11:37:43 +02:00
fi
else
# we are not in CI and tag version and version short
2019-10-18 11:52:25 +02:00
TAGS="-t $DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
fi
2019-07-06 16:56:59 +02:00
if [[ -n ${EXTRA_TAG:-} ]]; then
IFS=","
for TAG in $EXTRA_TAG; do
2019-11-01 10:15:23 +01:00
TAGS+=" -t $DOCKER_REPO:$TAG"
done
fi
2019-11-07 00:21:39 +01:00
if [[ ${STABLE:-} == "$VERSION" ]]; then
2019-11-20 22:53:23 +01:00
TAGS+=" -t $DOCKER_REPO:stable"
2019-11-07 00:21:39 +01:00
fi
fi
2019-10-18 11:21:15 +02:00
# shellcheck disable=SC2068
2019-10-18 11:52:25 +02:00
eval docker build . ${TAGS[@]}
docker images
2020-05-18 03:04:12 +02:00
# remove -1 from incremental tag
# eg before: 0.18.24-1, after 0.18.24
2019-10-18 11:37:43 +02:00
if [[ ${TRAVIS_BRANCH:-} ]]; then
TRAVIS_BRANCH_VERSION=${TRAVIS_BRANCH%-*}
fi
# only push when:
2020-05-18 03:07:19 +02:00
# or we build a tag and we don't build a PR
2020-05-18 03:56:55 +02:00
if [[ $VERSION == "${TRAVIS_BRANCH_VERSION:-}" && ${TRAVIS_PULL_REQUEST_BRANCH:-} == "" ]] ||
2020-05-18 03:07:19 +02:00
# or we are not in CI
2019-10-18 11:37:43 +02:00
[[ -z ${CI:-} ]]; then
2019-05-18 13:40:25 +02:00
2019-10-18 11:37:43 +02:00
if [[ ${CI:-} == true ]]; then
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
fi
2020-05-18 03:56:55 +02:00
# push a tag on a branch other than master except dependabot branches cause docker does not support /
if [[ -n ${TRAVIS_BRANCH:-} && $VERSION != "${TRAVIS_BRANCH_VERSION:-}" && ${TRAVIS_BRANCH:-} != "master" && ${TRAVIS_BRANCH:-} =~ "/" ]]; then
docker push "$DOCKER_REPO:$TRAVIS_BRANCH"
fi
# push an incremental tag
2020-05-18 03:04:12 +02:00
# eg 0.18.24-1
2019-10-18 11:37:43 +02:00
if [[ $VERSION == "${TRAVIS_BRANCH_VERSION:-}" ]]; then
2020-05-18 02:43:06 +02:00
docker push "$DOCKER_REPO:$VERSION"
fi
2020-05-18 03:04:12 +02:00
# only push on tags or when manually running the script
2020-05-18 03:56:55 +02:00
if [[ -n ${TRAVIS_TAG:-} || -z ${CI:-} ]]; then
docker push "$DOCKER_REPO:$VERSION"
docker push "$DOCKER_REPO:$VERSION_SHORT"
fi
2019-07-06 16:56:59 +02:00
if [[ -n ${EXTRA_TAG:-} ]]; then
IFS=","
for TAG in $EXTRA_TAG; do
docker push "$DOCKER_REPO:$TAG"
done
fi
2019-11-07 00:21:39 +01:00
if [[ ${STABLE:-} == "$VERSION" ]]; then
docker push "$DOCKER_REPO:stable"
fi
curl -X POST https://hooks.microbadger.com/images/factoriotools/factorio/TmmKGNp8jKcFqZvcJhTCIAJVluw=
fi