Skip to content

[pipeline] add multiarch mco #156

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

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
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
25 changes: 14 additions & 11 deletions inventory.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ images:
vars:
context: .
template_context: docker/mongodb-kubernetes-operator
platform: linux/amd64
platform: linux/$(inputs.params.architecture)
inputs:
- version
- log_automation_config_diff
- architecture

stages:

Expand All @@ -22,9 +23,10 @@ images:
release_version: $(inputs.params.version)
log_automation_config_diff: $(inputs.params.log_automation_config_diff)
use_race: "false"
TARGETARCH: $(inputs.params.architecture)
output:
- registry: $(inputs.params.registry)/operator-context
tag: $(inputs.params.version_id)
tag: $(inputs.params.version_id)-$(inputs.params.architecture)

- name: operator-race-context-dockerfile
task_type: docker_build
Expand All @@ -33,9 +35,10 @@ images:
release_version: $(inputs.params.version)
log_automation_config_diff: $(inputs.params.log_automation_config_diff)
use_race: "true"
TARGETARCH: $(inputs.params.architecture)
output:
- registry: $(inputs.params.registry)/operator-context
tag: $(inputs.params.version_id)-race
tag: $(inputs.params.version_id)-race-$(inputs.params.architecture)

- name: operator-template-ubi
task_type: dockerfile_template
Expand All @@ -50,39 +53,39 @@ images:
task_type: docker_build
dockerfile: $(stages['operator-template-ubi'].outputs[0].dockerfile)
buildargs:
imagebase: $(inputs.params.registry)/operator-context:$(inputs.params.version_id)
imagebase: $(inputs.params.registry)/operator-context:$(inputs.params.version_id)-$(inputs.params.architecture)
output:
- registry: $(inputs.params.registry)/mongodb-kubernetes
tag: $(inputs.params.version_id)
tag: $(inputs.params.version_id)-$(inputs.params.architecture)

- name: operator-ubi-race-build
task_type: docker_build
dockerfile: $(stages['operator-template-ubi'].outputs[0].dockerfile)
buildargs:
imagebase: $(inputs.params.registry)/operator-context:$(inputs.params.version_id)-race
imagebase: $(inputs.params.registry)/operator-context:$(inputs.params.version_id)-race-$(inputs.params.architecture)
output:
- registry: $(inputs.params.registry)/mongodb-kubernetes
tag: $(inputs.params.version_id)-race
tag: $(inputs.params.version_id)-race-$(inputs.params.architecture)

- name: master-latest
task_type: tag_image
tags: [ "master" ]
source:
registry: $(inputs.params.registry)/mongodb-kubernetes
tag: $(inputs.params.version_id)
tag: $(inputs.params.version_id)-$(inputs.params.architecture)
destination:
- registry: $(inputs.params.registry)/mongodb-kubernetes
tag: latest
tag: latest-$(inputs.params.architecture)

- name: operator-context-release
task_type: tag_image
tags: ["release"]
source:
registry: $(inputs.params.registry)/operator-context
tag: $(inputs.params.version_id)
tag: $(inputs.params.version_id)-$(inputs.params.architecture)
destination:
- registry: $(inputs.params.quay_registry)
tag: $(inputs.params.version)-context
tag: $(inputs.params.version)-context-$(inputs.params.architecture)

- name: operator-template-ubi
task_type: dockerfile_template
Expand Down
37 changes: 28 additions & 9 deletions pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ def build_mco_tests_image(build_configuration: BuildConfiguration):

sonar_build_image(image_name, build_configuration, buildargs, "inventories/mco_test.yaml")


TRACER.start_as_current_span("build_operator_image")
def build_operator_image(build_configuration: BuildConfiguration):
"""Calculates arguments required to build the operator image, and starts the build process."""
# In evergreen, we can pass test_suffix env to publish the operator to a quay
Expand All @@ -491,22 +491,41 @@ def build_operator_image(build_configuration: BuildConfiguration):
log_automation_config_diff = os.environ.get("LOG_AUTOMATION_CONFIG_DIFF", "false")
version, _ = get_git_release_tag()

args = {
"version": version,
"log_automation_config_diff": log_automation_config_diff,
"test_suffix": test_suffix,
"debug": build_configuration.debug,
}
# Use only amd64 if we should skip arm64 builds
if should_skip_arm64():
architectures = ["amd64"]
logger.info("Skipping ARM64 builds for operator image as this is running in EVG pipeline as a patch")
else:
architectures = build_configuration.architecture or ["amd64", "arm64"]

logger.info(f"Building Operator args: {args}")

multi_arch_args_list = []

for arch in architectures:
arch_args = {
"version": version,
"log_automation_config_diff": log_automation_config_diff,
"test_suffix": test_suffix,
"debug": build_configuration.debug,
"architecture": arch
}
multi_arch_args_list.append(arch_args)

logger.info(f"Building Operator args: {multi_arch_args_list}")

image_name = "mongodb-kubernetes"

current_span = trace.get_current_span()
current_span.set_attribute("mck.image_name", image_name)
current_span.set_attribute("mck.architecture", architectures)

build_image_generic(
config=build_configuration,
image_name=image_name,
inventory_file="inventory.yaml",
extra_args=args,
registry_address=f"{QUAY_REGISTRY_URL}/{image_name}",
multi_arch_args_list=multi_arch_args_list,
is_multi_arch=True
)


Expand Down