This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch 
add-chicken-egg-providers-support-for-dockerhub-release
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 2f5fb2a9b649f11d768b33619735272aff120ae0
Author: Jarek Potiuk <ja...@potiuk.com>
AuthorDate: Fri Dec 1 12:15:43 2023 +0100

    Add support for chicken-egg providers to dockerhub release process
---
 .github/workflows/release_dockerhub_image.yml      | 17 ++++++
 .../commands/release_management_commands.py        | 32 +++++++----
 .../commands/release_management_commands_config.py |  1 +
 .../src/airflow_breeze/utils/common_options.py     |  8 +++
 dev/breeze/src/airflow_breeze/utils/versions.py    |  6 +++
 ...tput_release-management_release-prod-images.svg | 62 ++++++++++++++--------
 ...tput_release-management_release-prod-images.txt |  2 +-
 7 files changed, 97 insertions(+), 31 deletions(-)

diff --git a/.github/workflows/release_dockerhub_image.yml 
b/.github/workflows/release_dockerhub_image.yml
index 6889539387..828d33e6b9 100644
--- a/.github/workflows/release_dockerhub_image.yml
+++ b/.github/workflows/release_dockerhub_image.yml
@@ -46,6 +46,7 @@ jobs:
       pythonVersions: ${{ steps.selective-checks.outputs.python-versions }}
       allPythonVersions: ${{ 
steps.selective-checks.outputs.all-python-versions }}
       defaultPythonVersion: ${{ 
steps.selective-checks.outputs.default-python-version }}
+      chicken-egg-providers: ${{ 
steps.selective-checks.outputs.chicken-egg-providers }}
       skipLatest: ${{ github.event.inputs.skipLatest == '' && ' ' || 
'--skip-latest' }}
       limitPlatform: ${{ github.repository == 'apache/airflow' && ' ' || 
'--limit-platform linux/amd64' }}
     env:
