This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-3-test by this push:
new 794bb2879f9 [v3-3-test] Regenerate API datamodels after the CI
environment lock upgrade (#71718) (#71838)
794bb2879f9 is described below
commit 794bb2879f9884b3f2e4567c617d639957cd5526
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Aug 19 14:29:43 2026 +0200
[v3-3-test] Regenerate API datamodels after the CI environment lock upgrade
(#71718) (#71838)
`uv lock --upgrade` can move datamodel-code-generator, whose version is
stamped into the header of every file it generates. The two codegen hooks
are gated on the execution and core API sources, which an upgrade run never
touches, so they stay dormant while the automation commits -- and the next
CI run, which invokes them with --all-files, regenerates the headers and
fails the static checks job on the upgrade PR itself.
Tying the regeneration to the lock step keeps the upgrade PR
self-consistent.
(cherry picked from commit acfda3fc8e009975e2d4c7781e1e40d2960f093f)
---
dev/breeze/doc/images/output_ci_upgrade.svg | 32 ++++++++++++----------
dev/breeze/doc/images/output_ci_upgrade.txt | 2 +-
.../src/airflow_breeze/commands/ci_commands.py | 15 ++++++++--
3 files changed, 32 insertions(+), 17 deletions(-)
diff --git a/dev/breeze/doc/images/output_ci_upgrade.svg
b/dev/breeze/doc/images/output_ci_upgrade.svg
index 6a4afbe0e4e..d5e86739e3b 100644
--- a/dev/breeze/doc/images/output_ci_upgrade.svg
+++ b/dev/breeze/doc/images/output_ci_upgrade.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1001.5999999999999"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1026.0"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-ci-upgrade-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="950.5999999999999" />
+ <rect x="0" y="0" width="1463.0" height="975.0" />
</clipPath>
<clipPath id="breeze-ci-upgrade-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -159,9 +159,12 @@
<clipPath id="breeze-ci-upgrade-line-37">
<rect x="0" y="904.3" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-ci-upgrade-line-38">
+ <rect x="0" y="928.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="999.6" rx="8"/><text
class="breeze-ci-upgrade-title" fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: ci upgrade</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1024" rx="8"/><text
class="breeze-ci-upgrade-title" fill="#c5c8c6" text-anchor="middle" x="740"
y="27">Command: ci upgrade</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -199,17 +202,18 @@
</text><text class="breeze-ci-upgrade-r5" x="0" y="630" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-25)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="630" textLength="341.6"
clip-path="url(#breeze-ci-upgrade-line-25)">--upgrade-important-versions</text><text
class="breeze-ci-upgrade-r1" x="366" y="630" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-25)">/</text><text
class="breeze-ci-upgrade-r4" x="378.2" y="630" textLength="341.6"
clip-path="url(#breeze- [...]
</text><text class="breeze-ci-upgrade-r5" x="0" y="654.4" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-26)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="654.4" textLength="36.6"
clip-path="url(#breeze-ci-upgrade-line-26)">ons</text><text
class="breeze-ci-upgrade-r1" x="744.2" y="654.4" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-26)">versions </text><text
class="breeze-ci-upgrade-r5" x="854" y="654.4" textLength="451.4"
clip-path="url(#breeze-ci-u [...]
</text><text class="breeze-ci-upgrade-r5" x="0" y="678.8" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-27)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="678.8" textLength="195.2"
clip-path="url(#breeze-ci-upgrade-line-27)">--update-uv-lock</text><text
class="breeze-ci-upgrade-r1" x="219.6" y="678.8" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-27)">/</text><text
class="breeze-ci-upgrade-r4" x="231.8" y="678.8" textLength="231.8"
clip-path="url(#breeze-ci [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="703.2" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-28)">│</text><text
class="breeze-ci-upgrade-r1" x="744.2" y="703.2" textLength="427"
clip-path="url(#breeze-ci-upgrade-line-28)">resolutions inside Breeze CI image </text><text
class="breeze-ci-upgrade-r5" x="1171.2" y="703.2" textLength="122"
clip-path="url(#breeze-ci-upgrade-line-28)">[default: </text><text
class="breeze-ci-upgrade-r5" x="1451 [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="727.6" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-29)">│</text><text
class="breeze-ci-upgrade-r5" x="744.2" y="727.6" textLength="183"
clip-path="url(#breeze-ci-upgrade-line-29)">update-uv-lock]</text><text
class="breeze-ci-upgrade-r5" x="1451.8" y="727.6" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-29)">│</text><text
class="breeze-ci-upgrade-r1" x="1464" y="727.6" textLength="12.2"
clip-path="url(#breeze-ci-up [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-30)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="752" textLength="207.4"
clip-path="url(#breeze-ci-upgrade-line-30)">--k8s-schema-sync</text><text
class="breeze-ci-upgrade-r1" x="231.8" y="752" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-30)">/</text><text
class="breeze-ci-upgrade-r4" x="244" y="752" textLength="244"
clip-path="url(#breeze-ci-upgrade-li [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="776.4" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-31)">│</text><text
class="breeze-ci-upgrade-r5" x="744.2" y="776.4" textLength="195.2"
clip-path="url(#breeze-ci-upgrade-line-31)">k8s-schema-sync]</text><text
class="breeze-ci-upgrade-r5" x="1451.8" y="776.4" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-31)">│</text><text
class="breeze-ci-upgrade-r1" x="1464" y="776.4" textLength="12.2"
clip-path="url(#breeze-ci [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="800.8" textLength="1464"
clip-path="url(#breeze-ci-upgrade-line-32)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-ci-upgrade-r1" x="1464" y="800.8" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-32)">
-</text><text class="breeze-ci-upgrade-r5" x="0" y="825.2" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-33)">╭─</text><text
class="breeze-ci-upgrade-r5" x="24.4" y="825.2" textLength="195.2"
clip-path="url(#breeze-ci-upgrade-line-33)"> Common options </text><text
class="breeze-ci-upgrade-r5" x="219.6" y="825.2" textLength="1220"
clip-path="url(#breeze-ci-upgrade-line-33)">───────────────────────────────────────────────────────────────────────────────────────────
[...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="849.6" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-34)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="849.6" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-34)">--answer </text><text
class="breeze-ci-upgrade-r7" x="158.6" y="849.6" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-34)">-a</text><text
class="breeze-ci-upgrade-r1" x="207.4" y="849.6" textLength="329.4"
clip-path="url(#breeze-ci- [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-35)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="874" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-35)">--verbose</text><text
class="breeze-ci-upgrade-r7" x="158.6" y="874" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-35)">-v</text><text
class="breeze-ci-upgrade-r1" x="207.4" y="874" textLength="585.6"
clip-path="url(#breeze-ci-upgrade-line- [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="898.4" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-36)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="898.4" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-36)">--dry-run</text><text
class="breeze-ci-upgrade-r7" x="158.6" y="898.4" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-36)">-D</text><text
class="breeze-ci-upgrade-r1" x="207.4" y="898.4" textLength="719.8"
clip-path="url(#breeze-ci-upgra [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="922.8" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-37)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="922.8" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-37)">--help   </text><text
class="breeze-ci-upgrade-r7" x="158.6" y="922.8" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-37)">-h</text><text
class="breeze-ci-upgrade-r1" x="207.4" y="922.8" textLength="329.4"
clip-path="url(# [...]
-</text><text class="breeze-ci-upgrade-r5" x="0" y="947.2" textLength="1464"
clip-path="url(#breeze-ci-upgrade-line-38)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-ci-upgrade-r1" x="1464" y="947.2" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-38)">
+</text><text class="breeze-ci-upgrade-r5" x="0" y="703.2" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-28)">│</text><text
class="breeze-ci-upgrade-r1" x="744.2" y="703.2" textLength="695.4"
clip-path="url(#breeze-ci-upgrade-line-28)">resolutions inside Breeze CI image, then regenerate the  </text><text
class="breeze-ci-upgrade-r5" x="1451.8" y="703.2" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-28)">│</text><text class [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="727.6" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-29)">│</text><text
class="breeze-ci-upgrade-r1" x="744.2" y="727.6" textLength="695.4"
clip-path="url(#breeze-ci-upgrade-line-29)">API datamodels the resolved code generator stamps its    </text><text
class="breeze-ci-upgrade-r5" x="1451.8" y="727.6" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-29)">│</text>< [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="752" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-30)">│</text><text
class="breeze-ci-upgrade-r1" x="744.2" y="752" textLength="158.6"
clip-path="url(#breeze-ci-upgrade-line-30)">version into </text><text
class="breeze-ci-upgrade-r5" x="902.8" y="752" textLength="305"
clip-path="url(#breeze-ci-upgrade-line-30)">[default: update-uv-lock]</text><text
class="breeze-ci-upgrade-r5" x="1451.8" y="752" textLength="12. [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="776.4" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-31)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="776.4" textLength="207.4"
clip-path="url(#breeze-ci-upgrade-line-31)">--k8s-schema-sync</text><text
class="breeze-ci-upgrade-r1" x="231.8" y="776.4" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-31)">/</text><text
class="breeze-ci-upgrade-r4" x="244" y="776.4" textLength="244"
clip-path="url(#breeze-ci-up [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="800.8" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-32)">│</text><text
class="breeze-ci-upgrade-r5" x="744.2" y="800.8" textLength="195.2"
clip-path="url(#breeze-ci-upgrade-line-32)">k8s-schema-sync]</text><text
class="breeze-ci-upgrade-r5" x="1451.8" y="800.8" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-32)">│</text><text
class="breeze-ci-upgrade-r1" x="1464" y="800.8" textLength="12.2"
clip-path="url(#breeze-ci [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="825.2" textLength="1464"
clip-path="url(#breeze-ci-upgrade-line-33)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-ci-upgrade-r1" x="1464" y="825.2" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-33)">
+</text><text class="breeze-ci-upgrade-r5" x="0" y="849.6" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-34)">╭─</text><text
class="breeze-ci-upgrade-r5" x="24.4" y="849.6" textLength="195.2"
clip-path="url(#breeze-ci-upgrade-line-34)"> Common options </text><text
class="breeze-ci-upgrade-r5" x="219.6" y="849.6" textLength="1220"
clip-path="url(#breeze-ci-upgrade-line-34)">───────────────────────────────────────────────────────────────────────────────────────────
[...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="874" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-35)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="874" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-35)">--answer </text><text
class="breeze-ci-upgrade-r7" x="158.6" y="874" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-35)">-a</text><text
class="breeze-ci-upgrade-r1" x="207.4" y="874" textLength="329.4"
clip-path="url(#breeze-ci-upgrade- [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="898.4" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-36)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="898.4" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-36)">--verbose</text><text
class="breeze-ci-upgrade-r7" x="158.6" y="898.4" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-36)">-v</text><text
class="breeze-ci-upgrade-r1" x="207.4" y="898.4" textLength="585.6"
clip-path="url(#breeze-ci-upgra [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="922.8" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-37)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="922.8" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-37)">--dry-run</text><text
class="breeze-ci-upgrade-r7" x="158.6" y="922.8" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-37)">-D</text><text
class="breeze-ci-upgrade-r1" x="207.4" y="922.8" textLength="719.8"
clip-path="url(#breeze-ci-upgra [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="947.2" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-38)">│</text><text
class="breeze-ci-upgrade-r4" x="24.4" y="947.2" textLength="109.8"
clip-path="url(#breeze-ci-upgrade-line-38)">--help   </text><text
class="breeze-ci-upgrade-r7" x="158.6" y="947.2" textLength="24.4"
clip-path="url(#breeze-ci-upgrade-line-38)">-h</text><text
class="breeze-ci-upgrade-r1" x="207.4" y="947.2" textLength="329.4"
clip-path="url(# [...]
+</text><text class="breeze-ci-upgrade-r5" x="0" y="971.6" textLength="1464"
clip-path="url(#breeze-ci-upgrade-line-39)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-ci-upgrade-r1" x="1464" y="971.6" textLength="12.2"
clip-path="url(#breeze-ci-upgrade-line-39)">
</text>
</g>
</g>
diff --git a/dev/breeze/doc/images/output_ci_upgrade.txt
b/dev/breeze/doc/images/output_ci_upgrade.txt
index 2500d0b9d7f..0dfdad6effa 100644
--- a/dev/breeze/doc/images/output_ci_upgrade.txt
+++ b/dev/breeze/doc/images/output_ci_upgrade.txt
@@ -1 +1 @@
-20100f261819662d368dac8c3e94bf19
+edaa8a170a17c7208ed46a813e40aa57
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
index 686def2fc0b..70c5fa01f37 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -599,7 +599,8 @@ def _sync_k8s_schemas_to_airflow_site(airflow_site: Path,
force: bool, command_e
"--update-uv-lock/--no-update-uv-lock",
default=True,
show_default=True,
- help="Run update-uv-lock to regenerate uv.lock with latest resolutions
inside Breeze CI image",
+ help="Run update-uv-lock to regenerate uv.lock with latest resolutions
inside Breeze CI image, "
+ "then regenerate the API datamodels the resolved code generator stamps its
version into",
)
@click.option(
"--k8s-schema-sync/--no-k8s-schema-sync",
@@ -795,7 +796,8 @@ def upgrade(
)
# All upgrade commands run locally with check=False to continue on errors.
- # The uv lock --upgrade step must run last so it can incorporate changes
from the other steps.
+ # The uv lock --upgrade step must run after the steps that change
dependencies, so it can
+ # incorporate them -- and before the steps that regenerate code from the
resolved versions.
upgrade_commands: list[tuple[str, str]] = [
("autoupdate", "prek autoupdate --cooldown-days 4 --freeze"),
(
@@ -810,6 +812,14 @@ def upgrade(
"update-uv-lock",
"uv lock --upgrade",
),
+ (
+ # The lock upgrade can bump datamodel-code-generator, whose
version is stamped into the
+ # generated files' header. These hooks only watch the API sources,
which an upgrade run
+ # never touches, so nothing regenerates them here and CI's
--all-files run goes red.
+ "regenerate-datamodels",
+ "prek --all-files --show-diff-on-failure --color always --verbose "
+ "generate-tasksdk-datamodels generate-airflowctl-datamodels",
+ ),
]
step_enabled = {
@@ -817,6 +827,7 @@ def upgrade(
"update-chart-dependencies": update_chart_dependencies,
"upgrade-important-versions": upgrade_important_versions,
"update-uv-lock": update_uv_lock,
+ "regenerate-datamodels": update_uv_lock,
}
# Execute upgrade commands