diff --git a/prow/BUILD.bazel b/prow/BUILD.bazel index d06646b674eb4..e25ccb456ed58 100644 --- a/prow/BUILD.bazel +++ b/prow/BUILD.bazel @@ -2,7 +2,7 @@ package(default_visibility = ["//visibility:public"]) load("@io_bazel_rules_docker//container:bundle.bzl", "container_bundle") load("@io_bazel_rules_docker//contrib:push-all.bzl", "docker_push") -load("//prow:def.bzl", "prefix", "prow_push", "tags") +load("//prow:def.bzl", "prefix", "prow_push", "tags", "tags_arm64") load("//def:image.bzl", image_tags = "tags") prow_push( @@ -59,6 +59,19 @@ prow_push( ), ) +prow_push( + name = "release-push-arm64", + bundle_name = "release-arm64", + images = tags_arm64( + cmds = [ + "clonerefs", + "entrypoint", + "initupload", + "sidecar", + ], + ), +) + prow_push( name = "testimage-push", bundle_name = "testimage", diff --git a/prow/Makefile b/prow/Makefile index 26c62a699f0c3..dd5cc6e73f327 100644 --- a/prow/Makefile +++ b/prow/Makefile @@ -75,6 +75,7 @@ bazel-release-push: @echo Be sure to setup authentication: https://github.com/bazelbuild/rules_docker#authentication @echo Also run gcloud auth application-default login bazel run //prow:release-push --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64 + bazel run //prow:release-push-arm64 --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64 .PHONY: bazel-release-push diff --git a/prow/cmd/clonerefs/BUILD.bazel b/prow/cmd/clonerefs/BUILD.bazel index 19ed73ba19e20..e324f510277b6 100644 --- a/prow/cmd/clonerefs/BUILD.bazel +++ b/prow/cmd/clonerefs/BUILD.bazel @@ -1,5 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -load("//prow:def.bzl", "prow_image") +load("//prow:def.bzl", "prow_image", "prow_image_arm64") go_library( name = "go_default_library", @@ -38,6 +38,21 @@ prow_image( visibility = ["//visibility:public"], ) +prow_image_arm64( + name = "image-arm64", + base = "@git-base-arm64//image", + component = NAME, + files = [ + "github_known_hosts", + "ssh_config", + ], + symlinks = { + "/clonerefs": "/app/prow/cmd/clonerefs/app.binary", + "/etc/ssh/ssh_config": "/ssh_config", + }, + visibility = ["//visibility:public"], +) + filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/prow/cmd/entrypoint/BUILD.bazel b/prow/cmd/entrypoint/BUILD.bazel index 44d136f5dc8ca..4efa31bd26880 100644 --- a/prow/cmd/entrypoint/BUILD.bazel +++ b/prow/cmd/entrypoint/BUILD.bazel @@ -1,5 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -load("//prow:def.bzl", "prow_image") +load("//prow:def.bzl", "prow_image", "prow_image_arm64") go_library( name = "go_default_library", @@ -31,6 +31,14 @@ prow_image( visibility = ["//visibility:public"], ) +prow_image_arm64( + name = "image-arm64", + base = "@git-base-arm64//image", + component = NAME, + symlinks = {"/entrypoint": "/app/prow/cmd/entrypoint/app.binary"}, + visibility = ["//visibility:public"], +) + filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/prow/cmd/initupload/BUILD.bazel b/prow/cmd/initupload/BUILD.bazel index 314dbf6494934..1891bde805845 100644 --- a/prow/cmd/initupload/BUILD.bazel +++ b/prow/cmd/initupload/BUILD.bazel @@ -1,5 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -load("//prow:def.bzl", "prow_image") +load("//prow:def.bzl", "prow_image", "prow_image_arm64") go_library( name = "go_default_library", @@ -31,6 +31,14 @@ prow_image( visibility = ["//visibility:public"], ) +prow_image_arm64( + name = "image-arm64", + base = "@git-base-arm64//image", + component = NAME, + symlinks = {"/initupload": "/app/prow/cmd/initupload/app.binary"}, + visibility = ["//visibility:public"], +) + filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/prow/cmd/sidecar/BUILD.bazel b/prow/cmd/sidecar/BUILD.bazel index fc3968957672f..ab403c7c8d154 100644 --- a/prow/cmd/sidecar/BUILD.bazel +++ b/prow/cmd/sidecar/BUILD.bazel @@ -1,5 +1,5 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") -load("//prow:def.bzl", "prow_image") +load("//prow:def.bzl", "prow_image", "prow_image_arm64") go_library( name = "go_default_library", @@ -31,6 +31,14 @@ prow_image( visibility = ["//visibility:public"], ) +prow_image_arm64( + name = "image-arm64", + base = "@git-base-arm64//image", + component = NAME, + symlinks = {"/sidecar": "/app/prow/cmd/sidecar/app.binary"}, + visibility = ["//visibility:public"], +) + filegroup( name = "package-srcs", srcs = glob(["**"]), diff --git a/prow/push.sh b/prow/push.sh index 1b49858d169ff..a0969fe9cd1ca 100755 --- a/prow/push.sh +++ b/prow/push.sh @@ -78,3 +78,15 @@ for i in {1..3}; do echo "Failed attempt $i, retrying..." sleep 5 done +echo -e "Pushing $(color-version ${new_version}) arm64 images via $(color-target //prow:release-push-arm64 --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64) ..." >&2 +# Remove retries after https://github.com/bazelbuild/rules_docker/issues/673 +for i in {1..3}; do + if bazel run //prow:release-push-arm64 --platforms=@io_bazel_rules_go//go/toolchain:linux_amd64; then + exit 0 + elif [[ "$i" == 3 ]]; then + echo "Failed" + exit 1 + fi + echo "Failed attempt $i, retrying..." + sleep 5 +done