This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new acfda3fc8e0 Regenerate API datamodels after the CI environment lock
upgrade (#71718)
acfda3fc8e0 is described below
commit acfda3fc8e009975e2d4c7781e1e40d2960f093f
Author: Jarek Potiuk <[email protected]>
AuthorDate: Wed Aug 19 14:09:19 2026 +0200
Regenerate API datamodels after the CI environment lock upgrade (#71718)
`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.
---
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 6bca01160d0..1eca2af7be5 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 d26a86502dc..6a1ee23da1d 100644
--- a/dev/breeze/doc/images/output_ci_upgrade.txt
+++ b/dev/breeze/doc/images/output_ci_upgrade.txt
@@ -1 +1 @@
-2982b71d3fe990ce8f59410e96621f4d
+a3ec0a8b87e70c03dd4285131ec06f75
diff --git a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
index f7d0b82b02b..00c961d2c63 100644
--- a/dev/breeze/src/airflow_breeze/commands/ci_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ci_commands.py
@@ -613,7 +613,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",
@@ -810,7 +811,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"),
(
@@ -825,6 +827,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 = {
@@ -832,6 +842,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