Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/dev/preview/ssh-vm.sh
2492 views
1
#!/usr/bin/env bash
2
#
3
# Provides SSH access to the VM where your preview environment is installed.
4
#
5
6
set -euo pipefail
7
8
PRIVATE_KEY=$HOME/.ssh/vm_ed25519
9
PUBLIC_KEY=$HOME/.ssh/vm_ed25519.pub
10
PORT=2222
11
USER="ubuntu"
12
COMMAND=""
13
BRANCH=""
14
15
while getopts c:p:u:b:v: flag
16
do
17
case "${flag}" in
18
c) COMMAND="${OPTARG}";;
19
p) PORT="${OPTARG}";;
20
u) USER="${OPTARG}";;
21
v) VM_NAME="${OPTARG}";;
22
b) BRANCH="${OPTARG}";;
23
*) ;;
24
esac
25
done
26
27
if [ -z "${VM_NAME:-}" ]; then
28
if [[ "${BRANCH}" == "" ]]; then
29
VM_NAME="$(previewctl get name)"
30
else
31
VM_NAME="$(previewctl get name --branch "$BRANCH")"
32
fi
33
fi
34
35
function set-up-ssh {
36
if [[ (! -f $PRIVATE_KEY) || (! -f $PUBLIC_KEY) ]]; then
37
echo Generate ssh-keys
38
ssh-keygen -t ed25519 -q -N "" -f "$PRIVATE_KEY"
39
fi
40
}
41
42
set-up-ssh
43
zone=$(gcloud compute instances list --project gitpod-dev-preview --format="value(zone)" preview-"$VM_NAME")
44
gcloud compute ssh "$USER@preview-$VM_NAME" \
45
--project gitpod-dev-preview \
46
--ssh-key-file "$PRIVATE_KEY" \
47
--ssh-flag="-p $PORT" \
48
--zone="$zone" \
49
-- "$COMMAND"
50
51