Skip to content
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
2 changes: 1 addition & 1 deletion .evergreen-functions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -535,7 +535,7 @@ functions:
shell: bash
<<: *e2e_include_expansions_in_env
working_dir: src/github.com/mongodb/mongodb-kubernetes
binary: scripts/dev/run_python.sh scripts/release/pipeline_main.py --parallel ${image_name} ${all_agents} ${build_scenario}
binary: scripts/dev/run_python.sh scripts/release/pipeline_main.py --parallel ${image_name} ${all_agents} ${build_scenario} ${platform}

# TODO: this function is very similar to pipeline and it will joined with it in the future
release_operator_pipeline:
Expand Down
56 changes: 36 additions & 20 deletions .evergreen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,17 @@ tasks:
vars:
image_name: meko-tests

- name: build_test_image_arm
commands:
- func: clone
- func: setup_building_host
- func: build_multi_cluster_binary
- func: pipeline
vars:
image_name: meko-tests
platform: "--platform linux/arm64 --architecture-suffix"


- name: build_test_image_ibm
commands:
- func: clone
Expand Down Expand Up @@ -1375,10 +1386,6 @@ buildvariants:
variant: init_test_run
- name: build_database_image_ubi
variant: init_test_run
- name: build_init_appdb_images_ubi
variant: init_test_run
- name: build_init_om_images_ubi
variant: init_test_run
- name: build_test_image_ibm
variant: init_test_run_ibm_power
tasks:
Expand All @@ -1398,10 +1405,6 @@ buildvariants:
variant: init_test_run
- name: build_database_image_ubi
variant: init_test_run
- name: build_init_appdb_images_ubi
variant: init_test_run
- name: build_init_om_images_ubi
variant: init_test_run
- name: build_test_image_ibm
variant: init_test_run_ibm_power
tasks:
Expand All @@ -1421,10 +1424,6 @@ buildvariants:
variant: init_test_run
- name: build_database_image_ubi
variant: init_test_run
- name: build_init_appdb_images_ubi
variant: init_test_run
- name: build_init_om_images_ubi
variant: init_test_run
- name: build_test_image_ibm
variant: init_test_run_ibm_z
tasks:
Expand All @@ -1442,12 +1441,6 @@ buildvariants:
variant: init_test_run
- name: build_init_database_image_ubi
variant: init_test_run
- name: build_database_image_ubi
variant: init_test_run
- name: build_init_appdb_images_ubi
variant: init_test_run
- name: build_init_om_images_ubi
variant: init_test_run
- name: build_test_image_ibm
variant: init_test_run_ibm_z
tasks:
Expand All @@ -1459,7 +1452,15 @@ buildvariants:
run_on:
- ubuntu2404-arm64-large
allowed_requesters: [ "patch", "commit" ]
<<: *base_no_om_image_dependency
depends_on:
- name: build_operator_ubi
variant: init_test_run
- name: build_init_database_image_ubi
variant: init_test_run
- name: build_database_image_ubi
variant: init_test_run
- name: build_test_image_arm
variant: init_test_run_arm
tasks:
- name: e2e_smoke_arm_task_group

Expand All @@ -1469,7 +1470,13 @@ buildvariants:
run_on:
- ubuntu2404-arm64-large
allowed_requesters: [ "patch", "commit" ]
<<: *base_no_om_image_dependency
depends_on:
- name: build_operator_ubi
variant: init_test_run
- name: build_init_database_image_ubi
variant: init_test_run
- name: build_test_image_arm
variant: init_test_run_arm
tasks:
- name: e2e_smoke_arm_task_group

Expand Down Expand Up @@ -1695,6 +1702,15 @@ buildvariants:
tasks:
- name: build_test_image_ibm

- name: init_test_run_arm
display_name: init_test_run_arm
max_hosts: -1
tags: [ "staging" ]
run_on:
- ubuntu2204-arm64-small
tasks:
- name: build_test_image_arm

