diff --git a/WORKSPACE b/WORKSPACE index 0c8caf7c2aa15c669e261c084e92189b0214f32d..79a7fb49f1a1e5b377f70803fadc3ecc494589cc 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -229,6 +229,24 @@ container_pull( repository = "distroless/static-debian11", ) +# debug-nonroot-arm from https://console.cloud.google.com/gcr/images/distroless/GLOBAL/base-debian11 +container_pull( + name = "go_debug_image_base_arm", + architecture = "arm", + digest = "sha256:77cb441e16f00e9c6040e6551f977186bd848d9f2333f9864fea9d7b3e3c0e28", + registry = "gcr.io", + repository = "distroless/base-debian11", +) + +# nonroot-arm from https://console.cloud.google.com/gcr/images/distroless/GLOBAL/static-debian11 +container_pull( + name = "go_image_static_arm", + architecture = "arm", + digest = "sha256:4da4fc86823ed27faf4e40bc464425acb18fb44067b2d1c5fb9dbb9a5e98bb60", + registry = "gcr.io", + repository = "distroless/static-debian11", +) + # debug-nonroot-arm64 from https://console.cloud.google.com/gcr/images/distroless/GLOBAL/base-debian11 container_pull( name = "go_debug_image_base_arm64", diff --git a/build/push_multiarch_agentk.sh b/build/push_multiarch_agentk.sh index 677014916b449a21f2fb06a9dd1c60a178fb24bc..e0d2438fa7d467e7a325e1cb1406062993edd259 100755 --- a/build/push_multiarch_agentk.sh +++ b/build/push_multiarch_agentk.sh @@ -9,18 +9,20 @@ if [[ -z "$CI_REGISTRY_IMAGE" ]]; then fi if [[ -z "$basetag" ]]; then - echo '$0 takes exactly one argument' + echo "$0 takes exactly one argument" return 1 fi docker manifest create "${CI_REGISTRY_IMAGE}/agentk:${basetag}" \ --amend "${CI_REGISTRY_IMAGE}/agentk:${basetag}-amd64" \ + --amend "${CI_REGISTRY_IMAGE}/agentk:${basetag}-arm" \ --amend "${CI_REGISTRY_IMAGE}/agentk:${basetag}-arm64" docker manifest push "${CI_REGISTRY_IMAGE}/agentk:${basetag}" docker manifest create "${CI_REGISTRY_IMAGE}/agentk:${basetag}-race" \ --amend "${CI_REGISTRY_IMAGE}/agentk:${basetag}-amd64-race" \ + --amend "${CI_REGISTRY_IMAGE}/agentk:${basetag}-arm-race" \ --amend "${CI_REGISTRY_IMAGE}/agentk:${basetag}-arm64-race" docker manifest push "${CI_REGISTRY_IMAGE}/agentk:${basetag}-race" diff --git a/cmd/BUILD.bazel b/cmd/BUILD.bazel index 586f2a54ba4add271e2fb75d272750a3468b5863..4085a2e942add2abc283da07c377fd246008890e 100644 --- a/cmd/BUILD.bazel +++ b/cmd/BUILD.bazel @@ -7,8 +7,10 @@ TAG = { prefix + "kas:{STABLE_BUILD_GIT_TAG}": "//cmd/kas:container", prefix + "kas:{STABLE_BUILD_GIT_TAG}-race": "//cmd/kas:container_race", prefix + "agentk:{STABLE_BUILD_GIT_TAG}-amd64": "//cmd/agentk:container", + prefix + "agentk:{STABLE_BUILD_GIT_TAG}-arm": "//cmd/agentk:container_arm", prefix + "agentk:{STABLE_BUILD_GIT_TAG}-arm64": "//cmd/agentk:container_arm64", prefix + "agentk:{STABLE_BUILD_GIT_TAG}-amd64-race": "//cmd/agentk:container_race", + prefix + "agentk:{STABLE_BUILD_GIT_TAG}-arm-race": "//cmd/agentk:container_arm_race", prefix + "agentk:{STABLE_BUILD_GIT_TAG}-arm64-race": "//cmd/agentk:container_arm64_race", prefix + "cli:{STABLE_BUILD_GIT_TAG}": "//cmd/cli:container", } @@ -17,8 +19,10 @@ STABLE = { prefix + "kas:stable": "//cmd/kas:container", prefix + "kas:stable-race": "//cmd/kas:container_race", prefix + "agentk:stable-amd64": "//cmd/agentk:container", + prefix + "agentk:stable-arm": "//cmd/agentk:container_arm", prefix + "agentk:stable-arm64": "//cmd/agentk:container_arm64", prefix + "agentk:stable-amd64-race": "//cmd/agentk:container_race", + prefix + "agentk:stable-arm-race": "//cmd/agentk:container_arm_race", prefix + "agentk:stable-arm64-race": "//cmd/agentk:container_arm64_race", prefix + "cli:stable": "//cmd/cli:container", } @@ -35,8 +39,10 @@ push_bundle( prefix + "kas:{STABLE_BUILD_GIT_COMMIT}": "//cmd/kas:container", prefix + "kas:{STABLE_BUILD_GIT_COMMIT}-race": "//cmd/kas:container_race", prefix + "agentk:{STABLE_BUILD_GIT_COMMIT}-amd64": "//cmd/agentk:container", + prefix + "agentk:{STABLE_BUILD_GIT_COMMIT}-arm": "//cmd/agentk:container_arm", prefix + "agentk:{STABLE_BUILD_GIT_COMMIT}-arm64": "//cmd/agentk:container_arm64", prefix + "agentk:{STABLE_BUILD_GIT_COMMIT}-amd64-race": "//cmd/agentk:container_race", + prefix + "agentk:{STABLE_BUILD_GIT_COMMIT}-arm-race": "//cmd/agentk:container_arm_race", prefix + "agentk:{STABLE_BUILD_GIT_COMMIT}-arm64-race": "//cmd/agentk:container_arm64_race", prefix + "cli:{STABLE_BUILD_GIT_COMMIT}": "//cmd/cli:container", }, @@ -48,8 +54,10 @@ push_bundle( prefix + "kas:latest": "//cmd/kas:container", prefix + "kas:latest-race": "//cmd/kas:container_race", prefix + "agentk:latest-amd64": "//cmd/agentk:container", + prefix + "agentk:latest-arm": "//cmd/agentk:container_arm", prefix + "agentk:latest-arm64": "//cmd/agentk:container_arm64", prefix + "agentk:latest-amd64-race": "//cmd/agentk:container_race", + prefix + "agentk:latest-arm-race": "//cmd/agentk:container_arm_race", prefix + "agentk:latest-arm64-race": "//cmd/agentk:container_arm64_race", prefix + "cli:latest": "//cmd/cli:container", }, diff --git a/cmd/cli/BUILD.bazel b/cmd/cli/BUILD.bazel index c87df9255129eafc4e18fceb5a21dd2a709024e0..94a3b2a95896ff92b1a12eb5b9d4ad46e828eb01 100644 --- a/cmd/cli/BUILD.bazel +++ b/cmd/cli/BUILD.bazel @@ -58,6 +58,7 @@ container_image( define_command_targets( name = "cli", arm64_targets = False, + arm_targets = False, base_image = ":kpt_package", binary_embed = [":cli_lib"], race_targets = False, diff --git a/cmd/cmd.bzl b/cmd/cmd.bzl index 05b3ed59b71120847f366d411aa8027250d346b5..f58a5ccf92e0ac32dbd68133333d4bc1e7a4ac1e 100644 --- a/cmd/cmd.bzl +++ b/cmd/cmd.bzl @@ -27,10 +27,13 @@ def define_command_targets( name, binary_embed, race_targets = True, + arm_targets = True, arm64_targets = True, base_image = "@go_image_static//image", + base_image_arm = "@go_image_static_arm//image", base_image_arm64 = "@go_image_static_arm64//image", base_image_race = "@go_debug_image_base//image", + base_image_arm_race = "@go_debug_image_base_arm//image", base_image_arm64_race = "@go_debug_image_base_arm64//image"): x_defs = { "gitlab.com/gitlab-org/cluster-integration/gitlab-agent/v14/cmd.Version": "{STABLE_BUILD_GIT_TAG}", @@ -62,6 +65,26 @@ def define_command_targets( visibility = ["//visibility:public"], ) + if arm_targets: + go_binary( + name = "%s_linux_arm" % name, + embed = binary_embed, + goarch = "arm", + goos = "linux", + tags = ["manual"], + visibility = ["//visibility:public"], + x_defs = x_defs, + ) + + go_image( + name = "container_arm", + base = base_image_arm, + binary = ":%s_linux_arm" % name, + architecture = "arm", + tags = ["manual"], + visibility = ["//visibility:public"], + ) + if arm64_targets: go_binary( name = "%s_linux_arm64" % name, @@ -111,6 +134,28 @@ def define_command_targets( visibility = ["//visibility:public"], ) + if race_targets and arm_targets: + # Will only work on an arm machine because otherwise cross compilation with CGO requires a properly setup crosstool. + # go_binary( + # name = "%s_linux_arm_race" % name, + # embed = binary_embed, + # goarch = "arm", + # goos = "linux", + # race = "on", + # tags = ["manual"], + # visibility = ["//visibility:public"], + # x_defs = x_defs, + # ) + # + go_image( + name = "container_arm_race", + base = base_image_arm_race, + binary = ":%s_linux_arm" % name, # not a race binary, but this image is still good for debugging + architecture = "arm", + tags = ["manual"], + visibility = ["//visibility:public"], + ) + if race_targets and arm64_targets: # Will only work on an arm64 machine because otherwise cross compilation with CGO requires a properly setup crosstool. # go_binary( diff --git a/cmd/kas/BUILD.bazel b/cmd/kas/BUILD.bazel index 1d9f17cd1d99490477074f3b9fbaed68c76fc21e..e1857bb95a3518446f05edb45ac7003fa33009a6 100644 --- a/cmd/kas/BUILD.bazel +++ b/cmd/kas/BUILD.bazel @@ -16,6 +16,7 @@ go_library( define_command_targets( name = "kas", arm64_targets = False, + arm_targets = False, binary_embed = [":kas_lib"], )