-
Notifications
You must be signed in to change notification settings - Fork 111
/
Copy pathrebuild.sh
59 lines (52 loc) · 1.59 KB
/
rebuild.sh
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
#!/bin/bash
#
# Rebuild and publish all docker images.
# Use the --dry-run argument to prevent the actual build process from running.
#
# Note: This script should not be triggered manually. Only run it in CI.
#
# Required env variables:
#
# - `DOCKER_USER`
# - `DOCKER_API_KEY`
set -euo pipefail
SUPPORTED_BRANCH_NAMES=("master")
SUPPORTED_TAG_PATTERNS=("^v2.[5-6].[0-9]$")
IMAGE_NAME=threema/threema-web
if [ "${1:-}" = "--dry-run" ]; then
echo -e "Dry run\n"
DOCKER='echo > docker'
else
DOCKER="docker"
fi
echo "Logging in..."
$DOCKER login -u $DOCKER_USER -p $DOCKER_API_KEY
echo "Create temporary directory..."
mkdir -p builds
echo -e "\nBuilding branches:"
for branch in "${SUPPORTED_BRANCH_NAMES[@]}"; do
echo -e "\n- $branch"
git clone -b $branch . "builds/$branch"
cd "builds/$branch"
$DOCKER build . --no-cache -t $IMAGE_NAME:$branch
$DOCKER push $IMAGE_NAME:$branch
cd ../..
rm -rf "builds/$branch"
done
echo -e "\nBuilding tags:"
for pattern in "${SUPPORTED_TAG_PATTERNS[@]}"; do
for tag in $(git tag | grep $pattern); do
echo -e "\n- $tag"
git clone -b $tag . "builds/$tag"
cd "builds/$tag"
maintag=$tag
minortag=$(echo $tag | sed 's/^\(v[0-9]*\.[0-9]*\)\..*$/\1/')
majortag=$(echo $tag | sed 's/^\(v[0-9]*\)\..*$/\1/')
$DOCKER build . --no-cache -t $IMAGE_NAME:$tag -t $IMAGE_NAME:$minortag -t $IMAGE_NAME:$majortag
$DOCKER push "$IMAGE_NAME:$maintag"
$DOCKER push "$IMAGE_NAME:$minortag"
$DOCKER push "$IMAGE_NAME:$majortag"
cd ../..
rm -rf "builds/$tag"
done
done