Breeze: ensure generated Dockerfile.pmc upgrades uv to required floor#65774
Merged
Conversation
…loor
`breeze release-management check-release-files providers` generates a
Dockerfile.pmc that copies the root `pyproject.toml` into the CI image
and then runs `uv pip install`. If the CI image ships an older uv than
`[tool.uv] required-version`, that install step fails with:
error: Required uv version `>=X.Y.Z` does not match the running
version `A.B.C`. Update `uv` by running `uv self update`.
This is reproducible today: the current `ghcr.io/apache/airflow/main/ci/
python3.10` ships uv 0.11.6 while the pin is `>=0.11.7`, so every PMC
Dockerfile.pmc verification breaks out of the box.
Inject a `pip install --upgrade 'uv>=X.Y.Z'` before the `uv pip install`
step so the install works regardless of when the CI image was last
rebuilt. The floor is a module constant with the existing
`# sync-uv-min-version` marker so the `sync-uv-min-version-markers` prek
hook keeps it in lockstep with the `[tool.uv] required-version` bump
going forward — drop `check_release_files.py` into that hook's file
list and add a belt-and-braces test that the two values match.
jscheffl
approved these changes
Apr 24, 2026
Contributor
Backport successfully created: v3-2-testNote: As of Merging PRs targeted for Airflow 3.X In matter of doubt please ask in #release-management Slack channel.
|
github-actions Bot
pushed a commit
to aws-mwaa/upstream-to-airflow
that referenced
this pull request
Apr 24, 2026
…e required floor (apache#65774) `breeze release-management check-release-files providers` generates a Dockerfile.pmc that copies the root `pyproject.toml` into the CI image and then runs `uv pip install`. If the CI image ships an older uv than `[tool.uv] required-version`, that install step fails with: error: Required uv version `>=X.Y.Z` does not match the running version `A.B.C`. Update `uv` by running `uv self update`. This is reproducible today: the current `ghcr.io/apache/airflow/main/ci/ python3.10` ships uv 0.11.6 while the pin is `>=0.11.7`, so every PMC Dockerfile.pmc verification breaks out of the box. Inject a `pip install --upgrade 'uv>=X.Y.Z'` before the `uv pip install` step so the install works regardless of when the CI image was last rebuilt. The floor is a module constant with the existing `# sync-uv-min-version` marker so the `sync-uv-min-version-markers` prek hook keeps it in lockstep with the `[tool.uv] required-version` bump going forward — drop `check_release_files.py` into that hook's file list and add a belt-and-braces test that the two values match. (cherry picked from commit 0df38ff) Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
aws-airflow-bot
pushed a commit
to aws-mwaa/upstream-to-airflow
that referenced
this pull request
Apr 24, 2026
…e required floor (apache#65774) `breeze release-management check-release-files providers` generates a Dockerfile.pmc that copies the root `pyproject.toml` into the CI image and then runs `uv pip install`. If the CI image ships an older uv than `[tool.uv] required-version`, that install step fails with: error: Required uv version `>=X.Y.Z` does not match the running version `A.B.C`. Update `uv` by running `uv self update`. This is reproducible today: the current `ghcr.io/apache/airflow/main/ci/ python3.10` ships uv 0.11.6 while the pin is `>=0.11.7`, so every PMC Dockerfile.pmc verification breaks out of the box. Inject a `pip install --upgrade 'uv>=X.Y.Z'` before the `uv pip install` step so the install works regardless of when the CI image was last rebuilt. The floor is a module constant with the existing `# sync-uv-min-version` marker so the `sync-uv-min-version-markers` prek hook keeps it in lockstep with the `[tool.uv] required-version` bump going forward — drop `check_release_files.py` into that hook's file list and add a belt-and-braces test that the two values match. (cherry picked from commit 0df38ff) Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
potiuk
added a commit
that referenced
this pull request
Apr 26, 2026
…e required floor (#65774) `breeze release-management check-release-files providers` generates a Dockerfile.pmc that copies the root `pyproject.toml` into the CI image and then runs `uv pip install`. If the CI image ships an older uv than `[tool.uv] required-version`, that install step fails with: error: Required uv version `>=X.Y.Z` does not match the running version `A.B.C`. Update `uv` by running `uv self update`. This is reproducible today: the current `ghcr.io/apache/airflow/main/ci/ python3.10` ships uv 0.11.6 while the pin is `>=0.11.7`, so every PMC Dockerfile.pmc verification breaks out of the box. Inject a `pip install --upgrade 'uv>=X.Y.Z'` before the `uv pip install` step so the install works regardless of when the CI image was last rebuilt. The floor is a module constant with the existing `# sync-uv-min-version` marker so the `sync-uv-min-version-markers` prek hook keeps it in lockstep with the `[tool.uv] required-version` bump going forward — drop `check_release_files.py` into that hook's file list and add a belt-and-braces test that the two values match. (cherry picked from commit 0df38ff) Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
potiuk
added a commit
that referenced
this pull request
Apr 26, 2026
…e required floor (#65774) `breeze release-management check-release-files providers` generates a Dockerfile.pmc that copies the root `pyproject.toml` into the CI image and then runs `uv pip install`. If the CI image ships an older uv than `[tool.uv] required-version`, that install step fails with: error: Required uv version `>=X.Y.Z` does not match the running version `A.B.C`. Update `uv` by running `uv self update`. This is reproducible today: the current `ghcr.io/apache/airflow/main/ci/ python3.10` ships uv 0.11.6 while the pin is `>=0.11.7`, so every PMC Dockerfile.pmc verification breaks out of the box. Inject a `pip install --upgrade 'uv>=X.Y.Z'` before the `uv pip install` step so the install works regardless of when the CI image was last rebuilt. The floor is a module constant with the existing `# sync-uv-min-version` marker so the `sync-uv-min-version-markers` prek hook keeps it in lockstep with the `[tool.uv] required-version` bump going forward — drop `check_release_files.py` into that hook's file list and add a belt-and-braces test that the two values match. (cherry picked from commit 0df38ff) Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
potiuk
added a commit
that referenced
this pull request
Apr 26, 2026
…e required floor (#65774) (#65829) `breeze release-management check-release-files providers` generates a Dockerfile.pmc that copies the root `pyproject.toml` into the CI image and then runs `uv pip install`. If the CI image ships an older uv than `[tool.uv] required-version`, that install step fails with: error: Required uv version `>=X.Y.Z` does not match the running version `A.B.C`. Update `uv` by running `uv self update`. This is reproducible today: the current `ghcr.io/apache/airflow/main/ci/ python3.10` ships uv 0.11.6 while the pin is `>=0.11.7`, so every PMC Dockerfile.pmc verification breaks out of the box. Inject a `pip install --upgrade 'uv>=X.Y.Z'` before the `uv pip install` step so the install works regardless of when the CI image was last rebuilt. The floor is a module constant with the existing `# sync-uv-min-version` marker so the `sync-uv-min-version-markers` prek hook keeps it in lockstep with the `[tool.uv] required-version` bump going forward — drop `check_release_files.py` into that hook's file list and add a belt-and-braces test that the two values match. (cherry picked from commit 0df38ff) Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
vatsrahul1001
pushed a commit
that referenced
this pull request
Apr 27, 2026
…e required floor (#65774) (#65829) `breeze release-management check-release-files providers` generates a Dockerfile.pmc that copies the root `pyproject.toml` into the CI image and then runs `uv pip install`. If the CI image ships an older uv than `[tool.uv] required-version`, that install step fails with: error: Required uv version `>=X.Y.Z` does not match the running version `A.B.C`. Update `uv` by running `uv self update`. This is reproducible today: the current `ghcr.io/apache/airflow/main/ci/ python3.10` ships uv 0.11.6 while the pin is `>=0.11.7`, so every PMC Dockerfile.pmc verification breaks out of the box. Inject a `pip install --upgrade 'uv>=X.Y.Z'` before the `uv pip install` step so the install works regardless of when the CI image was last rebuilt. The floor is a module constant with the existing `# sync-uv-min-version` marker so the `sync-uv-min-version-markers` prek hook keeps it in lockstep with the `[tool.uv] required-version` bump going forward — drop `check_release_files.py` into that hook's file list and add a belt-and-braces test that the two values match. (cherry picked from commit 0df38ff) Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
vatsrahul1001
pushed a commit
that referenced
this pull request
May 20, 2026
…e required floor (#65774) (#65829) `breeze release-management check-release-files providers` generates a Dockerfile.pmc that copies the root `pyproject.toml` into the CI image and then runs `uv pip install`. If the CI image ships an older uv than `[tool.uv] required-version`, that install step fails with: error: Required uv version `>=X.Y.Z` does not match the running version `A.B.C`. Update `uv` by running `uv self update`. This is reproducible today: the current `ghcr.io/apache/airflow/main/ci/ python3.10` ships uv 0.11.6 while the pin is `>=0.11.7`, so every PMC Dockerfile.pmc verification breaks out of the box. Inject a `pip install --upgrade 'uv>=X.Y.Z'` before the `uv pip install` step so the install works regardless of when the CI image was last rebuilt. The floor is a module constant with the existing `# sync-uv-min-version` marker so the `sync-uv-min-version-markers` prek hook keeps it in lockstep with the `[tool.uv] required-version` bump going forward — drop `check_release_files.py` into that hook's file list and add a belt-and-braces test that the two values match. (cherry picked from commit 0df38ff) Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
breeze release-management check-release-files providersgenerates aDockerfile.pmcthat copies the rootpyproject.tomlinto the CI imageand then runs
uv pip install. If the CI image ships an older uv than[tool.uv] required-version, the install step fails with:This is reproducible today: the current
ghcr.io/apache/airflow/main/ci/python3.10image ships uv
0.11.6, the pin is>=0.11.7, and so every PMCDockerfile.pmcinstall attempt breaks out of the box.Fix
RUN pip install --upgrade 'uv>=X.Y.Z'beforeuv pip installin
PROVIDERS_DOCKER. The install step now works regardless of whenthe CI image was last rebuilt.
_PROVIDERS_DOCKER_UV_MIN_VERSIONconstant withthe existing
# sync-uv-min-versionmarker, and addcheck_release_files.pyto thesync-uv-min-version-markersprekhook's file list. When someone bumps
[tool.uv] required-version,the hook rewrites this constant on the next commit.
PROVIDERS_DOCKERcontains the uv upgrade step and it precedes
uv pip install;(2) the hard-coded floor matches the current
required-versionfromthe root
pyproject.toml(belt-and-braces — the hook enforces thisat commit time, the test catches accidental drift).
Not auto-syncing with
AIRFLOW_UV_VERSIONon purpose — per the commentnext to
required-version, that value intentionally stays decoupledand is managed via
upgrade_important_versions.py.Was generative AI tooling used to co-author this PR?
Generated-by: Claude Opus 4.7 following the guidelines