Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/scripts/ws-deploy.sh
2486 views
1
#!/bin/bash
2
# Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3
# Licensed under the GNU Affero General Public License (AGPL).
4
# See License.AGPL.txt in the project root for license information.
5
6
# This script builds a workspace component and updates the cluster
7
8
set -Eeuo pipefail
9
10
resource_type=$1
11
resource_name=$2
12
enable_debug=${3:-true}
13
version="dev-$(date +%F_T"%H-%M-%S")"
14
bldfn="/tmp/build-$version.tar.gz"
15
16
docker ps &> /dev/null || (echo "You need a working Docker daemon. Maybe set DOCKER_HOST?"; exit 1)
17
leeway build .:docker -Dversion="$version" -DimageRepoBase=eu.gcr.io/gitpod-dev-artifact/build --save "$bldfn" --dont-test
18
dev_image="$(tar xfO "$bldfn" ./imgnames.txt | head -n1)"
19
20
kubectl set image "$resource_type" "$resource_name" "$resource_name"="$dev_image"
21
kubectl patch "$resource_type" "$resource_name" -p '{"spec":{"containers":{"name":"'"$resource_name"'", "imagePullPolicy": "Always"}}}' --type=merge
22
kubectl rollout restart "$resource_type" "$resource_name"
23
kubectl annotate "$resource_type" "$resource_name" kubernetes.io/change-cause="$version"
24
kubectl rollout status -w "$resource_type" "$resource_name"
25
26
while kubectl get pods -l component="$resource_name" | grep -q Terminating;
27
do
28
echo "Waiting for old pods to terminate"
29
sleep 3
30
done
31
if [[ "$enable_debug" = true ]]; then
32
gpctl debug logs "$resource_name" > /dev/null
33
fi
34
35