From 65e0e215e013c070dcf377b3ccf6d8656b568c2c Mon Sep 17 00:00:00 2001 From: Thomas Schubart Date: Tue, 26 Apr 2022 20:14:44 +0000 Subject: [PATCH] Speed up edit-compile-run loop --- components/blobserve/debug.sh | 7 ++++++ components/content-service/debug.sh | 8 +++++++ components/ee/agent-smith/debug.sh | 7 ++++++ components/image-builder-mk3/debug.sh | 22 +++++-------------- components/registry-facade/debug.sh | 7 ++++++ components/ws-daemon/debug.sh | 19 +--------------- components/ws-manager/debug.sh | 8 +++++++ components/ws-proxy/debug.sh | 7 ++++++ scripts/ws-deploy.sh | 31 +++++++++++++++++++++++++++ 9 files changed, 81 insertions(+), 35 deletions(-) create mode 100755 components/blobserve/debug.sh create mode 100755 components/content-service/debug.sh create mode 100755 components/ee/agent-smith/debug.sh create mode 100755 components/registry-facade/debug.sh create mode 100755 components/ws-manager/debug.sh create mode 100755 components/ws-proxy/debug.sh create mode 100755 scripts/ws-deploy.sh diff --git a/components/blobserve/debug.sh b/components/blobserve/debug.sh new file mode 100755 index 00000000000000..2bc8ad80f897b2 --- /dev/null +++ b/components/blobserve/debug.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Copyright (c) 2022 Gitpod GmbH. All rights reserved. +# Licensed under the GNU Affero General Public License (AGPL). +# See License-AGPL.txt in the project root for license information. + +set -Eeuo pipefail +source /workspace/gitpod/scripts/ws-deploy.sh deployment blobserve diff --git a/components/content-service/debug.sh b/components/content-service/debug.sh new file mode 100755 index 00000000000000..a5c5b4b728cf02 --- /dev/null +++ b/components/content-service/debug.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Copyright (c) 2022 Gitpod GmbH. All rights reserved. +# Licensed under the GNU Affero General Public License (AGPL). +# See License-AGPL.txt in the project root for license information. + + +set -Eeuo pipefail +source /workspace/gitpod/scripts/ws-deploy.sh deployment content-service diff --git a/components/ee/agent-smith/debug.sh b/components/ee/agent-smith/debug.sh new file mode 100755 index 00000000000000..502432587978d3 --- /dev/null +++ b/components/ee/agent-smith/debug.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Copyright (c) 2022 Gitpod GmbH. All rights reserved. +# Licensed under the GNU Affero General Public License (AGPL). +# See License-AGPL.txt in the project root for license information. + +set -Eeuo pipefail +source /workspace/gitpod/scripts/ws-deploy.sh daemonset agent-smith diff --git a/components/image-builder-mk3/debug.sh b/components/image-builder-mk3/debug.sh index 37f8ab13f08131..e7b7706a0e2aa4 100755 --- a/components/image-builder-mk3/debug.sh +++ b/components/image-builder-mk3/debug.sh @@ -1,19 +1,7 @@ #!/bin/bash +# Copyright (c) 2022 Gitpod GmbH. All rights reserved. +# Licensed under the GNU Affero General Public License (AGPL). +# See License-AGPL.txt in the project root for license information. -# This script builds the image builder and replaces the current deployment with it. - -docker ps &> /dev/null || (echo "You need a working Docker daemon. Maybe set DOCKER_HOST?"; exit 1) -gcloud auth list | grep typefox &>/dev/null || (echo "Login using 'gcloud auth login' for the docker push to work"; exit 1) - - -readonly tag -tag="dev-$(date +%s)" -leeway build -v .:docker -Dversion="${tag}" -DimageRepoBase=eu.gcr.io/gitpod-core-dev/build -devImage="eu.gcr.io/gitpod-core-dev/build/image-builder-mk3:${tag}" - -kubectl patch deployment image-builder-mk3 --patch '{"spec": {"template": {"spec": {"containers": [{"name": "image-builder-mk3","imagePullPolicy":"Always","image": "'"$devImage"'"}]}}}}' -kubectl rollout restart deployment/image-builder-mk3 -kubectl rollout status -w deployment/image-builder-mk3 -# give the old pod time to disappear -sleep 20 -gpctl debug logs image-builder-mk3 \ No newline at end of file +set -Eeuo pipefail +source /workspace/gitpod/scripts/ws-deploy.sh deployment image-builder-mk3 diff --git a/components/registry-facade/debug.sh b/components/registry-facade/debug.sh new file mode 100755 index 00000000000000..0d608b583e0db3 --- /dev/null +++ b/components/registry-facade/debug.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Copyright (c) 2022 Gitpod GmbH. All rights reserved. +# Licensed under the GNU Affero General Public License (AGPL). +# See License-AGPL.txt in the project root for license information. + +set -Eeuo pipefail +source /workspace/gitpod/scripts/ws-deploy.sh daemonset registry-facade diff --git a/components/ws-daemon/debug.sh b/components/ws-daemon/debug.sh index 1ff5e114570134..79528dbdf47f56 100755 --- a/components/ws-daemon/debug.sh +++ b/components/ws-daemon/debug.sh @@ -1,21 +1,4 @@ #!/bin/bash -# ws-daemon runs as daemonset on each node which renders telepresence useless for debugging. -# This script builds ws-daemon locally, puts it in a Dockerfile, builds the image, pushes it, -# patches the daemonset and restarts all pods. -# -# This way you can test out your changes with a 30 sec turnaround. -# -# BEWARE: the properly built version of ws-daemon may behave differently. - set -Eeuo pipefail - -docker ps &> /dev/null || (echo "You need a working Docker daemon. Maybe set DOCKER_HOST?"; exit 1) - -version=dev-0 -leeway build .:docker -Dversion="$version" -DimageRepoBase=eu.gcr.io/gitpod-core-dev/dev -devImage=eu.gcr.io/gitpod-core-dev/dev/ws-daemon:"$version" - -kubectl set image daemonset ws-daemon ws-daemon="$devImage" -kubectl annotate daemonset ws-daemon kubernetes.io/change-cause="$version" -kubectl rollout restart daemonset ws-daemon +source /workspace/gitpod/scripts/ws-deploy.sh daemonset ws-daemon diff --git a/components/ws-manager/debug.sh b/components/ws-manager/debug.sh new file mode 100755 index 00000000000000..7dde2c2f18e3fc --- /dev/null +++ b/components/ws-manager/debug.sh @@ -0,0 +1,8 @@ +#!/bin/bash +# Copyright (c) 2022 Gitpod GmbH. All rights reserved. +# Licensed under the GNU Affero General Public License (AGPL). +# See License-AGPL.txt in the project root for license information. + +set -Eeuo pipefail + +source /workspace/gitpod/scripts/ws-deploy.sh deployment ws-manager diff --git a/components/ws-proxy/debug.sh b/components/ws-proxy/debug.sh new file mode 100755 index 00000000000000..051a1cb3990cc3 --- /dev/null +++ b/components/ws-proxy/debug.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Copyright (c) 2022 Gitpod GmbH. All rights reserved. +# Licensed under the GNU Affero General Public License (AGPL). +# See License-AGPL.txt in the project root for license information. + +set -Eeuo pipefail +source /workspace/gitpod/scripts/ws-deploy.sh deployment ws-proxy false diff --git a/scripts/ws-deploy.sh b/scripts/ws-deploy.sh new file mode 100755 index 00000000000000..883b76eebe7564 --- /dev/null +++ b/scripts/ws-deploy.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# Copyright (c) 2022 Gitpod GmbH. All rights reserved. +# Licensed under the GNU Affero General Public License (AGPL). +# See License-AGPL.txt in the project root for license information. + +# This script builds a workspace component and updates the cluster + +set -Eeuo pipefail + +resource_type=$1 +resource_name=$2 +enable_debug=${3:-true} +version="dev-$(date +%F_T"%H-%M-%S")" +dev_image=eu.gcr.io/gitpod-core-dev/dev/$resource_name:"$version" + +docker ps &> /dev/null || (echo "You need a working Docker daemon. Maybe set DOCKER_HOST?"; exit 1) +leeway build .:docker -Dversion="$version" -DimageRepoBase=eu.gcr.io/gitpod-core-dev/dev + +kubectl set image "$resource_type" "$resource_name" "$resource_name"="$dev_image" +kubectl rollout restart "$resource_type" "$resource_name" +kubectl annotate "$resource_type" "$resource_name" kubernetes.io/change-cause="$version" +kubectl rollout status -w "$resource_type" "$resource_name" + +while kubectl get pods -l component="$resource_name" | grep -q Terminating; +do + echo "Waiting for old pods to terminate" + sleep 3 +done +if [[ "$enable_debug" = true ]]; then + gpctl debug logs "$resource_name" > /dev/null +fi