Skip to content

fixing context image not created when manually running releases #214

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jul 1, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 22 additions & 7 deletions pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -735,11 +735,15 @@ def submit(self, fn, *args, **kwargs):
return super().submit(lambda: fn(*args, **kwargs))


def should_skip_arm64():
def should_skip_arm64(config: BuildConfiguration) -> bool:
"""
Determines if arm64 builds should be skipped based on environment.
Returns True if running in Evergreen pipeline as a patch.
Determines if arm64 builds should be skipped based on environment.
Determines if arm64 builds should be skipped based on BuildConfiguration or environment.```
And skipping the evergreen detail.
"""
if config.is_release_step_executed():
return False

return is_running_in_evg_pipeline() and is_running_in_patch()


Expand All @@ -765,8 +769,8 @@ def get_architectures_set(build_configuration, args):
if arch_set == {"arm64"}:
raise ValueError("Building for ARM64 only is not supported yet")

if should_skip_arm64():
logger.info("Skipping ARM64 builds as this is running in EVG pipeline as a patch")
if should_skip_arm64(build_configuration):
logger.info("Skipping ARM64 builds as this is running in as a patch and not a release step.")
return {"amd64"}

# Automatic architecture detection is the default behavior if 'arch' argument isn't specified
Expand Down Expand Up @@ -824,6 +828,10 @@ def inner(build_configuration: BuildConfiguration):
args["release_version"] = version

arch_set = get_architectures_set(build_configuration, args)
span = trace.get_current_span()
span.set_attribute("mck.architectures", str(arch_set))
span.set_attribute("mck.architectures_numbers", len(arch_set))
span.set_attribute("mck.release", build_configuration.is_release_step_executed())

if version not in completed_versions:
if arch_set == {"amd64", "arm64"}:
Expand Down Expand Up @@ -973,6 +981,7 @@ def build_om_image(build_configuration: BuildConfiguration):
)


@TRACER.start_as_current_span("build_image_generic")
def build_image_generic(
config: BuildConfiguration,
image_name: str,
Expand Down Expand Up @@ -1012,6 +1021,12 @@ def build_image_generic(
if config.sign and config.is_release_step_executed():
sign_and_verify_context_image(registry, version)

span = trace.get_current_span()
span.set_attribute("mck.image.image_name", image_name)
span.set_attribute("mck.image.version", version)
span.set_attribute("mck.image.is_release", config.is_release_step_executed())
span.set_attribute("mck.image.is_multi_arch", is_multi_arch)

# Release step. Release images via the daily image process.
if config.is_release_step_executed() and version and QUAY_REGISTRY_URL in registry:
logger.info(
Expand Down Expand Up @@ -1066,7 +1081,7 @@ def build_community_image(build_configuration: BuildConfiguration, image_type: s
golang_version = os.getenv("GOLANG_VERSION", "1.24")

# Use only amd64 if we should skip arm64 builds
if should_skip_arm64():
if should_skip_arm64(build_configuration):
architectures = ["amd64"]
logger.info("Skipping ARM64 builds for community image as this is running in EVG pipeline as a patch")
else:
Expand Down Expand Up @@ -1181,7 +1196,7 @@ def build_multi_arch_agent_in_sonar(
joined_args = [args | arch_amd]

# Only include arm64 if we shouldn't skip it
if not should_skip_arm64():
if not should_skip_arm64(build_configuration):
joined_args.append(args | arch_arm)

build_image_generic(
Expand Down