This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 8d0229b8f6 Sort build options in breeze commands (#36013)
8d0229b8f6 is described below
commit 8d0229b8f635cb87ba1c747b619019d4536ffd5a
Author: Jarek Potiuk <[email protected]>
AuthorDate: Fri Dec 1 19:16:16 2023 +0100
Sort build options in breeze commands (#36013)
This change has no functional changes. It's only there to sort
parameters and click options for breeze build image commands
---
.../airflow_breeze/commands/ci_image_commands.py | 153 ++++++++--------
.../commands/production_image_commands.py | 198 ++++++++++-----------
images/breeze/output_ci-image_build.svg | 4 +-
images/breeze/output_ci-image_build.txt | 2 +-
images/breeze/output_prod-image_build.svg | 4 +-
images/breeze/output_prod-image_build.txt | 2 +-
6 files changed, 179 insertions(+), 184 deletions(-)
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
index 52134e6b0e..53b899fea8 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py
@@ -234,87 +234,84 @@ def get_exitcode(status: int) -> int:
@ci_image.command(name="build")
-@option_python
-@option_debian_version
-@option_upgrade_to_newer_dependencies
-@option_upgrade_on_failure
-@option_platform_multiple
-@option_github_token
-@option_docker_cache
-@option_image_tag_for_building
-@option_prepare_buildx_cache
-@option_push
-@option_install_providers_from_sources
@option_additional_airflow_extras
-@option_additional_dev_apt_deps
-@option_additional_python_deps
@option_additional_dev_apt_command
+@option_additional_dev_apt_deps
@option_additional_dev_apt_env
-@option_builder
+@option_additional_pip_install_flags
+@option_additional_python_deps
+@option_airflow_constraints_location
+@option_airflow_constraints_mode_ci
+@option_airflow_constraints_reference_build
+@option_answer
@option_build_progress
+@option_build_timeout_minutes
+@option_builder
@option_commit_sha
+@option_debian_version
+@option_debug_resources
@option_dev_apt_command
@option_dev_apt_deps
-@option_python_image
+@option_docker_cache
+@option_dry_run
@option_eager_upgrade_additional_requirements
-@option_airflow_constraints_location
-@option_airflow_constraints_mode_ci
-@option_airflow_constraints_reference_build
-@option_tag_as_latest
-@option_additional_pip_install_flags
@option_github_repository
-@option_version_suffix_for_pypi_ci
-@option_build_timeout_minutes
-@option_run_in_parallel
-@option_parallelism
-@option_skip_cleanup
-@option_debug_resources
+@option_github_token
+@option_image_tag_for_building
@option_include_success_outputs
+@option_install_providers_from_sources
+@option_parallelism
+@option_platform_multiple
+@option_prepare_buildx_cache
+@option_push
+@option_python
+@option_python_image
@option_python_versions
+@option_run_in_parallel
+@option_skip_cleanup
+@option_tag_as_latest
+@option_upgrade_on_failure
+@option_upgrade_to_newer_dependencies
@option_verbose
-@option_dry_run
-@option_answer
+@option_version_suffix_for_pypi_ci
def build(
- # Build options
- python: str,
- debian_version: str,
- upgrade_to_newer_dependencies: bool,
- upgrade_on_failure: bool,
- platform: str | None,
- github_token: str | None,
- docker_cache: str,
- image_tag: str,
- prepare_buildx_cache: bool,
- push: bool,
- install_providers_from_sources: bool,
additional_airflow_extras: str | None,
- additional_dev_apt_deps: str | None,
- additional_python_deps: str | None,
additional_dev_apt_command: str | None,
+ additional_dev_apt_deps: str | None,
additional_dev_apt_env: str | None,
- builder: str,
+ additional_pip_install_flags: str | None,
+ additional_python_deps: str | None,
+ airflow_constraints_location: str | None,
+ airflow_constraints_mode: str,
+ airflow_constraints_reference: str,
build_progress: str,
+ build_timeout_minutes: int | None,
+ builder: str,
commit_sha: str | None,
+ debian_version: str,
+ debug_resources: bool,
dev_apt_command: str | None,
dev_apt_deps: str | None,
+ docker_cache: str,
eager_upgrade_additional_requirements: str | None,
- airflow_constraints_location: str | None,
- airflow_constraints_mode: str,
- airflow_constraints_reference: str,
- tag_as_latest: bool,
- additional_pip_install_flags: str | None,
github_repository: str,
+ github_token: str | None,
+ image_tag: str,
+ include_success_outputs,
+ install_providers_from_sources: bool,
+ parallelism: int,
+ platform: str | None,
+ prepare_buildx_cache: bool,
+ push: bool,
+ python: str,
python_image: str | None,
- version_suffix_for_pypi: str,
- # Parallel building
+ python_versions: str,
run_in_parallel: bool,
- parallelism: int,
skip_cleanup: bool,
- debug_resources: bool,
- include_success_outputs,
- python_versions: str,
- # Other options
- build_timeout_minutes: int | None,
+ tag_as_latest: bool,
+ upgrade_on_failure: bool,
+ upgrade_to_newer_dependencies: bool,
+ version_suffix_for_pypi: str,
):
"""Build CI image. Include building multiple images for all python
versions."""
@@ -351,34 +348,34 @@ def build(
check_remote_ghcr_io_commands()
fix_group_permissions()
base_build_params = BuildCiParams(
- force_build=True,
- python=python,
- debian_version=debian_version,
- upgrade_to_newer_dependencies=upgrade_to_newer_dependencies,
- upgrade_on_failure=upgrade_on_failure,
- github_token=github_token,
- docker_cache=docker_cache,
- image_tag=image_tag,
- prepare_buildx_cache=prepare_buildx_cache,
- push=push,
- install_providers_from_sources=install_providers_from_sources,
additional_airflow_extras=additional_airflow_extras,
- additional_python_deps=additional_python_deps,
additional_dev_apt_command=additional_dev_apt_command,
additional_dev_apt_env=additional_dev_apt_env,
- builder=builder,
+ additional_pip_install_flags=additional_pip_install_flags,
+ additional_python_deps=additional_python_deps,
+ airflow_constraints_location=airflow_constraints_location,
+ airflow_constraints_mode=airflow_constraints_mode,
+ airflow_constraints_reference=airflow_constraints_reference,
build_progress=build_progress,
+ builder=builder,
commit_sha=commit_sha,
+ debian_version=debian_version,
dev_apt_command=dev_apt_command,
dev_apt_deps=dev_apt_deps,
+ docker_cache=docker_cache,
eager_upgrade_additional_requirements=eager_upgrade_additional_requirements,
- airflow_constraints_location=airflow_constraints_location,
- airflow_constraints_mode=airflow_constraints_mode,
- airflow_constraints_reference=airflow_constraints_reference,
- tag_as_latest=tag_as_latest,
- additional_pip_install_flags=additional_pip_install_flags,
+ force_build=True,
github_repository=github_repository,
+ github_token=github_token,
+ image_tag=image_tag,
+ install_providers_from_sources=install_providers_from_sources,
+ prepare_buildx_cache=prepare_buildx_cache,
+ push=push,
+ python=python,
python_image=python_image,
+ tag_as_latest=tag_as_latest,
+ upgrade_on_failure=upgrade_on_failure,
+ upgrade_to_newer_dependencies=upgrade_to_newer_dependencies,
version_suffix_for_pypi=version_suffix_for_pypi,
)
if platform:
@@ -799,15 +796,15 @@ def rebuild_or_pull_ci_image_if_needed(command_params:
ShellParams | BuildCiPara
BUILD_CACHE_DIR, command_params.airflow_branch,
f".built_{command_params.python}"
)
ci_image_params = BuildCiParams(
- python=command_params.python,
builder=command_params.builder,
+ force_build=command_params.force_build,
github_repository=command_params.github_repository,
- upgrade_to_newer_dependencies=False,
image_tag=command_params.image_tag,
platform=command_params.platform,
- force_build=command_params.force_build,
-
skip_provider_dependencies_check=command_params.skip_provider_dependencies_check,
+ python=command_params.python,
skip_image_upgrade_check=command_params.skip_image_upgrade_check,
+
skip_provider_dependencies_check=command_params.skip_provider_dependencies_check,
+ upgrade_to_newer_dependencies=False,
warn_image_upgrade_needed=command_params.warn_image_upgrade_needed,
)
if command_params.image_tag is not None and command_params.image_tag !=
"latest":
diff --git
a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
index 27f195bc2e..b0368e384d 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -155,33 +155,6 @@ def prod_image():
@prod_image.command(name="build")
-@option_python
-@option_debian_version
-@option_platform_multiple
-@option_github_token
-@option_docker_cache
-@option_image_tag_for_building
-@option_prepare_buildx_cache
-@option_push
-@option_install_providers_from_sources
[email protected]("-V", "--install-airflow-version", help="Install version of
Airflow from PyPI.")
-@option_additional_airflow_extras
-@option_additional_dev_apt_deps
-@option_additional_runtime_apt_deps
-@option_additional_python_deps
-@option_additional_dev_apt_command
-@option_additional_dev_apt_env
-@option_additional_runtime_apt_env
-@option_additional_runtime_apt_command
-@option_builder
-@option_build_progress
-@option_commit_sha
-@option_dev_apt_command
-@option_dev_apt_deps
-@option_runtime_apt_command
-@option_runtime_apt_deps
-@option_airflow_constraints_location
-@option_airflow_constraints_mode_prod
@click.option(
"--installation-method",
help="Install Airflow from: sources or PyPI.",
@@ -225,73 +198,98 @@ def prod_image():
"--install-airflow-reference",
help="Install Airflow using GitHub tag or branch.",
)
-@option_airflow_constraints_reference_build
-@option_tag_as_latest
[email protected]("-V", "--install-airflow-version", help="Install version of
Airflow from PyPI.")
+@option_additional_airflow_extras
+@option_additional_dev_apt_command
+@option_additional_dev_apt_deps
+@option_additional_dev_apt_env
@option_additional_pip_install_flags
+@option_additional_python_deps
+@option_additional_runtime_apt_command
+@option_additional_runtime_apt_deps
+@option_additional_runtime_apt_env
+@option_airflow_constraints_location
+@option_airflow_constraints_mode_prod
+@option_airflow_constraints_reference_build
+@option_answer
+@option_build_progress
+@option_builder
+@option_commit_sha
+@option_debian_version
+@option_debug_resources
+@option_dev_apt_command
+@option_dev_apt_deps
+@option_docker_cache
+@option_dry_run
@option_github_repository
+@option_github_token
+@option_image_tag_for_building
+@option_include_success_outputs
+@option_install_providers_from_sources
+@option_parallelism
+@option_platform_multiple
+@option_prepare_buildx_cache
+@option_push
+@option_python
@option_python_image
-@option_version_suffix_for_pypi
+@option_python_versions
@option_run_in_parallel
-@option_parallelism
+@option_runtime_apt_command
+@option_runtime_apt_deps
@option_skip_cleanup
-@option_debug_resources
-@option_include_success_outputs
-@option_python_versions
+@option_tag_as_latest
@option_verbose
-@option_dry_run
-@option_answer
+@option_version_suffix_for_pypi
def build(
- # build options
- python: str,
- debian_version: str,
- platform: str | None,
- github_token: str | None,
- docker_cache: str,
- image_tag: str,
- prepare_buildx_cache: bool,
- push: bool,
- install_providers_from_sources: bool,
- install_airflow_version: str | None,
additional_airflow_extras: str | None,
- additional_dev_apt_deps: str | None,
- additional_runtime_apt_deps: str | None,
- additional_python_deps: str | None,
additional_dev_apt_command: str | None,
+ additional_dev_apt_deps: str | None,
additional_dev_apt_env: str | None,
+ additional_pip_install_flags: str | None,
+ additional_python_deps: str | None,
additional_runtime_apt_command: str | None,
+ additional_runtime_apt_deps: str | None,
additional_runtime_apt_env: str | None,
- builder: str,
+ airflow_constraints_location: str | None,
+ airflow_constraints_mode: str,
+ airflow_constraints_reference: str | None,
+ airflow_extras: str,
build_progress: str,
+ builder: str,
+ cleanup_context: bool,
commit_sha: str | None,
+ debian_version: str,
+ debug_resources: bool,
dev_apt_command: str | None,
dev_apt_deps: str | None,
- runtime_apt_command: str | None,
- runtime_apt_deps: str | None,
- airflow_constraints_location: str | None,
- airflow_constraints_mode: str,
- installation_method: str,
- install_packages_from_context: bool,
- use_constraints_for_context_packages: bool,
- cleanup_context: bool,
- airflow_extras: str,
- disable_mysql_client_installation: bool,
+ disable_airflow_repo_cache: bool,
disable_mssql_client_installation: bool,
+ disable_mysql_client_installation: bool,
disable_postgres_client_installation: bool,
- disable_airflow_repo_cache: bool,
- install_airflow_reference: str | None,
- airflow_constraints_reference: str | None,
- tag_as_latest: bool,
- additional_pip_install_flags: str | None,
+ docker_cache: str,
github_repository: str,
+ github_token: str | None,
+ image_tag: str,
+ include_success_outputs,
+ install_airflow_reference: str | None,
+ install_airflow_version: str | None,
+ install_packages_from_context: bool,
+ install_providers_from_sources: bool,
+ installation_method: str,
+ parallelism: int,
+ platform: str | None,
+ prepare_buildx_cache: bool,
+ push: bool,
+ python: str,
python_image: str | None,
- version_suffix_for_pypi: str,
- # Parallel building
+ python_versions: str,
run_in_parallel: bool,
- parallelism: int,
+ runtime_apt_command: str | None,
+ runtime_apt_deps: str | None,
skip_cleanup: bool,
- debug_resources: bool,
- include_success_outputs,
- python_versions: str,
+ tag_as_latest: bool,
+ use_constraints_for_context_packages: bool,
+ version_suffix_for_pypi: str,
):
"""
Build Production image. Include building multiple images for all or
selected Python versions sequentially.
@@ -307,47 +305,47 @@ def build(
check_remote_ghcr_io_commands()
base_build_params = BuildProdParams(
- python=python,
- debian_version=debian_version,
- github_token=github_token,
- docker_cache=docker_cache,
- image_tag=image_tag,
- prepare_buildx_cache=prepare_buildx_cache,
- push=push,
- install_providers_from_sources=install_providers_from_sources,
- install_airflow_version=install_airflow_version,
additional_airflow_extras=additional_airflow_extras,
- additional_dev_apt_deps=additional_dev_apt_deps,
- additional_runtime_apt_deps=additional_runtime_apt_deps,
- additional_python_deps=additional_python_deps,
additional_dev_apt_command=additional_dev_apt_command,
+ additional_dev_apt_deps=additional_dev_apt_deps,
additional_dev_apt_env=additional_dev_apt_env,
+ additional_pip_install_flags=additional_pip_install_flags,
+ additional_python_deps=additional_python_deps,
additional_runtime_apt_command=additional_runtime_apt_command,
+ additional_runtime_apt_deps=additional_runtime_apt_deps,
additional_runtime_apt_env=additional_runtime_apt_env,
- builder=builder,
+ airflow_constraints_location=airflow_constraints_location,
+ airflow_constraints_mode=airflow_constraints_mode,
+ airflow_constraints_reference=airflow_constraints_reference,
+ airflow_extras=airflow_extras,
build_progress=build_progress,
+ builder=builder,
+ cleanup_context=cleanup_context,
commit_sha=commit_sha,
+ debian_version=debian_version,
dev_apt_command=dev_apt_command,
dev_apt_deps=dev_apt_deps,
- runtime_apt_command=runtime_apt_command,
- runtime_apt_deps=runtime_apt_deps,
- airflow_constraints_location=airflow_constraints_location,
- airflow_constraints_mode=airflow_constraints_mode,
- installation_method=installation_method,
- install_packages_from_context=install_packages_from_context,
-
use_constraints_for_context_packages=use_constraints_for_context_packages,
- cleanup_context=cleanup_context,
- airflow_extras=airflow_extras,
- disable_mysql_client_installation=disable_mysql_client_installation,
+ disable_airflow_repo_cache=disable_airflow_repo_cache,
disable_mssql_client_installation=disable_mssql_client_installation,
+ disable_mysql_client_installation=disable_mysql_client_installation,
disable_postgres_client_installation=disable_postgres_client_installation,
- disable_airflow_repo_cache=disable_airflow_repo_cache,
- install_airflow_reference=install_airflow_reference,
- airflow_constraints_reference=airflow_constraints_reference,
- tag_as_latest=tag_as_latest,
- additional_pip_install_flags=additional_pip_install_flags,
+ docker_cache=docker_cache,
github_repository=github_repository,
+ github_token=github_token,
+ image_tag=image_tag,
+ install_airflow_reference=install_airflow_reference,
+ install_airflow_version=install_airflow_version,
+ install_packages_from_context=install_packages_from_context,
+ install_providers_from_sources=install_providers_from_sources,
+ installation_method=installation_method,
+ prepare_buildx_cache=prepare_buildx_cache,
+ push=push,
+ python=python,
python_image=python_image,
+ runtime_apt_command=runtime_apt_command,
+ runtime_apt_deps=runtime_apt_deps,
+ tag_as_latest=tag_as_latest,
+
use_constraints_for_context_packages=use_constraints_for_context_packages,
version_suffix_for_pypi=version_suffix_for_pypi,
)
if platform:
diff --git a/images/breeze/output_ci-image_build.svg
b/images/breeze/output_ci-image_build.svg
index 57fb8ac402..78e36c8984 100644
--- a/images/breeze/output_ci-image_build.svg
+++ b/images/breeze/output_ci-image_build.svg
@@ -413,9 +413,9 @@
</text><text class="breeze-ci-image-build-r5" x="0" y="2045.2"
textLength="12.2" clip-path="url(#breeze-ci-image-build-line-83)">│</text><text
class="breeze-ci-image-build-r4" x="24.4" y="2045.2" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-83)">-</text><text
class="breeze-ci-image-build-r4" x="36.6" y="2045.2" textLength="85.4"
clip-path="url(#breeze-ci-image-build-line-83)">-github</text><text
class="breeze-ci-image-build-r4" x="122" y="2045.2" textLength="73.2" clip-pa
[...]
</text><text class="breeze-ci-image-build-r5" x="0" y="2069.6"
textLength="1464"
clip-path="url(#breeze-ci-image-build-line-84)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-ci-image-build-r1" x="1464" y="2069.6" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-84)">
</text><text class="breeze-ci-image-build-r5" x="0" y="2094" textLength="24.4"
clip-path="url(#breeze-ci-image-build-line-85)">╭─</text><text
class="breeze-ci-image-build-r5" x="24.4" y="2094" textLength="195.2"
clip-path="url(#breeze-ci-image-build-line-85)"> Common options </text><text
class="breeze-ci-image-build-r5" x="219.6" y="2094" textLength="1220"
clip-path="url(#breeze-ci-image-build-line-85)">──────────────────────────────────────────────────────────────────────
[...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="2118.4"
textLength="12.2" clip-path="url(#breeze-ci-image-build-line-86)">│</text><text
class="breeze-ci-image-build-r4" x="24.4" y="2118.4" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-86)">-</text><text
class="breeze-ci-image-build-r4" x="36.6" y="2118.4" textLength="97.6"
clip-path="url(#breeze-ci-image-build-line-86)">-verbose</text><text
class="breeze-ci-image-build-r6" x="158.6" y="2118.4" textLength="24.4" clip
[...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="2118.4"
textLength="12.2" clip-path="url(#breeze-ci-image-build-line-86)">│</text><text
class="breeze-ci-image-build-r4" x="24.4" y="2118.4" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-86)">-</text><text
class="breeze-ci-image-build-r4" x="36.6" y="2118.4" textLength="85.4"
clip-path="url(#breeze-ci-image-build-line-86)">-answer</text><text
class="breeze-ci-image-build-r6" x="158.6" y="2118.4" textLength="24.4" clip-
[...]
</text><text class="breeze-ci-image-build-r5" x="0" y="2142.8"
textLength="12.2" clip-path="url(#breeze-ci-image-build-line-87)">│</text><text
class="breeze-ci-image-build-r4" x="24.4" y="2142.8" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-87)">-</text><text
class="breeze-ci-image-build-r4" x="36.6" y="2142.8" textLength="48.8"
clip-path="url(#breeze-ci-image-build-line-87)">-dry</text><text
class="breeze-ci-image-build-r4" x="85.4" y="2142.8" textLength="48.8"
clip-path [...]
-</text><text class="breeze-ci-image-build-r5" x="0" y="2167.2"
textLength="12.2" clip-path="url(#breeze-ci-image-build-line-88)">│</text><text
class="breeze-ci-image-build-r4" x="24.4" y="2167.2" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-88)">-</text><text
class="breeze-ci-image-build-r4" x="36.6" y="2167.2" textLength="85.4"
clip-path="url(#breeze-ci-image-build-line-88)">-answer</text><text
class="breeze-ci-image-build-r6" x="158.6" y="2167.2" textLength="24.4" clip-
[...]
+</text><text class="breeze-ci-image-build-r5" x="0" y="2167.2"
textLength="12.2" clip-path="url(#breeze-ci-image-build-line-88)">│</text><text
class="breeze-ci-image-build-r4" x="24.4" y="2167.2" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-88)">-</text><text
class="breeze-ci-image-build-r4" x="36.6" y="2167.2" textLength="97.6"
clip-path="url(#breeze-ci-image-build-line-88)">-verbose</text><text
class="breeze-ci-image-build-r6" x="158.6" y="2167.2" textLength="24.4" clip
[...]
</text><text class="breeze-ci-image-build-r5" x="0" y="2191.6"
textLength="12.2" clip-path="url(#breeze-ci-image-build-line-89)">│</text><text
class="breeze-ci-image-build-r4" x="24.4" y="2191.6" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-89)">-</text><text
class="breeze-ci-image-build-r4" x="36.6" y="2191.6" textLength="61"
clip-path="url(#breeze-ci-image-build-line-89)">-help</text><text
class="breeze-ci-image-build-r6" x="158.6" y="2191.6" textLength="24.4"
clip-path [...]
</text><text class="breeze-ci-image-build-r5" x="0" y="2216" textLength="1464"
clip-path="url(#breeze-ci-image-build-line-90)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-ci-image-build-r1" x="1464" y="2216" textLength="12.2"
clip-path="url(#breeze-ci-image-build-line-90)">
</text>
diff --git a/images/breeze/output_ci-image_build.txt
b/images/breeze/output_ci-image_build.txt
index 9c882681f1..316e973cb7 100644
--- a/images/breeze/output_ci-image_build.txt
+++ b/images/breeze/output_ci-image_build.txt
@@ -1 +1 @@
-3109e8a0e9ff98e6d0b802e6ce09192a
+3965f96b923d922ce64dc17550720a13
diff --git a/images/breeze/output_prod-image_build.svg
b/images/breeze/output_prod-image_build.svg
index 285d5e7969..5147a62430 100644
--- a/images/breeze/output_prod-image_build.svg
+++ b/images/breeze/output_prod-image_build.svg
@@ -461,9 +461,9 @@
</text><text class="breeze-prod-image-build-r5" x="0" y="2338"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-95)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2338" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-95)">-</text><text
class="breeze-prod-image-build-r4" x="36.6" y="2338" textLength="85.4"
clip-path="url(#breeze-prod-image-build-line-95)">-github</text><text
class="breeze-prod-image-build-r4" x="122" y="2338" textLength="73.2" c [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="2362.4"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-96)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2362.4" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-96)">
</text><text class="breeze-prod-image-build-r5" x="0" y="2386.8"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-97)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="2386.8" textLength="195.2"
clip-path="url(#breeze-prod-image-build-line-97)"> Common options </text><text
class="breeze-prod-image-build-r5" x="219.6" y="2386.8" textLength="1220"
clip-path="url(#breeze-prod-image-build-line-97)">────────────────────────────────────────────────────
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2411.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-98)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2411.2" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-98)">-</text><text
class="breeze-prod-image-build-r4" x="36.6" y="2411.2" textLength="97.6"
clip-path="url(#breeze-prod-image-build-line-98)">-verbose</text><text
class="breeze-prod-image-build-r6" x="158.6" y="2411.2" textLeng [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2411.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-98)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2411.2" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-98)">-</text><text
class="breeze-prod-image-build-r4" x="36.6" y="2411.2" textLength="85.4"
clip-path="url(#breeze-prod-image-build-line-98)">-answer</text><text
class="breeze-prod-image-build-r6" x="158.6" y="2411.2" textLengt [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="2435.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-99)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2435.6" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-99)">-</text><text
class="breeze-prod-image-build-r4" x="36.6" y="2435.6" textLength="48.8"
clip-path="url(#breeze-prod-image-build-line-99)">-dry</text><text
class="breeze-prod-image-build-r4" x="85.4" y="2435.6" textLength="4 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2460"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-100)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2460" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-100)">-</text><text
class="breeze-prod-image-build-r4" x="36.6" y="2460" textLength="85.4"
clip-path="url(#breeze-prod-image-build-line-100)">-answer</text><text
class="breeze-prod-image-build-r6" x="158.6" y="2460" textLength="24 [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2460"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-100)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2460" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-100)">-</text><text
class="breeze-prod-image-build-r4" x="36.6" y="2460" textLength="97.6"
clip-path="url(#breeze-prod-image-build-line-100)">-verbose</text><text
class="breeze-prod-image-build-r6" x="158.6" y="2460" textLength="2 [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="2484.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-101)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2484.4" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-101)">-</text><text
class="breeze-prod-image-build-r4" x="36.6" y="2484.4" textLength="61"
clip-path="url(#breeze-prod-image-build-line-101)">-help</text><text
class="breeze-prod-image-build-r6" x="158.6" y="2484.4" textLength [...]
</text><text class="breeze-prod-image-build-r5" x="0" y="2508.8"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-102)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2508.8" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-102)">
</text>
diff --git a/images/breeze/output_prod-image_build.txt
b/images/breeze/output_prod-image_build.txt
index 21c7d3669a..93f5c8f2df 100644
--- a/images/breeze/output_prod-image_build.txt
+++ b/images/breeze/output_prod-image_build.txt
@@ -1 +1 @@
-0bc72c33f57322f3a852d9489202c77c
+09f47521a071218edbb28802f0b49e9f