Skip to content
Merged
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
8 changes: 8 additions & 0 deletions build_info.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"release": {
"sign": true,
"olm-tag": true,
"skip-if-exists": true,
"repositories": ["quay.io/mongodb/mongodb-kubernetes"],
"platforms": [
"linux/arm64",
Expand Down Expand Up @@ -68,6 +69,7 @@
"release": {
"sign": true,
"olm-tag": true,
"skip-if-exists": true,
"repositories": ["quay.io/mongodb/mongodb-kubernetes-init-database"],
"platforms": [
"linux/arm64",
Expand Down Expand Up @@ -99,6 +101,7 @@
"release": {
"sign": true,
"olm-tag": true,
"skip-if-exists": true,
"repositories": ["quay.io/mongodb/mongodb-kubernetes-init-appdb"],
"platforms": [
"linux/arm64",
Expand Down Expand Up @@ -127,6 +130,7 @@
"release": {
"sign": true,
"olm-tag": true,
"skip-if-exists": true,
"repositories": ["quay.io/mongodb/mongodb-kubernetes-init-ops-manager"],
"platforms": [
"linux/amd64"
Expand Down Expand Up @@ -155,6 +159,7 @@
"release": {
"sign": true,
"olm-tag": true,
"skip-if-exists": true,
"repositories": ["quay.io/mongodb/mongodb-kubernetes-database"],
"platforms": [
"linux/arm64",
Expand All @@ -180,6 +185,7 @@
]
},
"release": {
"skip-if-exists": true,
"repositories": ["quay.io/mongodb/mongodb-kubernetes-tests"],
"platforms": [
"linux/amd64"
Expand Down Expand Up @@ -280,6 +286,7 @@
"manual_release": {
"sign": true,
"olm-tag": true,
"skip-if-exists": true,
"repositories": ["quay.io/mongodb/mongodb-agent-ubi", "quay.io/mongodb/mongodb-agent"],
"platforms": [
"linux/arm64",
Expand Down Expand Up @@ -307,6 +314,7 @@
"manual_release": {
"sign": true,
"olm-tag": true,
"skip-if-exists": true,
"repositories": ["quay.io/mongodb/mongodb-enterprise-ops-manager-ubi"],
"platforms": [
"linux/amd64"
Expand Down
12 changes: 12 additions & 0 deletions scripts/release/argparse_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import argparse


def str2bool(v):
if isinstance(v, bool):
return v
if v.lower() in ("yes", "true", "t", "y", "1"):
return True
elif v.lower() in ("no", "false", "f", "n", "0"):
return False
else:
raise argparse.ArgumentTypeError("Boolean value expected.")
13 changes: 1 addition & 12 deletions scripts/release/check_changelog.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,10 @@

from git import Repo

from scripts.release.argparse_utils import str2bool
from scripts.release.changelog import get_changelog_entries
from scripts.release.constants import DEFAULT_CHANGELOG_PATH, DEFAULT_REPOSITORY_PATH


def str2bool(v):
if isinstance(v, bool):
return v
if v.lower() in ("yes", "true", "t", "y", "1"):
return True
elif v.lower() in ("no", "false", "f", "n", "0"):
return False
else:
raise argparse.ArgumentTypeError("Boolean value expected.")


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Check if there are changelog entries",
Expand Down
21 changes: 15 additions & 6 deletions scripts/release/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from opentelemetry.trace import NonRecordingSpan, SpanContext, TraceFlags

from lib.base_logger import logger
from scripts.release.argparse_utils import str2bool
from scripts.release.atomic_pipeline import (
build_agent,
build_database_image,
Expand Down Expand Up @@ -100,25 +101,25 @@ def image_build_config_from_args(args) -> ImageBuildConfiguration:

build_scenario = get_scenario_from_arg(args.build_scenario)
build_info = load_build_info(build_scenario)
logger.info(f"image is {image}")
logger.info(f"images are {build_info.images}")
logger.debug(f"image is {image}")
logger.debug(f"images are {build_info.images}")
image_build_info = build_info.images.get(image)
logger.info(f"image_build_info is {image_build_info}")
logger.debug(f"image_build_info is {image_build_info}")
if not image_build_info:
raise ValueError(f"Image '{image}' is not defined in the build info for scenario '{build_scenario}'")

# Resolve final values with overrides
version = args.version
dockerfile_path = image_build_info.dockerfile_path
latest_tag = image_build_info.latest_tag
olm_tag = image_build_info.olm_tag
if args.registry:
registries = [args.registry]
else:
registries = image_build_info.repositories
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
skip_if_exists = image_build_info.skip_if_exists
sign = args.sign if args.sign is not None else image_build_info.sign
skip_if_exists = args.skip_if_exists if args.skip_if_exists is not None else image_build_info.skip_if_exists

# Validate version - only agent can have None version as the versions are managed by the agent
# which are externally retrieved from release.json
Expand Down Expand Up @@ -250,6 +251,14 @@ def main():
action="store_true",
help="If set force image signing. Default is to infer from build scenario.",
)
parser.add_argument(
"--skip-if-exists",
metavar="",
action="store",
type=str2bool,
nargs="?",
help="Override skip_if_exists behavior instead of resolving from build scenario",
)
# For agent builds
parser.add_argument(
"--parallel",
Expand Down
8 changes: 8 additions & 0 deletions scripts/release/tests/build_info_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,41 +290,47 @@ def test_load_build_info_release():
repositories=["quay.io/mongodb/mongodb-kubernetes"],
platforms=["linux/arm64", "linux/amd64", "linux/s390x", "linux/ppc64le"],
dockerfile_path="docker/mongodb-kubernetes-operator/Dockerfile",
skip_if_exists=True,
olm_tag=True,
sign=True,
),
"init-database": ImageInfo(
repositories=["quay.io/mongodb/mongodb-kubernetes-init-database"],
platforms=["linux/arm64", "linux/amd64", "linux/s390x", "linux/ppc64le"],
dockerfile_path="docker/mongodb-kubernetes-init-database/Dockerfile",
skip_if_exists=True,
olm_tag=True,
sign=True,
),
"init-appdb": ImageInfo(
repositories=["quay.io/mongodb/mongodb-kubernetes-init-appdb"],
platforms=["linux/arm64", "linux/amd64", "linux/s390x", "linux/ppc64le"],
dockerfile_path="docker/mongodb-kubernetes-init-appdb/Dockerfile",
skip_if_exists=True,
olm_tag=True,
sign=True,
),
"init-ops-manager": ImageInfo(
repositories=["quay.io/mongodb/mongodb-kubernetes-init-ops-manager"],
platforms=["linux/amd64"],
dockerfile_path="docker/mongodb-kubernetes-init-ops-manager/Dockerfile",
skip_if_exists=True,
olm_tag=True,
sign=True,
),
"database": ImageInfo(
repositories=["quay.io/mongodb/mongodb-kubernetes-database"],
platforms=["linux/arm64", "linux/amd64", "linux/s390x", "linux/ppc64le"],
dockerfile_path="docker/mongodb-kubernetes-database/Dockerfile",
skip_if_exists=True,
olm_tag=True,
sign=True,
),
"meko-tests": ImageInfo(
repositories=["quay.io/mongodb/mongodb-kubernetes-tests"],
platforms=["linux/amd64"],
dockerfile_path="docker/mongodb-kubernetes-tests/Dockerfile",
skip_if_exists=True,
),
"readiness-probe": ImageInfo(
repositories=["quay.io/mongodb/mongodb-kubernetes-readinessprobe"],
Expand Down Expand Up @@ -370,13 +376,15 @@ def test_load_build_info_manual_release():
repositories=["quay.io/mongodb/mongodb-agent-ubi", "quay.io/mongodb/mongodb-agent"],
platforms=["linux/arm64", "linux/amd64", "linux/s390x", "linux/ppc64le"],
dockerfile_path="docker/mongodb-agent/Dockerfile",
skip_if_exists=True,
olm_tag=True,
sign=True,
),
"ops-manager": ImageInfo(
repositories=["quay.io/mongodb/mongodb-enterprise-ops-manager-ubi"],
platforms=["linux/amd64"],
dockerfile_path="docker/mongodb-enterprise-ops-manager/Dockerfile",
skip_if_exists=True,
olm_tag=True,
sign=True,
),
Expand Down
Loading