forked from jitsucom/jitsu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease-tool.sh
executable file
·108 lines (91 loc) · 4.67 KB
/
release-tool.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
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/usr/bin/env bash
function build_server() {
echo "Building Server lib JS locally.."
rm -rf server/build && rm -rf javascript/dist && rm -rf server/web/dist && \
cd javascript-sdk/ && yarn clean && yarn install --prefer-offline && yarn build && cd ../server && \
make js_release && cd ../ || { echo 'Server build failed' ; exit 1; }
}
function build_configurator() {
echo "Building Configurator UI locally.."
rm -f configurator/backend/build/dist/configurator && rm -rf configurator/frontend/build && \
cd configurator/frontend/ && yarn clean && yarn install --prefer-offline && CI=false NODE_ENV=production ANALYTICS_KEYS='{"eventnative": "js.gpon6lmpwquappfl07tuq.ka5sxhsm08cmblny72tevi"}' yarn build && \
cd ../../ || { echo 'Configurator build failed' ; exit 1; }
}
function release_server() {
echo "**** Server amd64/arm64 release [$1] ****"
docker login -u="$JITSU_DOCKER_LOGIN" -p="$JITSU_DOCKER_PASSWORD" || { echo "Docker jitsu ($JITSU_DOCKER_LOGIN) login failed" ; exit 1; }
if [[ $1 =~ $SEMVER_EXPRESSION ]]; then
docker buildx build --platform linux/amd64,linux/arm64 --push -t jitsucom/server:"$1" -t jitsucom/server:latest -f server-release.Dockerfile --build-arg dhid=jitsucom . || { echo 'Server dockerx build semver failed' ; exit 1; }
docker login -u="$KSENSE_DOCKER_LOGIN" -p="$KSENSE_DOCKER_PASSWORD" || { echo "Docker ksense login failed" ; exit 1; }
docker buildx build --platform linux/amd64 --push -t ksense/eventnative:"$1" -t ksense/eventnative:latest -f server-release.Dockerfile --build-arg dhid=ksense . || { echo 'ksense/eventnative dockerx build semver failed' ; exit 1; }
else
docker buildx build --platform linux/amd64,linux/arm64 --push -t jitsucom/server:"$1" -f server-release.Dockerfile --build-arg dhid=jitsucom . || { echo 'Server dockerx build failed' ; exit 1; }
fi
}
function release_configurator() {
echo "**** Configurator amd64/arm64 release [$1] ****"
docker login -u="$JITSU_DOCKER_LOGIN" -p="$JITSU_DOCKER_PASSWORD" || { echo 'Docker jitsu login failed' ; exit 1; }
if [[ $1 =~ $SEMVER_EXPRESSION ]]; then
docker buildx build --platform linux/amd64,linux/arm64 --push -t jitsucom/configurator:"$1" -t jitsucom/configurator:latest --build-arg dhid=jitsucom -f configurator-release.Dockerfile . || { echo 'Configurator dockerx build semver failed' ; exit 1; }
else
docker buildx build --platform linux/amd64,linux/arm64 --push -t jitsucom/configurator:"$1" --build-arg dhid=jitsucom -f configurator-release.Dockerfile . || { echo 'Configurator dockerx build failed' ; exit 1; }
fi
}
function release_jitsu() {
echo "**** Jitsu release [$1] ****"
docker login -u="$JITSU_DOCKER_LOGIN" -p="$JITSU_DOCKER_PASSWORD" || { echo 'Docker jitsu login failed' ; exit 1; }
cd docker && \
docker pull jitsucom/configurator:"$1" && \
docker pull jitsucom/configurator:latest && \
docker pull jitsucom/server:"$1" && \
docker pull jitsucom/server:latest || { echo 'Jitsu docker pull failed' ; exit 1; }
if [[ $1 =~ $SEMVER_EXPRESSION ]]; then
docker buildx build --platform linux/amd64,linux/arm64 --push -t jitsucom/jitsu:"$1" -t jitsucom/jitsu:latest --build-arg dhid=jitsu --build-arg SRC_VERSION=latest . || { echo 'Jitsu dockerx build semver failed' ; exit 1; }
else
docker buildx build --platform linux/amd64,linux/arm64 --push -t jitsucom/jitsu:"$1" --build-arg dhid=jitsu --build-arg SRC_VERSION=beta . || { echo 'Jitsu dockerx build failed' ; exit 1; }
fi
cd ../
}
SEMVER_EXPRESSION='^([0-9]+\.){0,2}(\*|[0-9]+)$'
echo "Release tool running..."
echo ""
read -r -p "What version would you like to release? ['beta' or release as semver, e. g. '1.30.1' ] " version
echo "Release version: $version"
echo "Using git reset --hard"
git reset --hard
if [[ $version =~ $SEMVER_EXPRESSION ]]; then
echo "Checkouting master ..."
git checkout master
git pull
echo "Service to release: configurator, server, jitsu"
subsystem='jitsu'
elif [[ $version == "beta" ]]; then
echo "Checkouting beta ..."
git checkout beta
git pull
read -r -p "What service would you like to release? ['server', 'configurator', 'jitsu']: " subsystem
else
echo "Invalid version: $version. Only 'beta' or certain version e.g. '1.30.1' are supported"
exit 1
fi
case $subsystem in
[s][e][r][v][e][r])
build_server
release_server $version
;;
[c][o][n][f][i][g][u][r][a][t][o][r])
build_configurator
release_configurator $version
;;
[j][i][t][s][u])
build_server
build_configurator
release_server $version
release_configurator $version
release_jitsu $version
;;
*)
echo "Invalid input service [$subsystem]..."
exit 1
;;
esac