@@ -8,130 +8,132 @@ substitutions:
88
99
1010steps :
11- # Step 0: Generate a persistent SSH key for this build run.
12- # This prevents gcloud from adding a new key to the OS Login profile on every ssh/scp command.
13- - name : " gcr.io/google.com/cloudsdktool/cloud-sdk"
14- id : " generate-ssh-key"
15- entrypoint : " bash"
16- args :
17- - " -c"
18- - |
19- mkdir -p /workspace/.ssh
20- # Generate the SSH key
21- ssh-keygen -t rsa -f /workspace/.ssh/google_compute_engine -N '' -C gcb
22- # Save the public key content to a file for the cleanup step
23- cat /workspace/.ssh/google_compute_engine.pub > /workspace/gcb_ssh_key.pub
24- waitFor : ["-"]
25-
26- - name : " gcr.io/google.com/cloudsdktool/cloud-sdk"
27- id : " cleanup-old-keys"
28- entrypoint : " bash"
29- args :
30- - " -c"
31- - |
32- #!/bin/bash
33- set -e
34-
35- echo "Fetching OS Login SSH keys..."
36- echo "Removing all keys."
37- echo "---------------------------------------------------------------------"
38-
39- FINGERPRINTS_TO_DELETE=$$(gcloud compute os-login ssh-keys list \
40- --format="value(fingerprint)")
41-
42- echo "Keys to delete: $$FINGERPRINTS_TO_DELETE"
43-
44- if [ -z "$$FINGERPRINTS_TO_DELETE" ]; then
45- echo "No keys found to delete. Nothing to do."
46- exit 0
47- fi
48-
49- while IFS= read -r FINGERPRINT; do
50- if [ -n "$$FINGERPRINT" ]; then
51- echo "Deleting key with fingerprint: $$FINGERPRINT"
52- gcloud compute os-login ssh-keys remove \
53- --key="$$FINGERPRINT" \
54- --quiet || true
55- fi
56- done <<< "$$FINGERPRINTS_TO_DELETE"
57-
58- echo "---------------------------------------------------------------------"
59- echo "Cleanup complete."
60-
61- # Step 1 Create a GCE VM to run the tests.
62- # The VM is created in the same zone as the buckets to test rapid storage features.
63- # It's given the 'cloud-platform' scope to allow it to access GCS and other services.
64- - name : " gcr.io/google.com/cloudsdktool/cloud-sdk"
65- id : " create-vm"
66- entrypoint : " gcloud"
67- args :
68- - " compute"
69- - " instances"
70- - " create"
71- - " ${_VM_NAME}"
72- - " --project=${PROJECT_ID}"
73- - " --zone=${_ZONE}"
74- - " --machine-type=e2-medium"
75- - " --image-family=debian-13"
76- - " --image-project=debian-cloud"
77- - " --service-account=${_ZONAL_VM_SERVICE_ACCOUNT}"
78- - " --scopes=https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/devstorage.read_write,https://www.googleapis.com/auth/cloudkms"
79- - " --metadata=enable-oslogin=TRUE"
80- waitFor : ["-"]
81-
82- # Step 2: Run the integration tests inside the newly created VM and cleanup.
83- # This step uses 'gcloud compute ssh' to execute a remote script.
84- # The VM is deleted after tests are run, regardless of success.
85- - name : " gcr.io/google.com/cloudsdktool/cloud-sdk"
86- id : " run-tests-and-delete-vm"
87- entrypoint : " bash"
88- args :
89- - " -c"
90- - |
91- set -e
92- # Wait for the VM to be fully initialized and SSH to be ready.
93- for i in {1..10}; do
94- if gcloud compute ssh ${_VM_NAME} --zone=${_ZONE} --internal-ip --ssh-key-file=/workspace/.ssh/google_compute_engine --command="echo VM is ready"; then
95- break
96- fi
97- echo "Waiting for VM to become available... (attempt $i/10)"
98- sleep 15
99- done
100- # copy the script to the VM
101- gcloud compute scp packages/google-cloud-storage/cloudbuild/run_zonal_tests.sh ${_VM_NAME}:~ --zone=${_ZONE} --internal-ip --ssh-key-file=/workspace/.ssh/google_compute_engine
102-
103- # Execute the script on the VM via SSH.
104- # Capture the exit code to ensure cleanup happens before the build fails.
105- set +e
106- gcloud compute ssh ${_VM_NAME} --zone=${_ZONE} --internal-ip --ssh-key-file=/workspace/.ssh/google_compute_engine --command="ulimit -n ${_ULIMIT}; COMMIT_SHA=${COMMIT_SHA} _ZONAL_BUCKET=${_ZONAL_BUCKET} CROSS_REGION_BUCKET=${_CROSS_REGION_BUCKET} _PR_NUMBER=${_PR_NUMBER} bash run_zonal_tests.sh"
107- EXIT_CODE=$?
108- set -e
109-
110- echo "--- Deleting GCE VM ---"
111- gcloud compute instances delete "${_VM_NAME}" --zone=${_ZONE} --quiet
112-
113- # Exit with the original exit code from the test script.
114- exit $$EXIT_CODE
115- waitFor :
116- - " create-vm"
117- - " generate-ssh-key"
118- - " cleanup-old-keys"
119-
120- - name : " gcr.io/google.com/cloudsdktool/cloud-sdk"
121- id : " cleanup-ssh-key"
122- entrypoint : " bash"
123- args :
124- - " -c"
125- - |
126- echo "--- Removing SSH key from OS Login profile to prevent accumulation ---"
127- gcloud compute os-login ssh-keys remove \
128- --key-file=/workspace/gcb_ssh_key.pub || true
129- waitFor :
130- - " run-tests-and-delete-vm"
131-
132- timeout : " 3600s" # 60 minutes
133-
134- options :
135- logging : CLOUD_LOGGING_ONLY
136- pool :
137- name : " projects/${PROJECT_ID}/locations/us-central1/workerPools/cloud-build-worker-pool"
11+ - name : ' bash'
12+ args : ['echo', 'This job is currently disabled. See https://github.com/googleapis/google-cloud-python/issues/16487. Skipping tests...']
13+ # # Step 0: Generate a persistent SSH key for this build run.
14+ # # This prevents gcloud from adding a new key to the OS Login profile on every ssh/scp command.
15+ # - name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
16+ # id: "generate-ssh-key"
17+ # entrypoint: "bash"
18+ # args:
19+ # - "-c"
20+ # - |
21+ # mkdir -p /workspace/.ssh
22+ # # Generate the SSH key
23+ # ssh-keygen -t rsa -f /workspace/.ssh/google_compute_engine -N '' -C gcb
24+ # # Save the public key content to a file for the cleanup step
25+ # cat /workspace/.ssh/google_compute_engine.pub > /workspace/gcb_ssh_key.pub
26+ # waitFor: ["-"]
27+
28+ # - name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
29+ # id: "cleanup-old-keys"
30+ # entrypoint: "bash"
31+ # args:
32+ # - "-c"
33+ # - |
34+ # #!/bin/bash
35+ # set -e
36+
37+ # echo "Fetching OS Login SSH keys..."
38+ # echo "Removing all keys."
39+ # echo "---------------------------------------------------------------------"
40+
41+ # FINGERPRINTS_TO_DELETE=$$(gcloud compute os-login ssh-keys list \
42+ # --format="value(fingerprint)")
43+
44+ # echo "Keys to delete: $$FINGERPRINTS_TO_DELETE"
45+
46+ # if [ -z "$$FINGERPRINTS_TO_DELETE" ]; then
47+ # echo "No keys found to delete. Nothing to do."
48+ # exit 0
49+ # fi
50+
51+ # while IFS= read -r FINGERPRINT; do
52+ # if [ -n "$$FINGERPRINT" ]; then
53+ # echo "Deleting key with fingerprint: $$FINGERPRINT"
54+ # gcloud compute os-login ssh-keys remove \
55+ # --key="$$FINGERPRINT" \
56+ # --quiet || true
57+ # fi
58+ # done <<< "$$FINGERPRINTS_TO_DELETE"
59+
60+ # echo "---------------------------------------------------------------------"
61+ # echo "Cleanup complete."
62+
63+ # # Step 1 Create a GCE VM to run the tests.
64+ # # The VM is created in the same zone as the buckets to test rapid storage features.
65+ # # It's given the 'cloud-platform' scope to allow it to access GCS and other services.
66+ # - name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
67+ # id: "create-vm"
68+ # entrypoint: "gcloud"
69+ # args:
70+ # - "compute"
71+ # - "instances"
72+ # - "create"
73+ # - "${_VM_NAME}"
74+ # - "--project=${PROJECT_ID}"
75+ # - "--zone=${_ZONE}"
76+ # - "--machine-type=e2-medium"
77+ # - "--image-family=debian-13"
78+ # - "--image-project=debian-cloud"
79+ # - "--service-account=${_ZONAL_VM_SERVICE_ACCOUNT}"
80+ # - "--scopes=https://www.googleapis.com/auth/devstorage.full_control,https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/devstorage.read_write,https://www.googleapis.com/auth/cloudkms"
81+ # - "--metadata=enable-oslogin=TRUE"
82+ # waitFor: ["-"]
83+
84+ # # Step 2: Run the integration tests inside the newly created VM and cleanup.
85+ # # This step uses 'gcloud compute ssh' to execute a remote script.
86+ # # The VM is deleted after tests are run, regardless of success.
87+ # - name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
88+ # id: "run-tests-and-delete-vm"
89+ # entrypoint: "bash"
90+ # args:
91+ # - "-c"
92+ # - |
93+ # set -e
94+ # # Wait for the VM to be fully initialized and SSH to be ready.
95+ # for i in {1..10}; do
96+ # if gcloud compute ssh ${_VM_NAME} --zone=${_ZONE} --internal-ip --ssh-key-file=/workspace/.ssh/google_compute_engine --command="echo VM is ready"; then
97+ # break
98+ # fi
99+ # echo "Waiting for VM to become available... (attempt $i/10)"
100+ # sleep 15
101+ # done
102+ # # copy the script to the VM
103+ # gcloud compute scp packages/google-cloud-storage/cloudbuild/run_zonal_tests.sh ${_VM_NAME}:~ --zone=${_ZONE} --internal-ip --ssh-key-file=/workspace/.ssh/google_compute_engine
104+
105+ # # Execute the script on the VM via SSH.
106+ # # Capture the exit code to ensure cleanup happens before the build fails.
107+ # set +e
108+ # gcloud compute ssh ${_VM_NAME} --zone=${_ZONE} --internal-ip --ssh-key-file=/workspace/.ssh/google_compute_engine --command="ulimit -n ${_ULIMIT}; COMMIT_SHA=${COMMIT_SHA} _ZONAL_BUCKET=${_ZONAL_BUCKET} CROSS_REGION_BUCKET=${_CROSS_REGION_BUCKET} _PR_NUMBER=${_PR_NUMBER} bash run_zonal_tests.sh"
109+ # EXIT_CODE=$?
110+ # set -e
111+
112+ # echo "--- Deleting GCE VM ---"
113+ # gcloud compute instances delete "${_VM_NAME}" --zone=${_ZONE} --quiet
114+
115+ # # Exit with the original exit code from the test script.
116+ # exit $$EXIT_CODE
117+ # waitFor:
118+ # - "create-vm"
119+ # - "generate-ssh-key"
120+ # - "cleanup-old-keys"
121+
122+ # - name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
123+ # id: "cleanup-ssh-key"
124+ # entrypoint: "bash"
125+ # args:
126+ # - "-c"
127+ # - |
128+ # echo "--- Removing SSH key from OS Login profile to prevent accumulation ---"
129+ # gcloud compute os-login ssh-keys remove \
130+ # --key-file=/workspace/gcb_ssh_key.pub || true
131+ # waitFor:
132+ # - "run-tests-and-delete-vm"
133+
134+ # timeout: "3600s" # 60 minutes
135+
136+ # options:
137+ # logging: CLOUD_LOGGING_ONLY
138+ # pool:
139+ # name: "projects/${PROJECT_ID}/locations/us-central1/workerPools/cloud-build-worker-pool"
0 commit comments