diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 779b4f8c0f083b..e8de7a7f9b184f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1689,7 +1689,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}" run: > breeze build-image --prepare-buildx-cache - --max-retries 3 --platform linux/amd64,linux/arm64 env: PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }} @@ -1723,7 +1722,6 @@ ${{ hashFiles('.pre-commit-config.yaml') }}" --install-packages-from-context --prepare-buildx-cache --disable-airflow-repo-cache - --max-retries 3 --platform linux/amd64,linux/arm64 env: PYTHON_MAJOR_MINOR_VERSION: ${{ matrix.python-version }} 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 230e1752e40b21..08c39adb456f96 100644 --- a/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/ci_image_commands.py @@ -18,7 +18,6 @@ import os import sys from pathlib import Path -from subprocess import CompletedProcess from typing import List, Optional, Tuple, Union import click @@ -51,7 +50,6 @@ option_image_name, option_image_tag, option_install_providers_from_sources, - option_max_retries, option_parallelism, option_platform, option_prepare_buildx_cache, @@ -89,7 +87,6 @@ instruct_build_image, is_repo_rebased, run_command, - run_result_contains, ) CI_IMAGE_TOOLS_COMMANDS = { @@ -113,7 +110,6 @@ "--tag-as-latest", "--docker-cache", "--force-build", - "--max-retries", ], }, { @@ -206,7 +202,6 @@ @option_docker_cache @option_image_tag @option_prepare_buildx_cache -@option_max_retries @option_push_image @option_empty_image @option_install_providers_from_sources @@ -482,34 +477,15 @@ def build_ci_image(verbose: bool, dry_run: bool, ci_image_params: BuildCiParams) ) else: get_console().print(f"\n[info]Building CI Image for Python {ci_image_params.python}\n") - num_tries = 1 if ci_image_params.max_retries is None else ci_image_params.max_retries - build_command_result = CompletedProcess(args=[], returncode=1, stdout="This should never happen.") - while num_tries > 0: - build_command_result = run_command( - cmd, - verbose=verbose, - dry_run=dry_run, - cwd=AIRFLOW_SOURCES_ROOT, - check=False, - text=True, - capture_output=True, - ) - if ci_image_params.prepare_buildx_cache and build_command_result.returncode == 0: + build_command_result = run_command( + cmd, verbose=verbose, dry_run=dry_run, cwd=AIRFLOW_SOURCES_ROOT, text=True, check=False + ) + if build_command_result.returncode == 0: + if ci_image_params.prepare_buildx_cache: build_command_result = build_cache( image_params=ci_image_params, dry_run=dry_run, verbose=verbose ) - if build_command_result.returncode == 0: - break - num_tries -= 1 - if run_result_contains(build_command_result, "cannot reuse body, request must be retried"): - if num_tries > 0: - get_console().print( - "[info]Retrying failed command on retryable condition. " - f"There are {num_tries} left[/]" - ) - continue - else: - break + if not ci_image_params.prepare_buildx_cache: if not dry_run: if build_command_result.returncode == 0: @@ -528,9 +504,7 @@ def build_ci_image(verbose: bool, dry_run: bool, ci_image_params: BuildCiParams) f"Image build: {ci_image_params.python}", ) else: - get_console().print( - "[info]Not tagging/marking image as refreshed because we are in `dry_run` mode.[/]" - ) + get_console().print("[info]Not updating build cache because we are in `dry_run` mode.[/]") return build_command_result.returncode, f"Image build: {ci_image_params.python}" 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 5253edef55b8f9..32aed85d9ed14f 100644 --- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py @@ -17,7 +17,6 @@ import contextlib import os import sys -from subprocess import CompletedProcess from typing import Optional, Tuple import click @@ -50,7 +49,6 @@ option_image_name, option_image_tag, option_install_providers_from_sources, - option_max_retries, option_parallelism, option_platform, option_prepare_buildx_cache, @@ -79,12 +77,7 @@ from airflow_breeze.utils.python_versions import get_python_version_list from airflow_breeze.utils.registry import login_to_github_docker_registry from airflow_breeze.utils.run_tests import verify_an_image -from airflow_breeze.utils.run_utils import ( - filter_out_none, - fix_group_permissions, - run_command, - run_result_contains, -) +from airflow_breeze.utils.run_utils import filter_out_none, fix_group_permissions, run_command PRODUCTION_IMAGE_TOOLS_COMMANDS = { "name": "Production Image tools", @@ -106,7 +99,6 @@ "--image-tag", "--tag-as-latest", "--docker-cache", - "--max-retries", ], }, { @@ -214,7 +206,6 @@ @option_docker_cache @option_image_tag @option_prepare_buildx_cache -@option_max_retries @option_push_image @option_empty_image @option_airflow_constraints_mode_prod @@ -526,36 +517,16 @@ def build_production_image( image_params=prod_image_params, verbose=verbose, ) - num_tries = 1 if prod_image_params.max_retries is None else prod_image_params.max_retries - build_command_result = CompletedProcess(args=[], returncode=1, stdout="This should never happen.") - while num_tries > 0: - build_command_result = run_command( - cmd, - verbose=verbose, - dry_run=dry_run, - cwd=AIRFLOW_SOURCES_ROOT, - check=False, - text=True, - capture_output=True, - ) - if build_command_result.returncode == 0: - if prod_image_params.prepare_buildx_cache: - build_command_result = build_cache( - image_params=prod_image_params, dry_run=dry_run, verbose=verbose - ) - else: - if prod_image_params.tag_as_latest: - build_command_result = tag_image_as_latest(prod_image_params, dry_run, verbose) - if build_command_result.returncode == 0: - break - num_tries -= 1 - if run_result_contains(build_command_result, "cannot reuse body, request must be retried"): - if num_tries > 0: - get_console().print( - "[info]Retrying failed command on retryable condition. " - f"There are {num_tries} left[/]" - ) - continue + build_command_result = run_command( + cmd, verbose=verbose, dry_run=dry_run, cwd=AIRFLOW_SOURCES_ROOT, check=False, text=True + ) + if build_command_result.returncode == 0: + if prod_image_params.prepare_buildx_cache: + build_command_result = build_cache( + image_params=prod_image_params, dry_run=dry_run, verbose=verbose + ) else: - break + if prod_image_params.tag_as_latest: + build_command_result = tag_image_as_latest(prod_image_params, dry_run, verbose) + return build_command_result.returncode, f"Image build: {prod_image_params.python}" diff --git a/dev/breeze/src/airflow_breeze/params/_common_build_params.py b/dev/breeze/src/airflow_breeze/params/_common_build_params.py index 78ab06b36992dd..4f2139d20e723e 100644 --- a/dev/breeze/src/airflow_breeze/params/_common_build_params.py +++ b/dev/breeze/src/airflow_breeze/params/_common_build_params.py @@ -55,7 +55,6 @@ class _CommonBuildParams: github_token: str = os.environ.get('GITHUB_TOKEN', "") github_username: str = "" image_tag: Optional[str] = None - max_retries: Optional[int] = None install_providers_from_sources: bool = False platform: str = f"linux/{os.uname().machine}" prepare_buildx_cache: bool = False diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py b/dev/breeze/src/airflow_breeze/utils/common_options.py index 78adf7aa60e77d..545a6ec149912a 100644 --- a/dev/breeze/src/airflow_breeze/utils/common_options.py +++ b/dev/breeze/src/airflow_breeze/utils/common_options.py @@ -289,12 +289,6 @@ is_flag=True, envvar='PREPARE_BUILDX_CACHE', ) -option_max_retries = click.option( - '--max-retries', - help='Maximum number of retries for the operation for "retryable" intermittent problems.', - type=click.IntRange(min=2), - envvar='MAX_RETRIES', -) option_push_image = click.option( '--push-image', help='Push image after building it.', diff --git a/dev/breeze/src/airflow_breeze/utils/run_utils.py b/dev/breeze/src/airflow_breeze/utils/run_utils.py index 54bb288795844b..03f3c0532d2057 100644 --- a/dev/breeze/src/airflow_breeze/utils/run_utils.py +++ b/dev/breeze/src/airflow_breeze/utils/run_utils.py @@ -405,11 +405,3 @@ def get_runnable_ci_image(verbose: bool, dry_run: bool) -> str: instruction=f"breeze build-image --python {python_version}", ) return airflow_image - - -def run_result_contains(result: RunCommandResult, message: str) -> bool: - if result.stdout and message in result.stdout: - return True - if result.stderr and message in result.stderr: - return True - return False diff --git a/images/breeze/output-build-image.svg b/images/breeze/output-build-image.svg index 568a03defea45a..91028e25d8dde3 100644 --- a/images/breeze/output-build-image.svg +++ b/images/breeze/output-build-image.svg @@ -1,4 +1,4 @@ - + - Command: build-image + Command: build-image -                                                                                                                          - Usage: breeze build-image [OPTIONS]                                                                                     -                                                                                                                         - Build CI image. Include building multiple images for all python versions (sequentially).                                -                                                                                                                         -╭─ Basic usage ────────────────────────────────────────────────────────────────────────────────────────────────────────╮ -  --python                         -p  Python major/minor version used in Airflow image for images.                    -                                       (>3.7< | 3.8 | 3.9 | 3.10)                                                      -                                       [default: 3.7]                                                                  -  --upgrade-to-newer-dependencies  -u  When set, upgrade all PIP packages to latest.                                   -  --debian-version                     Debian version used for the image. (bullseye | buster) [default: bullseye]      -  --image-tag                      -t  Tag added to the default naming conventions of Airflow CI/PROD images. (TEXT)   -  --tag-as-latest                      Tags the image as latest and update checksum of all files after pulling.        -                                       Useful when you build or pull image with --image-tag.                           -  --docker-cache                   -c  Cache option for image used during the build. (registry | local | disabled)     -                                       [default: registry]                                                             -  --max-retries                        Maximum number of retries for the operation for "retryable" intermittent        -                                       problems.                                                                       -                                       (INTEGER RANGE)                                                                 -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Building multiple images ───────────────────────────────────────────────────────────────────────────────────────────╮ -  --build-multiple-images    Run the operation sequentially on all or selected subset of Python versions.              -  --python-versions          Space separated list of python versions used for build with multiple versions. (TEXT)     -                             [default: 3.7 3.8 3.9 3.10]                                                               -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Advanced options (for power users) ─────────────────────────────────────────────────────────────────────────────────╮ -  --install-providers-from-sources    Install providers from sources when installing.                                  -  --airflow-constraints-mode          Mode of constraints for CI image building                                        -                                      (constraints-source-providers | constraints | constraints-no-providers)          -                                      [default: constraints-source-providers]                                          -  --airflow-constraints-reference     Constraint reference to use when building the image. (TEXT)                      -  --additional-python-deps            Additional python dependencies to use when building the images. (TEXT)           -  --runtime-apt-deps                  Apt runtime dependencies to use when building the images. (TEXT)                 -  --runtime-apt-command               Command executed before runtime apt deps are installed. (TEXT)                   -  --additional-extras                 Additional extra package while installing Airflow in the image. (TEXT)           -  --additional-runtime-apt-deps       Additional apt runtime dependencies to use when building the images. (TEXT)      -  --additional-runtime-apt-env        Additional environment variables set when adding runtime dependencies. (TEXT)    -  --additional-runtime-apt-command    Additional command executed before runtime apt deps are installed. (TEXT)        -  --additional-dev-apt-deps           Additional apt dev dependencies to use when building the images. (TEXT)          -  --additional-dev-apt-env            Additional environment variables set when adding dev dependencies. (TEXT)        -  --additional-dev-apt-command        Additional command executed before dev apt deps are installed. (TEXT)            -  --dev-apt-deps                      Apt dev dependencies to use when building the images. (TEXT)                     -  --dev-apt-command                   Command executed before dev apt deps are installed. (TEXT)                       -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Preparing cache and push (for maintainers and CI) ──────────────────────────────────────────────────────────────────╮ -  --platform                Platform for Airflow image. (linux/amd64 | linux/arm64 | linux/amd64,linux/arm64)          -  --prepare-buildx-cache    Prepares build cache additionally to building images (this is done as two separate steps   -                            afterthe images are build). Implies --push-image flag                                      -  --push-image              Push image after building it.                                                              -  --empty-image             Prepare empty image tagged with the same name as the Airflow image.                        -  --github-token            The token used to authenticate to GitHub. (TEXT)                                           -  --github-username         The user name used to authenticate to GitHub. (TEXT)                                       -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ -  --github-repository  -g  GitHub repository used to pull, push run images. (TEXT) [default: apache/airflow]           -  --verbose            -v  Print verbose information about performed steps.                                            -  --dry-run            -D  If dry-run is set, commands are only printed, not executed.                                 -  --answer             -a  Force answer to questions. (y | n | q | yes | no | quit)                                    -  --help               -h  Show this message and exit.                                                                 -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +                                                                                                                          + Usage: breeze build-image [OPTIONS]                                                                                     +                                                                                                                         + Build CI image. Include building multiple images for all python versions (sequentially).                                +                                                                                                                         +╭─ Basic usage ────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +  --python                         -p  Python major/minor version used in Airflow image for images.                    +                                       (>3.7< | 3.8 | 3.9 | 3.10)                                                      +                                       [default: 3.7]                                                                  +  --upgrade-to-newer-dependencies  -u  When set, upgrade all PIP packages to latest.                                   +  --debian-version                     Debian version used for the image. (bullseye | buster) [default: bullseye]      +  --image-tag                      -t  Tag added to the default naming conventions of Airflow CI/PROD images. (TEXT)   +  --tag-as-latest                      Tags the image as latest and update checksum of all files after pulling.        +                                       Useful when you build or pull image with --image-tag.                           +  --docker-cache                   -c  Cache option for image used during the build. (registry | local | disabled)     +                                       [default: registry]                                                             +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Building multiple images ───────────────────────────────────────────────────────────────────────────────────────────╮ +  --build-multiple-images    Run the operation sequentially on all or selected subset of Python versions.              +  --python-versions          Space separated list of python versions used for build with multiple versions. (TEXT)     +                             [default: 3.7 3.8 3.9 3.10]                                                               +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Advanced options (for power users) ─────────────────────────────────────────────────────────────────────────────────╮ +  --install-providers-from-sources    Install providers from sources when installing.                                  +  --airflow-constraints-mode          Mode of constraints for CI image building                                        +                                      (constraints-source-providers | constraints | constraints-no-providers)          +                                      [default: constraints-source-providers]                                          +  --airflow-constraints-reference     Constraint reference to use when building the image. (TEXT)                      +  --additional-python-deps            Additional python dependencies to use when building the images. (TEXT)           +  --runtime-apt-deps                  Apt runtime dependencies to use when building the images. (TEXT)                 +  --runtime-apt-command               Command executed before runtime apt deps are installed. (TEXT)                   +  --additional-extras                 Additional extra package while installing Airflow in the image. (TEXT)           +  --additional-runtime-apt-deps       Additional apt runtime dependencies to use when building the images. (TEXT)      +  --additional-runtime-apt-env        Additional environment variables set when adding runtime dependencies. (TEXT)    +  --additional-runtime-apt-command    Additional command executed before runtime apt deps are installed. (TEXT)        +  --additional-dev-apt-deps           Additional apt dev dependencies to use when building the images. (TEXT)          +  --additional-dev-apt-env            Additional environment variables set when adding dev dependencies. (TEXT)        +  --additional-dev-apt-command        Additional command executed before dev apt deps are installed. (TEXT)            +  --dev-apt-deps                      Apt dev dependencies to use when building the images. (TEXT)                     +  --dev-apt-command                   Command executed before dev apt deps are installed. (TEXT)                       +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Preparing cache and push (for maintainers and CI) ──────────────────────────────────────────────────────────────────╮ +  --platform                Platform for Airflow image. (linux/amd64 | linux/arm64 | linux/amd64,linux/arm64)          +  --prepare-buildx-cache    Prepares build cache additionally to building images (this is done as two separate steps   +                            afterthe images are build). Implies --push-image flag                                      +  --push-image              Push image after building it.                                                              +  --empty-image             Prepare empty image tagged with the same name as the Airflow image.                        +  --github-token            The token used to authenticate to GitHub. (TEXT)                                           +  --github-username         The user name used to authenticate to GitHub. (TEXT)                                       +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +  --github-repository  -g  GitHub repository used to pull, push run images. (TEXT) [default: apache/airflow]           +  --verbose            -v  Print verbose information about performed steps.                                            +  --dry-run            -D  If dry-run is set, commands are only printed, not executed.                                 +  --answer             -a  Force answer to questions. (y | n | q | yes | no | quit)                                    +  --help               -h  Show this message and exit.                                                                 +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/images/breeze/output-build-prod-image.svg b/images/breeze/output-build-prod-image.svg index 9a03880a5b0544..d90abce791153b 100644 --- a/images/breeze/output-build-prod-image.svg +++ b/images/breeze/output-build-prod-image.svg @@ -1,4 +1,4 @@ - + - Command: build-prod-image + Command: build-prod-image -                                                                                                                          - Usage: breeze build-prod-image [OPTIONS]                                                                                -                                                                                                                         - Build Production image. Include building multiple images for all or selected Python versions sequentially.              -                                                                                                                         -╭─ Basic usage ────────────────────────────────────────────────────────────────────────────────────────────────────────╮ -  --python                         -p  Python major/minor version used in Airflow image for images.                    -                                       (>3.7< | 3.8 | 3.9 | 3.10)                                                      -                                       [default: 3.7]                                                                  -  --install-airflow-version        -V  Install version of Airflow from PyPI. (TEXT)                                    -  --upgrade-to-newer-dependencies  -u  When set, upgrade all PIP packages to latest.                                   -  --debian-version                     Debian version used for the image. (bullseye | buster) [default: bullseye]      -  --image-tag                      -t  Tag added to the default naming conventions of Airflow CI/PROD images. (TEXT)   -  --tag-as-latest                      Tags the image as latest and update checksum of all files after pulling.        -                                       Useful when you build or pull image with --image-tag.                           -  --docker-cache                   -c  Cache option for image used during the build. (registry | local | disabled)     -                                       [default: registry]                                                             -  --max-retries                        Maximum number of retries for the operation for "retryable" intermittent        -                                       problems.                                                                       -                                       (INTEGER RANGE)                                                                 -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Building multiple images ───────────────────────────────────────────────────────────────────────────────────────────╮ -  --build-multiple-images    Run the operation sequentially on all or selected subset of Python versions.              -  --python-versions          Space separated list of python versions used for build with multiple versions. (TEXT)     -                             [default: 3.7 3.8 3.9 3.10]                                                               -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Options for customizing images ─────────────────────────────────────────────────────────────────────────────────────╮ -  --install-providers-from-sources    Install providers from sources when installing.                                  -  --airflow-extras                    Extras to install by default.                                                    -                                      (TEXT)                                                                           -                                      [default:                                                                        -                                      amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,goog…   -  --airflow-constraints-mode          Mode of constraints for PROD image building                                      -                                      (constraints | constraints-no-providers | constraints-source-providers)          -                                      [default: constraints]                                                           -  --airflow-constraints-reference     Constraint reference to use when building the image. (TEXT)                      -  --additional-python-deps            Additional python dependencies to use when building the images. (TEXT)           -  --additional-extras                 Additional extra package while installing Airflow in the image. (TEXT)           -  --additional-runtime-apt-deps       Additional apt runtime dependencies to use when building the images. (TEXT)      -  --additional-runtime-apt-env        Additional environment variables set when adding runtime dependencies. (TEXT)    -  --additional-runtime-apt-command    Additional command executed before runtime apt deps are installed. (TEXT)        -  --additional-dev-apt-deps           Additional apt dev dependencies to use when building the images. (TEXT)          -  --additional-dev-apt-env            Additional environment variables set when adding dev dependencies. (TEXT)        -  --additional-dev-apt-command        Additional command executed before dev apt deps are installed. (TEXT)            -  --runtime-apt-deps                  Apt runtime dependencies to use when building the images. (TEXT)                 -  --runtime-apt-command               Command executed before runtime apt deps are installed. (TEXT)                   -  --dev-apt-deps                      Apt dev dependencies to use when building the images. (TEXT)                     -  --dev-apt-command                   Command executed before dev apt deps are installed. (TEXT)                       -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Customization options (for specific customization needs) ───────────────────────────────────────────────────────────╮ -  --install-packages-from-context           Install wheels from local docker-context-files when building image.        -  --airflow-is-in-context                   If set Airflow is installed from docker-context-files only rather than     -                                            from PyPI or sources.                                                      -  --cleanup-context                         Clean up docker context files before running build (cannot be used         -                                            together with --install-packages-from-context).                            -  --disable-mysql-client-installation       Do not install MySQL client.                                               -  --disable-mssql-client-installation       Do not install MsSQl client.                                               -  --disable-postgres-client-installation    Do not install Postgres client.                                            -  --disable-airflow-repo-cache              Disable cache from Airflow repository during building.                     -  --install-airflow-reference               Install Airflow using GitHub tag or branch. (TEXT)                         -  --installation-method                     Install Airflow from: sources or PyPI. (. | apache-airflow)                -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Preparing cache and push (for maintainers and CI) ──────────────────────────────────────────────────────────────────╮ -  --github-token            The token used to authenticate to GitHub. (TEXT)                                           -  --github-username         The user name used to authenticate to GitHub. (TEXT)                                       -  --push-image              Push image after building it.                                                              -  --prepare-buildx-cache    Prepares build cache additionally to building images (this is done as two separate steps   -                            afterthe images are build). Implies --push-image flag                                      -  --platform                Platform for Airflow image. (linux/amd64 | linux/arm64 | linux/amd64,linux/arm64)          -  --empty-image             Prepare empty image tagged with the same name as the Airflow image.                        -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ -╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ -  --github-repository  -g  GitHub repository used to pull, push run images. (TEXT) [default: apache/airflow]           -  --answer             -a  Force answer to questions. (y | n | q | yes | no | quit)                                    -  --dry-run            -D  If dry-run is set, commands are only printed, not executed.                                 -  --verbose            -v  Print verbose information about performed steps.                                            -  --help               -h  Show this message and exit.                                                                 -╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +                                                                                                                          + Usage: breeze build-prod-image [OPTIONS]                                                                                +                                                                                                                         + Build Production image. Include building multiple images for all or selected Python versions sequentially.              +                                                                                                                         +╭─ Basic usage ────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +  --python                         -p  Python major/minor version used in Airflow image for images.                    +                                       (>3.7< | 3.8 | 3.9 | 3.10)                                                      +                                       [default: 3.7]                                                                  +  --install-airflow-version        -V  Install version of Airflow from PyPI. (TEXT)                                    +  --upgrade-to-newer-dependencies  -u  When set, upgrade all PIP packages to latest.                                   +  --debian-version                     Debian version used for the image. (bullseye | buster) [default: bullseye]      +  --image-tag                      -t  Tag added to the default naming conventions of Airflow CI/PROD images. (TEXT)   +  --tag-as-latest                      Tags the image as latest and update checksum of all files after pulling.        +                                       Useful when you build or pull image with --image-tag.                           +  --docker-cache                   -c  Cache option for image used during the build. (registry | local | disabled)     +                                       [default: registry]                                                             +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Building multiple images ───────────────────────────────────────────────────────────────────────────────────────────╮ +  --build-multiple-images    Run the operation sequentially on all or selected subset of Python versions.              +  --python-versions          Space separated list of python versions used for build with multiple versions. (TEXT)     +                             [default: 3.7 3.8 3.9 3.10]                                                               +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Options for customizing images ─────────────────────────────────────────────────────────────────────────────────────╮ +  --install-providers-from-sources    Install providers from sources when installing.                                  +  --airflow-extras                    Extras to install by default.                                                    +                                      (TEXT)                                                                           +                                      [default:                                                                        +                                      amazon,async,celery,cncf.kubernetes,dask,docker,elasticsearch,ftp,google,goog…   +  --airflow-constraints-mode          Mode of constraints for PROD image building                                      +                                      (constraints | constraints-no-providers | constraints-source-providers)          +                                      [default: constraints]                                                           +  --airflow-constraints-reference     Constraint reference to use when building the image. (TEXT)                      +  --additional-python-deps            Additional python dependencies to use when building the images. (TEXT)           +  --additional-extras                 Additional extra package while installing Airflow in the image. (TEXT)           +  --additional-runtime-apt-deps       Additional apt runtime dependencies to use when building the images. (TEXT)      +  --additional-runtime-apt-env        Additional environment variables set when adding runtime dependencies. (TEXT)    +  --additional-runtime-apt-command    Additional command executed before runtime apt deps are installed. (TEXT)        +  --additional-dev-apt-deps           Additional apt dev dependencies to use when building the images. (TEXT)          +  --additional-dev-apt-env            Additional environment variables set when adding dev dependencies. (TEXT)        +  --additional-dev-apt-command        Additional command executed before dev apt deps are installed. (TEXT)            +  --runtime-apt-deps                  Apt runtime dependencies to use when building the images. (TEXT)                 +  --runtime-apt-command               Command executed before runtime apt deps are installed. (TEXT)                   +  --dev-apt-deps                      Apt dev dependencies to use when building the images. (TEXT)                     +  --dev-apt-command                   Command executed before dev apt deps are installed. (TEXT)                       +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Customization options (for specific customization needs) ───────────────────────────────────────────────────────────╮ +  --install-packages-from-context           Install wheels from local docker-context-files when building image.        +  --airflow-is-in-context                   If set Airflow is installed from docker-context-files only rather than     +                                            from PyPI or sources.                                                      +  --cleanup-context                         Clean up docker context files before running build (cannot be used         +                                            together with --install-packages-from-context).                            +  --disable-mysql-client-installation       Do not install MySQL client.                                               +  --disable-mssql-client-installation       Do not install MsSQl client.                                               +  --disable-postgres-client-installation    Do not install Postgres client.                                            +  --disable-airflow-repo-cache              Disable cache from Airflow repository during building.                     +  --install-airflow-reference               Install Airflow using GitHub tag or branch. (TEXT)                         +  --installation-method                     Install Airflow from: sources or PyPI. (. | apache-airflow)                +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Preparing cache and push (for maintainers and CI) ──────────────────────────────────────────────────────────────────╮ +  --github-token            The token used to authenticate to GitHub. (TEXT)                                           +  --github-username         The user name used to authenticate to GitHub. (TEXT)                                       +  --push-image              Push image after building it.                                                              +  --prepare-buildx-cache    Prepares build cache additionally to building images (this is done as two separate steps   +                            afterthe images are build). Implies --push-image flag                                      +  --platform                Platform for Airflow image. (linux/amd64 | linux/arm64 | linux/amd64,linux/arm64)          +  --empty-image             Prepare empty image tagged with the same name as the Airflow image.                        +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ +╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ +  --github-repository  -g  GitHub repository used to pull, push run images. (TEXT) [default: apache/airflow]           +  --answer             -a  Force answer to questions. (y | n | q | yes | no | quit)                                    +  --dry-run            -D  If dry-run is set, commands are only printed, not executed.                                 +  --verbose            -v  Print verbose information about performed steps.                                            +  --help               -h  Show this message and exit.                                                                 +╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ diff --git a/images/breeze/output-commands-hash.txt b/images/breeze/output-commands-hash.txt index 05e27f016cbc35..4d58a2969e4bec 100644 --- a/images/breeze/output-commands-hash.txt +++ b/images/breeze/output-commands-hash.txt @@ -1 +1 @@ -25a28c794bb5fee96137f0aa67b40d7f +969f1b4101773456e832c03b8d4e89ef