golang.org/x/build@v0.0.0-20240506185731-218518f32b70/env/android-amd64-emu/create-vm.sh (about)

     1  #!/bin/sh
     2  # Copyright 2019 The Go Authors. All rights reserved.
     3  # Use of this source code is governed by a BSD-style
     4  # license that can be found in the LICENSE file.
     5  
     6  set -e
     7  set -x
     8  
     9  ZONE=us-central1-f
    10  DEBIAN=bullseye
    11  TARGET_IMAGE=android-amd64-emu-$DEBIAN
    12  
    13  TMP_DISK=dev-android-amd64-emu-tmpdisk
    14  TMP_IMG=dev-android-amd64-emu-image
    15  TMP_VM=dev-android-amd64-emu
    16  
    17  # Create disk, forking our vmx-enabled image
    18  gcloud compute disks delete $TMP_DISK --zone=$ZONE --quiet || true
    19  gcloud compute disks create $TMP_DISK \
    20         --zone=$ZONE \
    21         --size=40GB \
    22         --image=debian-$DEBIAN-vmx
    23  
    24  gcloud compute images delete $TMP_IMG --quiet || true
    25  gcloud compute images create \
    26         $TMP_IMG \
    27         --source-disk=$TMP_DISK \
    28         --source-disk-zone=$ZONE
    29  
    30  # No longer need that temp disk:
    31  gcloud compute disks delete $TMP_DISK --zone=$ZONE --quiet
    32  
    33  # Create the VM
    34  gcloud compute instances delete --zone=$ZONE $TMP_VM --quiet || true
    35  gcloud compute instances create \
    36         $TMP_VM \
    37         --zone=$ZONE \
    38         --image=$TMP_IMG \
    39         --min-cpu-platform "Intel Haswell" \
    40         --network default-vpc \
    41         --no-service-account --no-scopes
    42  
    43  echo "Waiting for SSH port to be available..."
    44  while ! gcloud compute ssh $TMP_VM --zone=$ZONE --tunnel-through-iap -- echo hi; do
    45      sleep 1
    46  done
    47  
    48  echo "SSH is up. Pulling docker container $CONTAINER on VM..."
    49  
    50  gcloud compute ssh $TMP_VM --zone=$ZONE --tunnel-through-iap -- sudo docker pull gcr.io/symbolic-datum-552/android-amd64-emu:latest
    51  
    52  echo "Done pulling; shutting down"
    53  
    54  # Shut it down so it's a stable source to snapshot from.
    55  gcloud compute instances stop $TMP_VM --zone=$ZONE
    56  
    57  # Now make the new image from our instance's disk.
    58  gcloud compute images delete $TARGET_IMAGE --quiet || true
    59  gcloud compute images create $TARGET_IMAGE --source-disk=$TMP_VM --source-disk-zone=$ZONE
    60  
    61  gcloud compute images delete $TMP_IMG --quiet
    62  
    63  
    64  echo "Done."