- name: run_pre_commit
priority: 70
display_name: run_pre_commit
Expand Down
9 changes: 6 additions & 3 deletions build_info.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"patch": {
"repositories": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes"],
"platforms": [
"linux/amd64"
"linux/amd64",
"linux/arm64"
]
},
"staging": {
Expand Down Expand Up @@ -51,7 +52,8 @@
"patch": {
"repositories": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-init-database"],
"platforms": [
"linux/amd64"
"linux/amd64",
"linux/arm64"
]
},
"staging": {
Expand Down Expand Up @@ -138,7 +140,8 @@
"patch": {
"repositories": ["268558157000.dkr.ecr.us-east-1.amazonaws.com/dev/mongodb-kubernetes-database"],
"platforms": [
"linux/amd64"
"linux/amd64",
"linux/arm64"
]
},
"staging": {
Expand Down
8 changes: 8 additions & 0 deletions scripts/dev/contexts/init_test_run_arm
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/usr/bin/env bash

set -Eeou pipefail

script_name=$(readlink -f "${BASH_SOURCE[0]}")
script_dir=$(dirname "${script_name}")

source "${script_dir}/root-context"
6 changes: 3 additions & 3 deletions scripts/dev/setup_evg_host.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ download_kind() {
scripts/evergreen/setup_kind.sh /usr/local
}

download_curl() {
echo "Downloading curl..."
download_kubectl() {
echo "Downloading kubectl..."
curl -s -o kubectl -L https://dl.k8s.io/release/"$(curl -L -s https://dl.k8s.io/release/stable.txt)"/bin/linux/"${ARCH}"/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
Expand All @@ -51,7 +51,7 @@ download_helm() {

set_limits
download_kind &
download_curl &
#download_kubectl &
download_helm &

wait
5 changes: 4 additions & 1 deletion scripts/evergreen/e2e/single_e2e.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,17 @@ deploy_test_app() {
arch=$(uname -m)

case "${arch}" in
aarch64|arm64)
tag="${tag}-arm64"
;;
ppc64le)
tag="${tag}-ppc64le"
;;
s390x)
tag="${tag}-s390x"
;;
*)
echo "Not IBM host, using default tag"
echo "amd64 host, using default tag"
;;
esac

Expand Down
1 change: 1 addition & 0 deletions scripts/release/atomic_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ def build_image(
args=build_args,
push=True,
platforms=build_configuration.platforms,
architecture_suffix=build_configuration.architecture_suffix
)

if build_configuration.sign:
Expand Down
2 changes: 2 additions & 0 deletions scripts/release/build/build_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class ImageInfo:
sign: bool = False
latest_tag: bool = False
olm_tag: bool = False
architecture_suffix: bool = False


@dataclass
Expand Down Expand Up @@ -112,6 +113,7 @@ def load_build_info(
sign=scenario_data.get("sign", False),
latest_tag=scenario_data.get("latest-tag", False),
olm_tag=scenario_data.get("olm-tag", False),
architecture_suffix=scenario_data.get("architecture_suffix", False),
)

binaries = {}
Expand Down
1 change: 1 addition & 0 deletions scripts/release/build/image_build_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class ImageBuildConfiguration:
sign: bool = False
all_agents: bool = False
currently_used_agents: bool = False
architecture_suffix: bool = False

def is_release_scenario(self) -> bool:
return self.scenario == BuildScenario.RELEASE
Expand Down
7 changes: 7 additions & 0 deletions scripts/release/build/image_build_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ def execute_docker_build(
Dict[str, str],
push: bool,
platforms: list[str],
architecture_suffix: bool = False,
builder_name: str = DEFAULT_BUILDER_NAME,
):
"""
Expand All @@ -90,6 +91,7 @@ def execute_docker_build(
:param args: Build arguments dictionary
:param push: Whether to push the image after building
:param platforms: List of target platforms (e.g., ["linux/amd64", "linux/arm64"])
:param architecture_suffix: Whether to add the architecture of the image as a suffix to the tag
:param builder_name: Name of the buildx builder to use
"""
# Login to ECR before building
Expand All @@ -111,6 +113,11 @@ def execute_docker_build(
# Use buildx for multi-platform builds
if len(platforms) > 1:
logger.info(f"Multi-platform build for {len(platforms)} architectures")
elif architecture_suffix and len(platforms) == 1:
arch = platforms[0].split("/")[1]
tags = [f"{tag}-{arch}" for tag in tags]
logger.info(f"Using architecture suffix '{arch}' for tags: {tags}")


# Build the image using buildx, builder must be already initialized
docker_cmd.buildx.build(
Expand Down
7 changes: 7 additions & 0 deletions scripts/release/pipeline_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ def image_build_config_from_args(args) -> ImageBuildConfiguration:
platforms = get_platforms_from_arg(args.platform) or image_build_info.platforms
sign = args.sign or image_build_info.sign
dockerfile_path = image_build_info.dockerfile_path
architecture_suffix = args.architecture_suffix or image_build_info.architecture_suffix

# Validate version - only ops-manager and agent can have None version as the versions are managed by the agent
# and om methods themselves, which are externally retrieved - om_version env var and release.json respectively
Expand All @@ -137,6 +138,7 @@ def image_build_config_from_args(args) -> ImageBuildConfiguration:
parallel_factor=args.parallel_factor,
all_agents=args.all_agents,
currently_used_agents=args.current_agents,
architecture_suffix=architecture_suffix
)


Expand Down Expand Up @@ -275,6 +277,11 @@ def main():
action="store_true",
help="Build all currently used agent images.",
)
parser.add_argument(
"--architecture-suffix",
action="store_true",
help="Append architecture suffix to image tags for single platform builds"
)

args = parser.parse_args()

Expand Down