summaryrefslogtreecommitdiffstats
path: root/server/build_and_push.sh
blob: dd889167caaaee1124a05eec412e317c767e4775 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/env bash

set -Eueo pipefail

CURRENT_DEV_VERSION=$(cat .version-dev)
CURRENT_DEV_VERSION_INT=${CURRENT_DEV_VERSION//[!0-9]/}
CURRENT_VERSION=$(cat .version)
CURRENT_VERSION_INT=${CURRENT_VERSION//[!0-9]/}
if [ ${1-prod} == "dev" ]; then
     NEW_VERSION="v$((CURRENT_DEV_VERSION_INT+1))-server-dev"
     OLD_VERSION=$CURRENT_DEV_VERSION
else
     NEW_VERSION="v$((CURRENT_VERSION_INT+1))-server"
     OLD_VERSION=$CURRENT_VERSION
fi
IMAGE_NAME="greatoffice/server"
HUB_NAME="dr.ivar.systems/greatoffice/server"

# Check for uncommited changes and optionally commit them
if [ "$(git status --untracked-files=no --porcelain)" ]; then
  echo "Unclean git tree! press CTRL+C to exit or press ENTER to commit and push to the default branch"
  read -n 1

  read -p "Enter commit message: " COMMIT_MESSAGE
  git add ..
  git commit --quiet -m "$COMMIT_MESSAGE"
fi

if [ ${1-prod} == "dev" ]; then
    echo $NEW_VERSION >| .version-dev
    git add .version-dev
else
    echo $NEW_VERSION >| .version
    git add .version
fi

echo "Starting build of $HUB_NAME:$NEW_VERSION at $(date -u)..."
echo

# Put version.txt inside of server
pushd src/wwwroot
echo "$NEW_VERSION" >version.txt
git add version.txt
popd

git commit --quiet -m "chore(release): Bump version";


read -p "Do you want to tag this build? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
then
    read -p "Enter tag message (can be empty): " TAG_MESSAGE
    git tag -am "$TAG_MESSAGE" $NEW_VERSION
fi

read -p "Do you want to push the latest commits and tags to origin? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
then
    echo "Pushing latest changes to remotes..."
    echo
    git push --quiet --follow-tags
fi


# Build docker image
echo "Building docker image"
echo

docker buildx build --platform linux/amd64 -t $IMAGE_NAME:$NEW_VERSION .

docker tag $IMAGE_NAME:$NEW_VERSION $HUB_NAME:$NEW_VERSION

if [ ${1-prod} == "dev" ]; then
    docker tag $IMAGE_NAME:$NEW_VERSION $HUB_NAME:latest-dev
fi
if [ ${1-prod} == "prod" ]; then
    docker tag $IMAGE_NAME:$NEW_VERSION $HUB_NAME:latest
fi

# Optionally push images to docker registry
echo "Press CTRL+C to exit or press ENTER to push docker image to registry"
read -n 1
docker push $HUB_NAME:$NEW_VERSION

if [ ${1-prod} == "dev" ]; then
    docker push $HUB_NAME:latest-dev
fi

if [ ${1-prod} == "prod" ]; then
    docker push $HUB_NAME:latest
fi