[BEAM-12653] Fix container cleanup for Java Dataflow tests (#15213)
diff --git a/runners/google-cloud-dataflow-java/build.gradle b/runners/google-cloud-dataflow-java/build.gradle
index 337aae4..4d79285 100644
--- a/runners/google-cloud-dataflow-java/build.gradle
+++ b/runners/google-cloud-dataflow-java/build.gradle
@@ -279,7 +279,10 @@
commandLine "docker", "rmi", "--force", "${dockerImageName}"
}
exec {
- commandLine "gcloud", "--quiet", "container", "images", "delete", "--force-delete-tags", "${dockerImageName}"
+ commandLine "gcloud", "--quiet", "container", "images", "untag", "${dockerImageName}"
+ }
+ exec {
+ commandLine "./scripts/cleanup_untagged_gcr_images.sh", "${dockerImageContainer}"
}
}
}
diff --git a/runners/google-cloud-dataflow-java/scripts/cleanup_untagged_gcr_images.sh b/runners/google-cloud-dataflow-java/scripts/cleanup_untagged_gcr_images.sh
new file mode 100755
index 0000000..5bf8197
--- /dev/null
+++ b/runners/google-cloud-dataflow-java/scripts/cleanup_untagged_gcr_images.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -e
+
+IMAGE_NAME=$1
+
+# Find all untagged images
+DIGESTS=$(gcloud container images list-tags "${IMAGE_NAME}" --filter='-tags:*' --format="get(digest)")
+
+# Delete image
+echo "${DIGESTS}" | while read -r digest; do
+ if [[ ! -z "${digest}" ]]; then
+ img="${IMAGE_NAME}@${digest}"
+ echo "Removing untagged image ${img}"
+ gcloud container images delete --quiet "${img}"
+ fi
+done