This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v2-11-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v2-11-test by this push:
new e89f1856066 [v2-11-test] Fail prod image release when constraint build
fails (#62387) (#62837)
e89f1856066 is described below
commit e89f1856066ba54fcb4b3f87bf8e40f112eac55e
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Mar 4 01:27:21 2026 +0100
[v2-11-test] Fail prod image release when constraint build fails (#62387)
(#62837)
When constraint build fails, building prod and ci image by default
fall back to "no-constraints" build in order to account for
newly added or modified dependencies that conflict with constraints,
however in case of release build, such fallback should not happen -
simply the build should fail if constraints are conflicting.
This avoids the case that we had with virtualenv being removed
from PyPI https://github.com/pypa/virtualenv/issues/3061
(cherry picked from commit 62121a098c0af6b1b454645d8b1262f92cc0c88b)
Closes: #62349
---
Dockerfile | 9 ++
Dockerfile.ci | 10 ++
dev/breeze/doc/images/output_prod-image_build.svg | 148 ++++++++++++---------
dev/breeze/doc/images/output_prod-image_build.txt | 2 +-
.../commands/common_image_options.py | 8 ++
.../commands/production_image_commands.py | 4 +
.../commands/production_image_commands_config.py | 1 +
.../src/airflow_breeze/params/build_prod_params.py | 4 +
scripts/docker/install_airflow.sh | 6 +
9 files changed, 131 insertions(+), 61 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index fce03ff38c9..1c865dafea3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -843,6 +843,12 @@ function install_airflow() {
# Install all packages with constraints
if ! ${PACKAGING_TOOL_CMD} install ${EXTRA_INSTALL_FLAGS}
${ADDITIONAL_PIP_INSTALL_FLAGS} ${installation_command_flags} --constraint
"${HOME}/constraints.txt"; then
set +x
+ if [[ ${AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION} != "true"
]]; then
+ echo
+ echo "${COLOR_RED}Failing because constraints installation
failed and fallback is disabled.${COLOR_RESET}"
+ echo
+ exit 1
+ fi
echo
echo "${COLOR_YELLOW}Likely pyproject.toml has new dependencies
conflicting with constraints.${COLOR_RESET}"
echo
@@ -1364,6 +1370,8 @@ ARG AIRFLOW_CONSTRAINTS_MODE="constraints"
ARG AIRFLOW_CONSTRAINTS_REFERENCE=""
ARG AIRFLOW_CONSTRAINTS_LOCATION=""
ARG DEFAULT_CONSTRAINTS_BRANCH="constraints-main"
+# By default do not fallback to installation without constraints because it
can hide problems with constraints
+ARG AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION="false"
# By default PIP has progress bar but you can disable it.
ARG PIP_PROGRESS_BAR
@@ -1416,6 +1424,7 @@ ENV AIRFLOW_PIP_VERSION=${AIRFLOW_PIP_VERSION} \
AIRFLOW_CONSTRAINTS_MODE=${AIRFLOW_CONSTRAINTS_MODE} \
AIRFLOW_CONSTRAINTS_REFERENCE=${AIRFLOW_CONSTRAINTS_REFERENCE} \
AIRFLOW_CONSTRAINTS_LOCATION=${AIRFLOW_CONSTRAINTS_LOCATION} \
+
AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION=${AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION}
\
DEFAULT_CONSTRAINTS_BRANCH=${DEFAULT_CONSTRAINTS_BRANCH} \
PATH=${AIRFLOW_USER_HOME_DIR}/.local/bin:${PATH} \
PIP_PROGRESS_BAR=${PIP_PROGRESS_BAR} \
diff --git a/Dockerfile.ci b/Dockerfile.ci
index 7fd4d96f5a8..0cd350201ac 100644
--- a/Dockerfile.ci
+++ b/Dockerfile.ci
@@ -608,6 +608,12 @@ function install_airflow() {
# Install all packages with constraints
if ! ${PACKAGING_TOOL_CMD} install ${EXTRA_INSTALL_FLAGS}
${ADDITIONAL_PIP_INSTALL_FLAGS} ${installation_command_flags} --constraint
"${HOME}/constraints.txt"; then
set +x
+ if [[ ${AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION} != "true"
]]; then
+ echo
+ echo "${COLOR_RED}Failing because constraints installation
failed and fallback is disabled.${COLOR_RESET}"
+ echo
+ exit 1
+ fi
echo
echo "${COLOR_YELLOW}Likely pyproject.toml has new dependencies
conflicting with constraints.${COLOR_RESET}"
echo
@@ -1188,6 +1194,9 @@ ARG
AIRFLOW_CONSTRAINTS_MODE="constraints-source-providers"
ARG AIRFLOW_CONSTRAINTS_REFERENCE=""
ARG AIRFLOW_CONSTRAINTS_LOCATION=""
ARG DEFAULT_CONSTRAINTS_BRANCH="constraints-main"
+# By default fallback to installation without constraints because in CI image
it should always be tried
+ARG AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION="true"
+
# By changing the epoch we can force reinstalling Airflow and pip all
dependencies
# It can also be overwritten manually by setting the AIRFLOW_CI_BUILD_EPOCH
environment variable.
ARG AIRFLOW_CI_BUILD_EPOCH="10"
@@ -1217,6 +1226,7 @@ ENV AIRFLOW_REPO=${AIRFLOW_REPO}\
AIRFLOW_CONSTRAINTS_MODE=${AIRFLOW_CONSTRAINTS_MODE} \
AIRFLOW_CONSTRAINTS_REFERENCE=${AIRFLOW_CONSTRAINTS_REFERENCE} \
AIRFLOW_CONSTRAINTS_LOCATION=${AIRFLOW_CONSTRAINTS_LOCATION} \
+
AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION=${AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION}
\
DEFAULT_CONSTRAINTS_BRANCH=${DEFAULT_CONSTRAINTS_BRANCH} \
AIRFLOW_CI_BUILD_EPOCH=${AIRFLOW_CI_BUILD_EPOCH} \
AIRFLOW_VERSION=${AIRFLOW_VERSION} \
diff --git a/dev/breeze/doc/images/output_prod-image_build.svg
b/dev/breeze/doc/images/output_prod-image_build.svg
index fbcc5084e0a..756bfd8f4f3 100644
--- a/dev/breeze/doc/images/output_prod-image_build.svg
+++ b/dev/breeze/doc/images/output_prod-image_build.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2514.3999999999996"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 2685.2"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-prod-image-build-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="2463.3999999999996" />
+ <rect x="0" y="0" width="1463.0" height="2634.2" />
</clipPath>
<clipPath id="breeze-prod-image-build-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -345,9 +345,30 @@
<clipPath id="breeze-prod-image-build-line-99">
<rect x="0" y="2417.1" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-prod-image-build-line-100">
+ <rect x="0" y="2441.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-prod-image-build-line-101">
+ <rect x="0" y="2465.9" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-prod-image-build-line-102">
+ <rect x="0" y="2490.3" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-prod-image-build-line-103">
+ <rect x="0" y="2514.7" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-prod-image-build-line-104">
+ <rect x="0" y="2539.1" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-prod-image-build-line-105">
+ <rect x="0" y="2563.5" width="1464" height="24.65"/>
+ </clipPath>
+<clipPath id="breeze-prod-image-build-line-106">
+ <rect x="0" y="2587.9" 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="2512.4" rx="8"/><text
class="breeze-prod-image-build-title" fill="#c5c8c6" text-anchor="middle"
x="740" y="27">Command: prod-image build</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="2683.2" rx="8"/><text
class="breeze-prod-image-build-title" fill="#c5c8c6" text-anchor="middle"
x="740" y="27">Command: prod-image build</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -401,63 +422,70 @@
</text><text class="breeze-prod-image-build-r5" x="0" y="1020.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-41)">│</text><text
class="breeze-prod-image-build-r5" x="439.2" y="1020.4" textLength="829.6"
clip-path="url(#breeze-prod-image-build-line-41)">[default: 300; x>=1]                               &
[...]
</text><text class="breeze-prod-image-build-r5" x="0" y="1044.8"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-42)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="1044.8" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-42)">
</text><text class="breeze-prod-image-build-r5" x="0" y="1069.2"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-43)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="1069.2" textLength="597.8"
clip-path="url(#breeze-prod-image-build-line-43)"> Selecting constraint location (for power users) </text><text
class="breeze-prod-image-build-r5" x="622.2" y="1069.2" textLength="817.4"
clip-path="url(#breeze-prod-image-build-line-43) [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1093.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-44)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1093.6" textLength="366"
clip-path="url(#breeze-prod-image-build-line-44)">--airflow-constraints-location</text><text
class="breeze-prod-image-build-r1" x="451.4" y="1093.6" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-44)">Location of airflow constraints to&
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1118"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-45)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1118" textLength="317.2"
clip-path="url(#breeze-prod-image-build-line-45)">--airflow-constraints-mode</text><text
class="breeze-prod-image-build-r1" x="451.4" y="1118" textLength="866.2"
clip-path="url(#breeze-prod-image-build-line-45)">Mode of constraints for Airflow for
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1142.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-46)">│</text><text
class="breeze-prod-image-build-r6" x="451.4" y="1142.4" textLength="866.2"
clip-path="url(#breeze-prod-image-build-line-46)">(constraints | constraints-no-providers | constraints-source-providers)</text><text
class="breeze-prod-image-build-r5" x="1451.8" y="1142.4" textLength="12.2"
clip-path="url(#breeze-prod-image-build-l [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1166.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-47)">│</text><text
class="breeze-prod-image-build-r5" x="451.4" y="1166.8" textLength="866.2"
clip-path="url(#breeze-prod-image-build-line-47)">[default: constraints]                                &
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1191.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-48)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1191.2" textLength="378.2"
clip-path="url(#breeze-prod-image-build-line-48)">--airflow-constraints-reference</text><text
class="breeze-prod-image-build-r1" x="451.4" y="1191.2" textLength="634.4"
clip-path="url(#breeze-prod-image-build-line-48)">Constraint reference to use when
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1215.6"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-49)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="1215.6" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-49)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="1240"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-50)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="1240" textLength="634.4"
clip-path="url(#breeze-prod-image-build-line-50)"> Choosing dependencies and extras (for power users) </text><text
class="breeze-prod-image-build-r5" x="658.8" y="1240" textLength="780.8"
clip-path="url(#breeze-prod-image-build-line-5 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1264.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-51)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1264.4" textLength="195.2"
clip-path="url(#breeze-prod-image-build-line-51)">--airflow-extras</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1264.4" textLength="976"
clip-path="url(#breeze-prod-image-build-line-51)">Extras to install by default.   &#
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1288.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-52)">│</text><text
class="breeze-prod-image-build-r6" x="463.6" y="1288.8" textLength="976"
clip-path="url(#breeze-prod-image-build-line-52)">(TEXT)                                    
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1313.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-53)">│</text><text
class="breeze-prod-image-build-r5" x="463.6" y="1313.2" textLength="976"
clip-path="url(#breeze-prod-image-build-line-53)">[default:                                   
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1337.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-54)">│</text><text
class="breeze-prod-image-build-r5" x="463.6" y="1337.6" textLength="976"
clip-path="url(#breeze-prod-image-build-line-54)">aiobotocore,amazon,async,celery,cncf-kubernetes,common-io,docker,elasticsearch,…</text><text
class="breeze-prod-image-build-r5" x="1451.8" y="1337.6" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-54)">│</t [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1362"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-55)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1362" textLength="329.4"
clip-path="url(#breeze-prod-image-build-line-55)">--additional-airflow-extras</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1362" textLength="768.6"
clip-path="url(#breeze-prod-image-build-line-55)">Additional extra package while installing&
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1386.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-56)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1386.4" textLength="292.8"
clip-path="url(#breeze-prod-image-build-line-56)">--additional-python-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1386.4" textLength="768.6"
clip-path="url(#breeze-prod-image-build-line-56)">Additional python dependencies to use&#
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1410.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-57)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1410.8" textLength="170.8"
clip-path="url(#breeze-prod-image-build-line-57)">--dev-apt-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1410.8" textLength="646.6"
clip-path="url(#breeze-prod-image-build-line-57)">Apt dev dependencies to use when buildi
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1435.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-58)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1435.2" textLength="305"
clip-path="url(#breeze-prod-image-build-line-58)">--additional-dev-apt-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1435.2" textLength="780.8"
clip-path="url(#breeze-prod-image-build-line-58)">Additional apt dev dependencies to 
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1459.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-59)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1459.6" textLength="207.4"
clip-path="url(#breeze-prod-image-build-line-59)">--dev-apt-command</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1459.6" textLength="622.2"
clip-path="url(#breeze-prod-image-build-line-59)">Command executed before dev apt deps 
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1484"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-60)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1484" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-60)">--additional-dev-apt-command</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1484" textLength="756.4"
clip-path="url(#breeze-prod-image-build-line-60)">Additional command executed before dev
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1508.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-61)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1508.4" textLength="292.8"
clip-path="url(#breeze-prod-image-build-line-61)">--additional-dev-apt-env</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1508.4" textLength="805.2"
clip-path="url(#breeze-prod-image-build-line-61)">Additional environment variables set wh
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1532.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-62)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1532.8" textLength="219.6"
clip-path="url(#breeze-prod-image-build-line-62)">--runtime-apt-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1532.8" textLength="695.4"
clip-path="url(#breeze-prod-image-build-line-62)">Apt runtime dependencies to use when
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1557.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-63)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1557.2" textLength="353.8"
clip-path="url(#breeze-prod-image-build-line-63)">--additional-runtime-apt-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1557.2" textLength="829.6"
clip-path="url(#breeze-prod-image-build-line-63)">Additional apt runtime dependencies
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1581.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-64)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1581.6" textLength="256.2"
clip-path="url(#breeze-prod-image-build-line-64)">--runtime-apt-command</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1581.6" textLength="671"
clip-path="url(#breeze-prod-image-build-line-64)">Command executed before runtime apt dep
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1606"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-65)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1606" textLength="390.4"
clip-path="url(#breeze-prod-image-build-line-65)">--additional-runtime-apt-command</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1606" textLength="805.2"
clip-path="url(#breeze-prod-image-build-line-65)">Additional command executed before ru
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1630.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-66)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1630.4" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-66)">--additional-runtime-apt-env</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1630.4" textLength="854"
clip-path="url(#breeze-prod-image-build-line-66)">Additional environment variables set 
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1654.8"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="1654.8" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-67)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="1679.2"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-68)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="1679.2" textLength="817.4"
clip-path="url(#breeze-prod-image-build-line-68)"> Advanced customization options (for specific customization needs) </text><text
class="breeze-prod-image-build-r5" x="841.8" y="1679.2" textLength="597.8"
clip-path="url(#breeze-pr [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1703.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-69)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1703.6" textLength="256.2"
clip-path="url(#breeze-prod-image-build-line-69)">--installation-method</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1703.6" textLength="463.6"
clip-path="url(#breeze-prod-image-build-line-69)">Install Airflow from: sources or PyPI
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1728"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-70)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1728" textLength="329.4"
clip-path="url(#breeze-prod-image-build-line-70)">--install-airflow-reference</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1728" textLength="524.6"
clip-path="url(#breeze-prod-image-build-line-70)">Install Airflow using GitHub tag or&#
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1752.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-71)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1752.4" textLength="378.2"
clip-path="url(#breeze-prod-image-build-line-71)">--install-packages-from-context</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1752.4" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-71)">Install wheels from local docker
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1776.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-72)">│</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1776.8" textLength="97.6"
clip-path="url(#breeze-prod-image-build-line-72)">Implies </text><text
class="breeze-prod-image-build-r4" x="634.4" y="1776.8" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-72)">--disable-airflow-repo-cache</text><text
class="breeze-prod-image-buil [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1801.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-73)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1801.2" textLength="329.4"
clip-path="url(#breeze-prod-image-build-line-73)">--install-mysql-client-type</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1801.2" textLength="475.8"
clip-path="url(#breeze-prod-image-build-line-73)">Which client to choose when ins
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1825.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-74)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1825.6" textLength="207.4"
clip-path="url(#breeze-prod-image-build-line-74)">--cleanup-context</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1825.6" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-74)">Clean up docker context files before 
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1850"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-75)">│</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1850" textLength="170.8"
clip-path="url(#breeze-prod-image-build-line-75)">together with </text><text
class="breeze-prod-image-build-r4" x="707.6" y="1850" textLength="378.2"
clip-path="url(#breeze-prod-image-build-line-75)">--install-packages-from-context</text><text
class="breeze-prod-i [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1874.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-76)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1874.4" textLength="463.6"
clip-path="url(#breeze-prod-image-build-line-76)">--use-constraints-for-context-packages</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1874.4" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-76)">Uses constraints for context&#
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1898.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-77)">│</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1898.8" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-77)">constraints store in docker-context-files or from github.                 </text><text
class="breeze-prod [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1923.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-78)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1923.2" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-78)">--disable-airflow-repo-cache</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1923.2" textLength="658.8"
clip-path="url(#breeze-prod-image-build-line-78)">Disable cache from Airflow reposito
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1947.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-79)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1947.6" textLength="427"
clip-path="url(#breeze-prod-image-build-line-79)">--disable-mysql-client-installation</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1947.6" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-79)">Do not install MySQL client.</
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1972"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-80)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1972" textLength="427"
clip-path="url(#breeze-prod-image-build-line-80)">--disable-mssql-client-installation</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1972" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-80)">Do not install MsSQl client.</text><
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="1996.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-81)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1996.4" textLength="463.6"
clip-path="url(#breeze-prod-image-build-line-81)">--disable-postgres-client-installation</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1996.4" textLength="378.2"
clip-path="url(#breeze-prod-image-build-line-81)">Do not install Postgres c
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2020.8"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-82)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2020.8" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-82)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="2045.2"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-83)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="2045.2" textLength="622.2"
clip-path="url(#breeze-prod-image-build-line-83)"> Preparing cache and push (for maintainers and CI) </text><text
class="breeze-prod-image-build-r5" x="646.6" y="2045.2" textLength="793"
clip-path="url(#breeze-prod-image-buil [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2069.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-84)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2069.6" textLength="109.8"
clip-path="url(#breeze-prod-image-build-line-84)">--builder</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2069.6" textLength="756.4"
clip-path="url(#breeze-prod-image-build-line-84)">Buildx builder used to perform `docker build
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2094"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-85)">│</text><text
class="breeze-prod-image-build-r5" x="341.6" y="2094" textLength="756.4"
clip-path="url(#breeze-prod-image-build-line-85)">[default: autodetect]                                 
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2118.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-86)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2118.4" textLength="122"
clip-path="url(#breeze-prod-image-build-line-86)">--platform</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2118.4" textLength="329.4"
clip-path="url(#breeze-prod-image-build-line-86)">Platform for Airflow image.</text><text
class="breeze-prod-i [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2142.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-87)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2142.8" textLength="73.2"
clip-path="url(#breeze-prod-image-build-line-87)">--push</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2142.8" textLength="353.8"
clip-path="url(#breeze-prod-image-build-line-87)">Push image after building it.</text><text
class="breeze-pr [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2167.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-88)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2167.2" textLength="268.4"
clip-path="url(#breeze-prod-image-build-line-88)">--prepare-buildx-cache</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2167.2" textLength="1098"
clip-path="url(#breeze-prod-image-build-line-88)">Prepares build cache (this is done
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2191.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-89)">│</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2191.6" textLength="1098"
clip-path="url(#breeze-prod-image-build-line-89)">image).                                   
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2216"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-90)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2216" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-90)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="2240.4"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-91)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="2240.4" textLength="280.6"
clip-path="url(#breeze-prod-image-build-line-91)"> Github authentication </text><text
class="breeze-prod-image-build-r5" x="305" y="2240.4" textLength="1134.6"
clip-path="url(#breeze-prod-image-build-line-91)">─────────────────────────────────────────────
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2264.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-92)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2264.8" textLength="231.8"
clip-path="url(#breeze-prod-image-build-line-92)">--github-repository</text><text
class="breeze-prod-image-build-r7" x="280.6" y="2264.8" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-92)">-g</text><text
class="breeze-prod-image-build-r1" x="329.4" y="22 [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2289.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-93)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2289.2" textLength="170.8"
clip-path="url(#breeze-prod-image-build-line-93)">--github-token</text><text
class="breeze-prod-image-build-r1" x="329.4" y="2289.2" textLength="500.2"
clip-path="url(#breeze-prod-image-build-line-93)">The token used to authenticate to GitHu
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2313.6"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-94)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2313.6" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-94)">
-</text><text class="breeze-prod-image-build-r5" x="0" y="2338"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-95)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="2338" textLength="195.2"
clip-path="url(#breeze-prod-image-build-line-95)"> Common options </text><text
class="breeze-prod-image-build-r5" x="219.6" y="2338" textLength="1220"
clip-path="url(#breeze-prod-image-build-line-95)">──────────────────────────────────────────────────────────
[...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2362.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-96)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2362.4" textLength="97.6"
clip-path="url(#breeze-prod-image-build-line-96)">--answer</text><text
class="breeze-prod-image-build-r7" x="158.6" y="2362.4" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-96)">-a</text><text
class="breeze-prod-image-build-r1" x="207.4" y="2362.4" textLe [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2386.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-97)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2386.8" textLength="109.8"
clip-path="url(#breeze-prod-image-build-line-97)">--dry-run</text><text
class="breeze-prod-image-build-r7" x="158.6" y="2386.8" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-97)">-D</text><text
class="breeze-prod-image-build-r1" x="207.4" y="2386.8" text [...]
-</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="109.8"
clip-path="url(#breeze-prod-image-build-line-98)">--verbose</text><text
class="breeze-prod-image-build-r7" x="158.6" y="2411.2" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-98)">-v</text><text
class="breeze-prod-image-build-r1" x="207.4" y="2411.2" text [...]
-</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="73.2"
clip-path="url(#breeze-prod-image-build-line-99)">--help</text><text
class="breeze-prod-image-build-r7" x="158.6" y="2435.6" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-99)">-h</text><text
class="breeze-prod-image-build-r1" x="207.4" y="2435.6" textLeng [...]
-</text><text class="breeze-prod-image-build-r5" x="0" y="2460"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-100)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2460" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-100)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="1093.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-44)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1093.6" textLength="366"
clip-path="url(#breeze-prod-image-build-line-44)">--airflow-constraints-location</text><text
class="breeze-prod-image-build-r1" x="756.4" y="1093.6" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-44)">Location of airflow constraints to&
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1118"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-45)">│</text><text
class="breeze-prod-image-build-r1" x="756.4" y="1118" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-45)">local context file).                                &#
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1142.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-46)">│</text><text
class="breeze-prod-image-build-r6" x="756.4" y="1142.4" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-46)">(TEXT)                                   
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1166.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-47)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1166.8" textLength="317.2"
clip-path="url(#breeze-prod-image-build-line-47)">--airflow-constraints-mode</text><text
class="breeze-prod-image-build-r1" x="756.4" y="1166.8" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-47)">Mode of constraints for Airflow 
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1191.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-48)">│</text><text
class="breeze-prod-image-build-r6" x="756.4" y="1191.2" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-48)">(constraints | constraints-no-providers |               </text><text
class="breeze-prod-image-build-r5" x="1451.8" y="1191.2" text [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1215.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-49)">│</text><text
class="breeze-prod-image-build-r6" x="756.4" y="1215.6" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-49)">constraints-source-providers)                           </text><text
class="breeze-pr [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1240"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-50)">│</text><text
class="breeze-prod-image-build-r5" x="756.4" y="1240" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-50)">[default: constraints]                                 
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1264.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-51)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1264.4" textLength="378.2"
clip-path="url(#breeze-prod-image-build-line-51)">--airflow-constraints-reference</text><text
class="breeze-prod-image-build-r1" x="756.4" y="1264.4" textLength="634.4"
clip-path="url(#breeze-prod-image-build-line-51)">Constraint reference to use when
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1288.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-52)">│</text><text
class="breeze-prod-image-build-r6" x="756.4" y="1288.8" textLength="634.4"
clip-path="url(#breeze-prod-image-build-line-52)">(TEXT)                                   
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1313.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-53)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1313.2" textLength="561.2"
clip-path="url(#breeze-prod-image-build-line-53)">--airflow-fallback-no-constraints-installation</text><text
class="breeze-prod-image-build-r1" x="585.6" y="1313.2" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-53)">/</text><text
class="breeze-prod-image [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1337.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-54)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1337.6" textLength="488"
clip-path="url(#breeze-prod-image-build-line-54)">low-fallback-no-constraints-installation</text><text
class="breeze-prod-image-build-r1" x="756.4" y="1337.6" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-54)">installation fails.   
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1362"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-55)">│</text><text
class="breeze-prod-image-build-r5" x="756.4" y="1362" textLength="683.2"
clip-path="url(#breeze-prod-image-build-line-55)">[default: airflow-fallback-no-constraints-installation] </text><text
class="breeze-prod-image-build-r5" x="1451.8" y="1362" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-55)">│</text><text class="b [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1386.4"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-56)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="1386.4" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-56)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="1410.8"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-57)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="1410.8" textLength="634.4"
clip-path="url(#breeze-prod-image-build-line-57)"> Choosing dependencies and extras (for power users) </text><text
class="breeze-prod-image-build-r5" x="658.8" y="1410.8" textLength="780.8"
clip-path="url(#breeze-prod-image-build- [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1435.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-58)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1435.2" textLength="195.2"
clip-path="url(#breeze-prod-image-build-line-58)">--airflow-extras</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1435.2" textLength="976"
clip-path="url(#breeze-prod-image-build-line-58)">Extras to install by default.   &#
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1459.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-59)">│</text><text
class="breeze-prod-image-build-r6" x="463.6" y="1459.6" textLength="976"
clip-path="url(#breeze-prod-image-build-line-59)">(TEXT)                                    
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1484"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-60)">│</text><text
class="breeze-prod-image-build-r5" x="463.6" y="1484" textLength="976"
clip-path="url(#breeze-prod-image-build-line-60)">[default:                                    &
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1508.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-61)">│</text><text
class="breeze-prod-image-build-r5" x="463.6" y="1508.4" textLength="976"
clip-path="url(#breeze-prod-image-build-line-61)">aiobotocore,amazon,async,celery,cncf-kubernetes,common-io,docker,elasticsearch,…</text><text
class="breeze-prod-image-build-r5" x="1451.8" y="1508.4" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-61)">│</t [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1532.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-62)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1532.8" textLength="329.4"
clip-path="url(#breeze-prod-image-build-line-62)">--additional-airflow-extras</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1532.8" textLength="768.6"
clip-path="url(#breeze-prod-image-build-line-62)">Additional extra package while insta
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1557.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-63)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1557.2" textLength="292.8"
clip-path="url(#breeze-prod-image-build-line-63)">--additional-python-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1557.2" textLength="768.6"
clip-path="url(#breeze-prod-image-build-line-63)">Additional python dependencies to use&#
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1581.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-64)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1581.6" textLength="170.8"
clip-path="url(#breeze-prod-image-build-line-64)">--dev-apt-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1581.6" textLength="646.6"
clip-path="url(#breeze-prod-image-build-line-64)">Apt dev dependencies to use when buildi
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1606"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-65)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1606" textLength="305"
clip-path="url(#breeze-prod-image-build-line-65)">--additional-dev-apt-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1606" textLength="780.8"
clip-path="url(#breeze-prod-image-build-line-65)">Additional apt dev dependencies to use
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1630.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-66)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1630.4" textLength="207.4"
clip-path="url(#breeze-prod-image-build-line-66)">--dev-apt-command</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1630.4" textLength="622.2"
clip-path="url(#breeze-prod-image-build-line-66)">Command executed before dev apt deps 
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1654.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-67)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1654.8" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-67)">--additional-dev-apt-command</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1654.8" textLength="756.4"
clip-path="url(#breeze-prod-image-build-line-67)">Additional command executed before 
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1679.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-68)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1679.2" textLength="292.8"
clip-path="url(#breeze-prod-image-build-line-68)">--additional-dev-apt-env</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1679.2" textLength="805.2"
clip-path="url(#breeze-prod-image-build-line-68)">Additional environment variables set wh
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1703.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-69)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1703.6" textLength="219.6"
clip-path="url(#breeze-prod-image-build-line-69)">--runtime-apt-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1703.6" textLength="695.4"
clip-path="url(#breeze-prod-image-build-line-69)">Apt runtime dependencies to use when
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1728"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-70)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1728" textLength="353.8"
clip-path="url(#breeze-prod-image-build-line-70)">--additional-runtime-apt-deps</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1728" textLength="829.6"
clip-path="url(#breeze-prod-image-build-line-70)">Additional apt runtime dependencies to&#
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1752.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-71)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1752.4" textLength="256.2"
clip-path="url(#breeze-prod-image-build-line-71)">--runtime-apt-command</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1752.4" textLength="671"
clip-path="url(#breeze-prod-image-build-line-71)">Command executed before runtime apt dep
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1776.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-72)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1776.8" textLength="390.4"
clip-path="url(#breeze-prod-image-build-line-72)">--additional-runtime-apt-command</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1776.8" textLength="805.2"
clip-path="url(#breeze-prod-image-build-line-72)">Additional command executed before&#
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1801.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-73)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1801.2" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-73)">--additional-runtime-apt-env</text><text
class="breeze-prod-image-build-r1" x="463.6" y="1801.2" textLength="854"
clip-path="url(#breeze-prod-image-build-line-73)">Additional environment variables set 
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1825.6"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-74)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="1825.6" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-74)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="1850"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-75)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="1850" textLength="817.4"
clip-path="url(#breeze-prod-image-build-line-75)"> Advanced customization options (for specific customization needs) </text><text
class="breeze-prod-image-build-r5" x="841.8" y="1850" textLength="597.8"
clip-path="url(#breeze-prod-ima [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1874.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-76)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1874.4" textLength="256.2"
clip-path="url(#breeze-prod-image-build-line-76)">--installation-method</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1874.4" textLength="463.6"
clip-path="url(#breeze-prod-image-build-line-76)">Install Airflow from: sources or PyPI
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1898.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-77)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1898.8" textLength="329.4"
clip-path="url(#breeze-prod-image-build-line-77)">--install-airflow-reference</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1898.8" textLength="524.6"
clip-path="url(#breeze-prod-image-build-line-77)">Install Airflow using GitHub tag
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1923.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-78)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1923.2" textLength="378.2"
clip-path="url(#breeze-prod-image-build-line-78)">--install-packages-from-context</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1923.2" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-78)">Install wheels from local docker
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1947.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-79)">│</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1947.6" textLength="97.6"
clip-path="url(#breeze-prod-image-build-line-79)">Implies </text><text
class="breeze-prod-image-build-r4" x="634.4" y="1947.6" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-79)">--disable-airflow-repo-cache</text><text
class="breeze-prod-image-buil [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1972"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-80)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1972" textLength="329.4"
clip-path="url(#breeze-prod-image-build-line-80)">--install-mysql-client-type</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1972" textLength="475.8"
clip-path="url(#breeze-prod-image-build-line-80)">Which client to choose when installin
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="1996.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-81)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="1996.4" textLength="207.4"
clip-path="url(#breeze-prod-image-build-line-81)">--cleanup-context</text><text
class="breeze-prod-image-build-r1" x="536.8" y="1996.4" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-81)">Clean up docker context files before 
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2020.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-82)">│</text><text
class="breeze-prod-image-build-r1" x="536.8" y="2020.8" textLength="170.8"
clip-path="url(#breeze-prod-image-build-line-82)">together with </text><text
class="breeze-prod-image-build-r4" x="707.6" y="2020.8" textLength="378.2"
clip-path="url(#breeze-prod-image-build-line-82)">--install-packages-from-context</text><text
class="breeze- [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2045.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-83)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2045.2" textLength="463.6"
clip-path="url(#breeze-prod-image-build-line-83)">--use-constraints-for-context-packages</text><text
class="breeze-prod-image-build-r1" x="536.8" y="2045.2" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-83)">Uses constraints for context&#
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2069.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-84)">│</text><text
class="breeze-prod-image-build-r1" x="536.8" y="2069.6" textLength="902.8"
clip-path="url(#breeze-prod-image-build-line-84)">constraints store in docker-context-files or from github.                 </text><text
class="breeze-prod [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2094"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-85)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2094" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-85)">--disable-airflow-repo-cache</text><text
class="breeze-prod-image-build-r1" x="536.8" y="2094" textLength="658.8"
clip-path="url(#breeze-prod-image-build-line-85)">Disable cache from Airflow repository
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2118.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-86)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2118.4" textLength="427"
clip-path="url(#breeze-prod-image-build-line-86)">--disable-mysql-client-installation</text><text
class="breeze-prod-image-build-r1" x="536.8" y="2118.4" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-86)">Do not install MySQL client.</
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2142.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-87)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2142.8" textLength="427"
clip-path="url(#breeze-prod-image-build-line-87)">--disable-mssql-client-installation</text><text
class="breeze-prod-image-build-r1" x="536.8" y="2142.8" textLength="341.6"
clip-path="url(#breeze-prod-image-build-line-87)">Do not install MsSQl client.</
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2167.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-88)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2167.2" textLength="463.6"
clip-path="url(#breeze-prod-image-build-line-88)">--disable-postgres-client-installation</text><text
class="breeze-prod-image-build-r1" x="536.8" y="2167.2" textLength="378.2"
clip-path="url(#breeze-prod-image-build-line-88)">Do not install Postgres c
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2191.6"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-89)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2191.6" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-89)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="2216"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-90)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="2216" textLength="622.2"
clip-path="url(#breeze-prod-image-build-line-90)"> Preparing cache and push (for maintainers and CI) </text><text
class="breeze-prod-image-build-r5" x="646.6" y="2216" textLength="793"
clip-path="url(#breeze-prod-image-build-line [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2240.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-91)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2240.4" textLength="109.8"
clip-path="url(#breeze-prod-image-build-line-91)">--builder</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2240.4" textLength="756.4"
clip-path="url(#breeze-prod-image-build-line-91)">Buildx builder used to perform `docker build
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2264.8"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-92)">│</text><text
class="breeze-prod-image-build-r5" x="341.6" y="2264.8" textLength="756.4"
clip-path="url(#breeze-prod-image-build-line-92)">[default: autodetect]                                &#
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2289.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-93)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2289.2" textLength="122"
clip-path="url(#breeze-prod-image-build-line-93)">--platform</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2289.2" textLength="329.4"
clip-path="url(#breeze-prod-image-build-line-93)">Platform for Airflow image.</text><text
class="breeze-prod-i [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2313.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-94)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2313.6" textLength="73.2"
clip-path="url(#breeze-prod-image-build-line-94)">--push</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2313.6" textLength="353.8"
clip-path="url(#breeze-prod-image-build-line-94)">Push image after building it.</text><text
class="breeze-pr [...]
+</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="268.4"
clip-path="url(#breeze-prod-image-build-line-95)">--prepare-buildx-cache</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2338" textLength="1098"
clip-path="url(#breeze-prod-image-build-line-95)">Prepares build cache (this is done as&
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2362.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-96)">│</text><text
class="breeze-prod-image-build-r1" x="341.6" y="2362.4" textLength="1098"
clip-path="url(#breeze-prod-image-build-line-96)">image).                                   
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2386.8"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-97)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2386.8" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-97)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="2411.2"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-98)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="2411.2" textLength="280.6"
clip-path="url(#breeze-prod-image-build-line-98)"> Github authentication </text><text
class="breeze-prod-image-build-r5" x="305" y="2411.2" textLength="1134.6"
clip-path="url(#breeze-prod-image-build-line-98)">─────────────────────────────────────────────
[...]
+</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="231.8"
clip-path="url(#breeze-prod-image-build-line-99)">--github-repository</text><text
class="breeze-prod-image-build-r7" x="280.6" y="2435.6" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-99)">-g</text><text
class="breeze-prod-image-build-r1" x="329.4" y="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="170.8"
clip-path="url(#breeze-prod-image-build-line-100)">--github-token</text><text
class="breeze-prod-image-build-r1" x="329.4" y="2460" textLength="500.2"
clip-path="url(#breeze-prod-image-build-line-100)">The token used to authenticate to GitHub.<
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2484.4"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-101)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2484.4" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-101)">
+</text><text class="breeze-prod-image-build-r5" x="0" y="2508.8"
textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-102)">╭─</text><text
class="breeze-prod-image-build-r5" x="24.4" y="2508.8" textLength="195.2"
clip-path="url(#breeze-prod-image-build-line-102)"> Common options </text><text
class="breeze-prod-image-build-r5" x="219.6" y="2508.8" textLength="1220"
clip-path="url(#breeze-prod-image-build-line-102)">─────────────────────────────────────────────────
[...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2533.2"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-103)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2533.2" textLength="97.6"
clip-path="url(#breeze-prod-image-build-line-103)">--answer</text><text
class="breeze-prod-image-build-r7" x="158.6" y="2533.2" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-103)">-a</text><text
class="breeze-prod-image-build-r1" x="207.4" y="2533.2" tex [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2557.6"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-104)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2557.6" textLength="109.8"
clip-path="url(#breeze-prod-image-build-line-104)">--dry-run</text><text
class="breeze-prod-image-build-r7" x="158.6" y="2557.6" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-104)">-D</text><text
class="breeze-prod-image-build-r1" x="207.4" y="2557.6" t [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2582"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-105)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2582" textLength="109.8"
clip-path="url(#breeze-prod-image-build-line-105)">--verbose</text><text
class="breeze-prod-image-build-r7" x="158.6" y="2582" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-105)">-v</text><text
class="breeze-prod-image-build-r1" x="207.4" y="2582" textLengt [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2606.4"
textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-106)">│</text><text
class="breeze-prod-image-build-r4" x="24.4" y="2606.4" textLength="73.2"
clip-path="url(#breeze-prod-image-build-line-106)">--help</text><text
class="breeze-prod-image-build-r7" x="158.6" y="2606.4" textLength="24.4"
clip-path="url(#breeze-prod-image-build-line-106)">-h</text><text
class="breeze-prod-image-build-r1" x="207.4" y="2606.4" textL [...]
+</text><text class="breeze-prod-image-build-r5" x="0" y="2630.8"
textLength="1464"
clip-path="url(#breeze-prod-image-build-line-107)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-prod-image-build-r1" x="1464" y="2630.8" textLength="12.2"
clip-path="url(#breeze-prod-image-build-line-107)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_prod-image_build.txt
b/dev/breeze/doc/images/output_prod-image_build.txt
index fd09b720291..e0fe8365cf8 100644
--- a/dev/breeze/doc/images/output_prod-image_build.txt
+++ b/dev/breeze/doc/images/output_prod-image_build.txt
@@ -1 +1 @@
-e730bc254ac5c007de501b6f809389fe
+243b6434dac30c116e26d8499eee5aa0
diff --git a/dev/breeze/src/airflow_breeze/commands/common_image_options.py
b/dev/breeze/src/airflow_breeze/commands/common_image_options.py
index 3c1e9ed0e82..244920c3ef2 100644
--- a/dev/breeze/src/airflow_breeze/commands/common_image_options.py
+++ b/dev/breeze/src/airflow_breeze/commands/common_image_options.py
@@ -85,6 +85,14 @@ option_airflow_constraints_reference_build = click.option(
help="Constraint reference to use when building the image.",
envvar="AIRFLOW_CONSTRAINTS_REFERENCE",
)
+option_airflow_fallback_no_constraints_installation = click.option(
+
"--airflow-fallback-no-constraints-installation/--no-airflow-fallback-no-constraints-installation",
+ is_flag=True,
+ default=True,
+ show_default=True,
+ help="Fallback to no constraints installation when constraints
installation fails.",
+ envvar="AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION",
+)
option_build_progress = click.option(
"--build-progress",
help="Build progress.",
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 88313ce2d88..7e8bc238c50 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands.py
@@ -33,6 +33,7 @@ from airflow_breeze.commands.common_image_options import (
option_additional_runtime_apt_deps,
option_additional_runtime_apt_env,
option_airflow_constraints_reference_build,
+ option_airflow_fallback_no_constraints_installation,
option_build_progress,
option_debian_version,
option_dev_apt_command,
@@ -233,6 +234,7 @@ def prod_image():
@option_airflow_constraints_location
@option_airflow_constraints_mode_prod
@option_airflow_constraints_reference_build
+@option_airflow_fallback_no_constraints_installation
@option_answer
@option_build_progress
@option_builder
@@ -277,6 +279,7 @@ def build(
airflow_constraints_location: str | None,
airflow_constraints_mode: str,
airflow_constraints_reference: str | None,
+ airflow_fallback_no_constraints_installation: bool,
airflow_extras: str,
build_progress: str,
builder: str,
@@ -345,6 +348,7 @@ def build(
airflow_constraints_location=airflow_constraints_location,
airflow_constraints_mode=airflow_constraints_mode,
airflow_constraints_reference=airflow_constraints_reference,
+
airflow_fallback_no_constraints_installation=airflow_fallback_no_constraints_installation,
airflow_extras=airflow_extras,
build_progress=build_progress,
builder=builder,
diff --git
a/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
b/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
index 07fb8c82d7d..2710dbdcd94 100644
--- a/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/production_image_commands_config.py
@@ -67,6 +67,7 @@ PRODUCTION_IMAGE_TOOLS_PARAMETERS: dict[str, list[dict[str,
str | list[str]]]] =
"--airflow-constraints-location",
"--airflow-constraints-mode",
"--airflow-constraints-reference",
+ "--airflow-fallback-no-constraints-installation",
],
},
{
diff --git a/dev/breeze/src/airflow_breeze/params/build_prod_params.py
b/dev/breeze/src/airflow_breeze/params/build_prod_params.py
index 01f2bb8fa4a..a013cf013f0 100644
--- a/dev/breeze/src/airflow_breeze/params/build_prod_params.py
+++ b/dev/breeze/src/airflow_breeze/params/build_prod_params.py
@@ -42,6 +42,7 @@ class BuildProdParams(CommonBuildParams):
additional_runtime_apt_env: str | None = None
airflow_constraints_mode: str = "constraints"
airflow_constraints_reference: str = DEFAULT_AIRFLOW_CONSTRAINTS_BRANCH
+ airflow_fallback_no_constraints_installation: bool = False
cleanup_context: bool = False
airflow_extras: str = field(default_factory=get_airflow_extras)
disable_mssql_client_installation: bool = False
@@ -261,6 +262,9 @@ class BuildProdParams(CommonBuildParams):
self._opt_arg("RUNTIME_APT_DEPS", self.runtime_apt_deps)
self._opt_arg("USE_CONSTRAINTS_FOR_CONTEXT_PACKAGES",
self.use_constraints_for_context_packages)
self._opt_arg("VERSION_SUFFIX_FOR_PYPI", self.version_suffix_for_pypi)
+ self._opt_arg(
+ "AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION",
self.airflow_fallback_no_constraints_installation
+ )
build_args = self._to_build_args()
build_args.extend(self._extra_prod_docker_build_flags())
return build_args
diff --git a/scripts/docker/install_airflow.sh
b/scripts/docker/install_airflow.sh
index 5db10ad9676..0d1f813dd89 100644
--- a/scripts/docker/install_airflow.sh
+++ b/scripts/docker/install_airflow.sh
@@ -88,6 +88,12 @@ function install_airflow() {
# Install all packages with constraints
if ! ${PACKAGING_TOOL_CMD} install ${EXTRA_INSTALL_FLAGS}
${ADDITIONAL_PIP_INSTALL_FLAGS} ${installation_command_flags} --constraint
"${HOME}/constraints.txt"; then
set +x
+ if [[ ${AIRFLOW_FALLBACK_NO_CONSTRAINTS_INSTALLATION} != "true"
]]; then
+ echo
+ echo "${COLOR_RED}Failing because constraints installation
failed and fallback is disabled.${COLOR_RESET}"
+ echo
+ exit 1
+ fi
echo
echo "${COLOR_YELLOW}Likely pyproject.toml has new dependencies
conflicting with constraints.${COLOR_RESET}"
echo