@@ -107,6 +108,20 @@ jobs:
         run: >
           echo ${{ secrets.DOCKERHUB_TOKEN }} |
           docker login --password-stdin --username ${{ secrets.DOCKERHUB_USER 
}}
+      - name: "Prepare chicken-eggs provider packages"
+        # In case of provider packages which use latest dev0 version of 
providers, we should prepare them
+        # from the source code, not from the PyPI because they have 
apache-airflow>=X.Y.Z dependency
+        # And when we prepare them from sources they will have 
apache-airflow>=X.Y.Z.dev0
+        shell: bash
+        run: >
+          breeze release-management prepare-provider-packages
+          --package-format wheel
+          --version-suffix-for-pypi dev0 ${{ 
needs.build-info.outputs.chicken-egg-providers }}
+        if: needs.build-info.outputs.chicken-egg-providers != ''
+      - name: "Copy dist packages to docker-context files"
+        shell: bash
+        run: cp -v --no-preserve=mode,ownership ./dist/*.whl 
./docker-context-files
+        if: needs.build-info.outputs.chicken-egg-providers != ''
       - name: >
           Release regular images: ${{ github.event.inputs.airflowVersion }}, 
${{ matrix.python-version }}
         run: >
@@ -116,6 +131,7 @@ jobs:
           ${{ needs.build-info.outputs.skipLatest }}
           ${{ needs.build-info.outputs.limitPlatform }}
           --limit-python ${{ matrix.python-version }}
+          --chicken-egg-providers "${{ 
needs.build-info.outputs.chicken-egg-providers }}"
         env:
           COMMIT_SHA: ${{ github.sha }}
       - name: >
@@ -127,6 +143,7 @@ jobs:
           ${{ needs.build-info.outputs.skipLatest }}
           ${{ needs.build-info.outputs.limitPlatform }}
           --limit-python ${{ matrix.python-version }} --slim-images
+          --chicken-egg-providers "${{ 
needs.build-info.outputs.chicken-egg-providers }}"
         env:
           COMMIT_SHA: ${{ github.sha }}
       - name: "Stop ARM instance"
diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
index 5aa1f65bf1..68a67430ad 100644
--- a/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/release_management_commands.py
@@ -70,6 +70,7 @@ from airflow_breeze.utils.common_options import (
     option_airflow_extras,
     option_airflow_site_directory,
     option_answer,
+    option_chicken_egg_providers,
     option_commit_sha,
     option_debug_resources,
     option_dry_run,
@@ -138,6 +139,7 @@ from airflow_breeze.utils.run_utils import (
     run_compile_www_assets,
 )
 from airflow_breeze.utils.shared_options import get_dry_run, get_verbose
+from airflow_breeze.utils.versions import is_pre_release
 
 option_debug_release_management = click.option(
     "--debug",
@@ -684,14 +686,7 @@ def run_generate_constraints_in_parallel(
 @option_image_tag_for_running
 @option_debug_release_management
 @option_airflow_constraints_mode_ci
-@click.option(
-    "--chicken-egg-providers",
-    default="",
-    help="List of chicken-egg provider packages - "
-    "those that have airflow_version >= current_version and should "
-    "be installed in CI from locally built packages with >= 
current_version.dev0 ",
-    envvar="CHICKEN_EGG_PROVIDERS",
-)
+@option_chicken_egg_providers
 @option_github_repository
 @option_verbose
 @option_dry_run
@@ -1206,6 +1201,17 @@ def add_back_references(
     start_generating_back_references(site_path, 
list(expand_all_provider_packages(doc_packages)))
 
 
+def _add_chicken_egg_providers_to_build_args(
+    python_build_args: dict[str, str], chicken_egg_providers: str, 
airflow_version: str
+):
+    if chicken_egg_providers and is_pre_release(airflow_version):
+        get_console().print(
+            f"[info]Adding chicken egg providers to build args as 
{airflow_version} is "
+            f"pre release and we have chicken-egg packages 
'{chicken_egg_providers}' defined[/]"
+        )
+        python_build_args["INSTALL_PACKAGES_FROM_CONTEXT"] = "true"
+
+
 @release_management.command(
     name="release-prod-images", help="Release production images to DockerHub 
(needs DockerHub permissions)."
 )
@@ -1242,6 +1248,7 @@ def add_back_references(
     "rc/alpha/beta images are built.",
 )
 @option_commit_sha
+@option_chicken_egg_providers
 @option_verbose
 @option_dry_run
 def release_prod_images(
@@ -1252,10 +1259,11 @@ def release_prod_images(
     limit_python: str | None,
     commit_sha: str | None,
     skip_latest: bool,
+    chicken_egg_providers: str,
 ):
     perform_environment_checks()
     check_remote_ghcr_io_commands()
-    if not re.match(r"^\d*\.\d*\.\d*$", airflow_version):
+    if is_pre_release(airflow_version):
         get_console().print(
             f"[warning]Skipping latest image tagging as this is a pre-release 
version: {airflow_version}"
         )
@@ -1307,6 +1315,9 @@ def release_prod_images(
             get_console().print(f"[info]Building slim {airflow_version} image 
for Python {python}[/]")
             python_build_args = deepcopy(slim_build_args)
             slim_image_name = 
f"{dockerhub_repo}:slim-{airflow_version}-python{python}"
+            _add_chicken_egg_providers_to_build_args(
+                python_build_args, chicken_egg_providers, airflow_version
+            )
             docker_buildx_command = [
                 "docker",
                 "buildx",
@@ -1336,6 +1347,9 @@ def release_prod_images(
             }
             if commit_sha:
                 regular_build_args["COMMIT_SHA"] = commit_sha
+            _add_chicken_egg_providers_to_build_args(
+                regular_build_args, chicken_egg_providers, airflow_version
+            )
             docker_buildx_command = [
                 "docker",
                 "buildx",
diff --git 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
index ff0c9cdcd0..fb60e12463 100644
--- 
a/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
+++ 
b/dev/breeze/src/airflow_breeze/commands/release_management_commands_config.py
@@ -161,6 +161,7 @@ RELEASE_MANAGEMENT_PARAMETERS: dict[str, list[dict[str, str 
| list[str]]]] = {
                 "--limit-platform",
                 "--skip-latest",
                 "--commit-sha",
+                "--chicken-egg-providers",
             ],
         }
     ],
diff --git a/dev/breeze/src/airflow_breeze/utils/common_options.py 
b/dev/breeze/src/airflow_breeze/utils/common_options.py
index cf59df8bc0..d053a00514 100644
--- a/dev/breeze/src/airflow_breeze/utils/common_options.py
+++ b/dev/breeze/src/airflow_breeze/utils/common_options.py
@@ -787,3 +787,11 @@ option_restart = click.option(
     is_flag=True,
     envvar="RESTART",
 )
+option_chicken_egg_providers = click.option(
+    "--chicken-egg-providers",
+    default="",
+    help="List of chicken-egg provider packages - "
+    "those that have airflow_version >= current_version and should "
+    "be installed in CI from locally built packages with >= 
current_version.dev0 ",
+    envvar="CHICKEN_EGG_PROVIDERS",
+)
diff --git a/dev/breeze/src/airflow_breeze/utils/versions.py 
b/dev/breeze/src/airflow_breeze/utils/versions.py
index 88c5986f7d..70dc6ad77d 100644
--- a/dev/breeze/src/airflow_breeze/utils/versions.py
+++ b/dev/breeze/src/airflow_breeze/utils/versions.py
@@ -34,3 +34,9 @@ def get_version_tag(version: str, provider_package_id: str, 
version_suffix: str
     if version_suffix is None:
         version_suffix = ""
     return 
f"providers-{provider_package_id.replace('.','-')}/{version}{version_suffix}"
+
+
+def is_pre_release(version: str) -> bool:
+    from packaging.version import Version
+
+    return Version(version).is_prerelease
diff --git a/images/breeze/output_release-management_release-prod-images.svg 
b/images/breeze/output_release-management_release-prod-images.svg
index 76922057e1..f1e6d24f2c 100644
--- a/images/breeze/output_release-management_release-prod-images.svg
+++ b/images/breeze/output_release-management_release-prod-images.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 660.0" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 782.0" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -45,7 +45,7 @@
 
     <defs>
     <clipPath id="breeze-release-management-release-prod-images-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="609.0" />
+      <rect x="0" y="0" width="1463.0" height="731.0" />
     </clipPath>
     <clipPath id="breeze-release-management-release-prod-images-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -119,9 +119,24 @@
 <clipPath id="breeze-release-management-release-prod-images-line-23">
     <rect x="0" y="562.7" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-release-management-release-prod-images-line-24">
+    <rect x="0" y="587.1" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-release-prod-images-line-25">
+    <rect x="0" y="611.5" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-release-prod-images-line-26">
+    <rect x="0" y="635.9" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-release-prod-images-line-27">
+    <rect x="0" y="660.3" width="1464" height="24.65"/>
+            </clipPath>
+<clipPath id="breeze-release-management-release-prod-images-line-28">
+    <rect x="0" y="684.7" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="658" rx="8"/><text 
class="breeze-release-management-release-prod-images-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;release-prod-images</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="780" rx="8"/><text 
class="breeze-release-management-release-prod-images-title" fill="#c5c8c6" 
text-anchor="middle" x="740" 
y="27">Command:&#160;release-management&#160;release-prod-images</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -137,25 +152,30 @@
 </text><text class="breeze-release-management-release-prod-images-r1" x="12.2" 
y="93.2" textLength="841.8" 
clip-path="url(#breeze-release-management-release-prod-images-line-3)">Release&#160;production&#160;images&#160;to&#160;DockerHub&#160;(needs&#160;DockerHub&#160;permissions).</text><text
 class="breeze-release-management-release-prod-images-r1" x="1464" y="93.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-3)">
 </text><text class="breeze-release-management-release-prod-images-r1" x="1464" 
y="117.6" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-4)">
 </text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="142" textLength="24.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-5)">╭─</text><text
 class="breeze-release-management-release-prod-images-r5" x="24.4" y="142" 
textLength="317.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-5)">&#160;Release&#160;PROD&#160;IMAGE&#160;flags&#160;</text><text
 class="breeze-release-management-release-prod-images-r5" x="341.6" y="142" t 
[...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-6)">│</text><text
 class="breeze-release-management-release-prod-images-r6" x="24.4" y="166.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-6)">*</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="166.4" 
textLength="12.2" clip-path="url(#breeze-release-m [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="190.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-7)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="190.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-7)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="190.8" 
textLength="122" clip-path="url(#breeze-release-ma [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="215.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-8)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="215.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-8)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="215.2" 
textLength="61" clip-path="url(#breeze-release-man [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-9)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="239.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-9)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="239.6" 
textLength="73.2" clip-path="url(#breeze-release-m [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-10)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="317.2" y="264" 
textLength="1122.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-10)">available&#160;python&#160;versions)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-11)">│</text><text
 class="breeze-release-management-release-prod-images-r7" x="317.2" y="288.4" 
textLength="1122.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-11)">(3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-12)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="312.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-12)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="312.8" 
textLength="73.2" clip-path="url(#breeze-release [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-13)">│</text><text
 class="breeze-release-management-release-prod-images-r7" x="317.2" y="337.2" 
textLength="1122.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-13)">(linux/amd64&#160;|&#160;linux/arm64&#160;|&#160;linux/amd64,linux/arm64)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-14)">│</text><text
 class="breeze-release-management-release-prod-images-r5" x="317.2" y="361.6" 
textLength="1122.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-14)">[default:&#160;linux/amd64,linux/arm64]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#16
 [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="386" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-15)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="386" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-15)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="386" 
textLength="61" clip-path="url(#breeze-release-managem [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="410.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-16)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="317.2" y="410.4" 
textLength="1122.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-16)">should&#160;only&#160;be&#160;used&#160;if&#160;you&#160;release&#160;image&#160;for&#160;previous&#160;branches.&#160;Automatically&
 [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-17)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="317.2" y="434.8" 
textLength="1122.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-17)">rc/alpha/beta&#160;images&#160;are&#160;built.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#1
 [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="459.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-18)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="459.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-18)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="459.2" 
textLength="85.4" clip-path="url(#breeze-release [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="483.6" textLength="1464" 
clip-path="url(#breeze-release-management-release-prod-images-line-19)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-release-prod-images-r1" x="1464" y="483.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-19)">
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="508" textLength="24.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-20)">╭─</text><text
 class="breeze-release-management-release-prod-images-r5" x="24.4" y="508" 
textLength="195.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-20)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-release-prod-images-r5" x="219.6" y="508" 
textLength="1220" c [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-21)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="24.4" y="532.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-21)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="36.6" y="532.4" 
textLength="97.6" clip-path="url(#breeze-relea [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="556.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-22)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="24.4" y="556.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-22)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="36.6" y="556.8" 
textLength="48.8" clip-path="url(#breeze-relea [...]
-</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-23)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="24.4" y="581.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-23)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="36.6" y="581.2" 
textLength="61" clip-path="url(#breeze-release [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="166.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-6)">│</text><text
 class="breeze-release-management-release-prod-images-r6" x="24.4" y="166.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-6)">*</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="166.4" 
textLength="12.2" clip-path="url(#breeze-release-m [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="190.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-7)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="190.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-7)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="190.8" 
textLength="122" clip-path="url(#breeze-release-ma [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="215.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-8)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="215.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-8)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="215.2" 
textLength="61" clip-path="url(#breeze-release-man [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="239.6" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-9)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="239.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-9)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="239.6" 
textLength="73.2" clip-path="url(#breeze-release-m [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="264" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-10)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="390.4" y="264" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-10)">all&#160;available&#160;python&#160;versions)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="288.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-11)">│</text><text
 class="breeze-release-management-release-prod-images-r7" x="390.4" y="288.4" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-11)">(3.8&#160;|&#160;3.9&#160;|&#160;3.10&#160;|&#160;3.11)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="312.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-12)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="312.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-12)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="312.8" 
textLength="73.2" clip-path="url(#breeze-release [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="337.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-13)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="390.4" y="337.2" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-13)">built.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="361.6" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-14)">│</text><text
 class="breeze-release-management-release-prod-images-r7" x="390.4" y="361.6" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-14)">(linux/amd64&#160;|&#160;linux/arm64&#160;|&#160;linux/amd64,linux/arm64)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="386" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-15)">│</text><text
 class="breeze-release-management-release-prod-images-r5" x="390.4" y="386" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-15)">[default:&#160;linux/amd64,linux/arm64]&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="410.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-16)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="410.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-16)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="410.4" 
textLength="61" clip-path="url(#breeze-release-m [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="434.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-17)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="390.4" y="434.8" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-17)">updated).&#160;This&#160;should&#160;only&#160;be&#160;used&#160;if&#160;you&#160;release&#160;image&#160;for&#160;previous&#160;bran
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="459.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-18)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="390.4" y="459.2" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-18)">Automatically&#160;set&#160;when&#160;rc/alpha/beta&#160;images&#160;are&#160;built.&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="483.6" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-19)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="483.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-19)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="483.6" 
textLength="85.4" clip-path="url(#breeze-release [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="508" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-20)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="61" y="508" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-20)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="73.2" y="508" 
textLength="97.6" clip-path="url(#breeze-release-manag [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="532.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-21)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="390.4" y="532.4" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-21)">current_version&#160;and&#160;should&#160;be&#160;installed&#160;in&#160;CI&#160;from&#160;locally&#160;built&#160;packages&#160;with
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="556.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-22)">│</text><text
 class="breeze-release-management-release-prod-images-r1" x="390.4" y="556.8" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-22)">current_version.dev0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160
 [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="581.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-23)">│</text><text
 class="breeze-release-management-release-prod-images-r7" x="390.4" y="581.2" 
textLength="1049.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-23)">(TEXT)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&
 [...]
 </text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="605.6" textLength="1464" 
clip-path="url(#breeze-release-management-release-prod-images-line-24)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-release-prod-images-r1" x="1464" y="605.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-24)">
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="630" textLength="24.4" 
clip-path="url(#breeze-release-management-release-prod-images-line-25)">╭─</text><text
 class="breeze-release-management-release-prod-images-r5" x="24.4" y="630" 
textLength="195.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-25)">&#160;Common&#160;options&#160;</text><text
 class="breeze-release-management-release-prod-images-r5" x="219.6" y="630" 
textLength="1220" c [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="654.4" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-26)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="24.4" y="654.4" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-26)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="36.6" y="654.4" 
textLength="97.6" clip-path="url(#breeze-relea [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="678.8" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-27)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="24.4" y="678.8" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-27)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="36.6" y="678.8" 
textLength="48.8" clip-path="url(#breeze-relea [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="703.2" textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-28)">│</text><text
 class="breeze-release-management-release-prod-images-r4" x="24.4" y="703.2" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-28)">-</text><text
 class="breeze-release-management-release-prod-images-r4" x="36.6" y="703.2" 
textLength="61" clip-path="url(#breeze-release [...]
+</text><text class="breeze-release-management-release-prod-images-r5" x="0" 
y="727.6" textLength="1464" 
clip-path="url(#breeze-release-management-release-prod-images-line-29)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-release-management-release-prod-images-r1" x="1464" y="727.6" 
textLength="12.2" 
clip-path="url(#breeze-release-management-release-prod-images-line-29)">
 </text>
     </g>
     </g>
diff --git a/images/breeze/output_release-management_release-prod-images.txt 
b/images/breeze/output_release-management_release-prod-images.txt
index 0397b63e19..58827ed619 100644
--- a/images/breeze/output_release-management_release-prod-images.txt
+++ b/images/breeze/output_release-management_release-prod-images.txt
@@ -1 +1 @@
-cfbfe8b19fee91fd90718f98ef2fd078
+4c5c364cc00355ac02debacc48447be8


Reply via email to