Skip to content

Use uv as packaging tool used in CI builds - #37683

Closed
potiuk wants to merge 1 commit into
apache:mainfrom
potiuk:use-uv-for-ci-build
Closed

Use uv as packaging tool used in CI builds#37683
potiuk wants to merge 1 commit into
apache:mainfrom
potiuk:use-uv-for-ci-build

Conversation

@potiuk

@potiuk potiuk commented Feb 24, 2024

Copy link
Copy Markdown
Member

The uv tool released in Feb 2024 by ruff creators provides a way faster drop-in replacement to pip and we are using it now in our CI, when it can bring significant speed improvements (and soon possibly more features).

This PR replaces pip install and pip uninstall with equivalent uv pip install and uv pip uninstall commands, controlled by a single AIRFLOW_USE_UV ARG. In CI images it is set to "true" so CI images are prepared using UV, but PROD images (which are also used during CI tests) are built using pip. This way we can get both - stability and compliance for user-facing pip installation and speed and new features coming from uv.


^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@hussein-awala hussein-awala left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excited 😄

Looks good, I hope the CI will pass

@potiuk

potiuk commented Feb 24, 2024

Copy link
Copy Markdown
Member Author

Looks good, I hope the CI will pass

Not yet (expected) - but it's close :).

@potiuk

potiuk commented Feb 24, 2024

Copy link
Copy Markdown
Member Author

And the numbers are REALLY REALLY good - see https://lists.apache.org/thread/t7pd78ktcs2s4b8mv3trwb7bdyjthcpz

@dirrao dirrao left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks Great.

@potiuk
potiuk force-pushed the use-uv-for-ci-build branch 2 times, most recently from 108d490 to 1994e33 Compare February 25, 2024 07:52
@potiuk
potiuk requested a review from kaxil as a code owner February 25, 2024 07:52
@potiuk
potiuk force-pushed the use-uv-for-ci-build branch from 1994e33 to 40ad435 Compare February 25, 2024 10:49
@potiuk
potiuk force-pushed the use-uv-for-ci-build branch from 40ad435 to 256981b Compare February 25, 2024 14:22
potiuk added a commit to potiuk/airflow that referenced this pull request Feb 25, 2024
The pintodb python package had a very old and very low lower
limit, that introduced possible weird resolutions for dependencies
when pinotdb had been downgraded to **really** low version - this
has been observed in apache#37683 when we test replacing pip with uv
in our CI environment.

Bumping it to version >= 5.1.0 released last year in september - that
was the first one that was not 0.N.*.
potiuk added a commit that referenced this pull request Feb 25, 2024
The pintodb python package had a very old and very low lower
limit, that introduced possible weird resolutions for dependencies
when pinotdb had been downgraded to **really** low version - this
has been observed in #37683 when we test replacing pip with uv
in our CI environment.

Bumping it to version >= 5.1.0 released last year in september - that
was the first one that was not 0.N.*.
@potiuk potiuk closed this Feb 25, 2024
@potiuk
potiuk force-pushed the use-uv-for-ci-build branch from 256981b to e6a18e3 Compare February 25, 2024 16:48
potiuk added a commit to potiuk/airflow that referenced this pull request Feb 25, 2024
The openapi validators in older versions do not work well for some
moto tests which use the validators. Bumping specifically the
min versions of those validators should help with better
dependency resolving (wheb using uv and lowest transitive versions
strategy it will downgrade the validators and will cause the tests
to fail as seen in apache#37683.

Those are only test and development dependencies and we already use
the min version specified in our CI, so it should have no impact
on production airflow (but should help wiht CI/dependency resolution)
@potiuk potiuk reopened this Feb 25, 2024
@potiuk
potiuk requested a review from o-nikolas as a code owner February 25, 2024 16:57
@potiuk potiuk closed this Feb 25, 2024
@potiuk potiuk reopened this Feb 25, 2024
potiuk added a commit that referenced this pull request Feb 25, 2024
The openapi validators in older versions do not work well for some
moto tests which use the validators. Bumping specifically the
min versions of those validators should help with better
dependency resolving (wheb using uv and lowest transitive versions
strategy it will downgrade the validators and will cause the tests
to fail as seen in #37683.

Those are only test and development dependencies and we already use
the min version specified in our CI, so it should have no impact
on production airflow (but should help wiht CI/dependency resolution)
@potiuk
potiuk force-pushed the use-uv-for-ci-build branch from 6f85cbd to 5571a04 Compare February 25, 2024 17:28
The `uv` tool released in Feb 2024 by ruff creators provides a
way faster drop-in replacement to `pip` and we are using it now
in our CI, when it can bring significant speed improvements (and
soon possibly more features).

This PR replaces `pip install` and `pip uninstall` with equivalent
`uv pip install` and `uv pip uninstall` commands, controlled by
a single `AIRFLOW_USE_UV` ARG. In CI images it is set to "true" so
CI images are prepared using UV, but PROD images (which are also
used during CI tests) are built using pip. This way we can get
both - stability and compliance for user-facing `pip` installation
and speed and new features coming from `uv`.
@potiuk potiuk added the canary When set on PR running from apache repo - behave as canary run label Feb 25, 2024
@potiuk
potiuk force-pushed the use-uv-for-ci-build branch from 5571a04 to 0470aee Compare February 25, 2024 18:26
@potiuk

potiuk commented Feb 25, 2024

Copy link
Copy Markdown
Member Author

I need to close it and re-open it in apache repo to test canary runs now

@potiuk potiuk closed this Feb 25, 2024
@potiuk

potiuk commented Feb 25, 2024

Copy link
Copy Markdown
Member Author

Reopened it as #37692

ephraimbuddy pushed a commit that referenced this pull request Mar 6, 2024
The openapi validators in older versions do not work well for some
moto tests which use the validators. Bumping specifically the
min versions of those validators should help with better
dependency resolving (wheb using uv and lowest transitive versions
strategy it will downgrade the validators and will cause the tests
to fail as seen in #37683.

Those are only test and development dependencies and we already use
the min version specified in our CI, so it should have no impact
on production airflow (but should help wiht CI/dependency resolution)

(cherry picked from commit f3159df)
@potiuk
potiuk deleted the use-uv-for-ci-build branch April 21, 2026 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:dev-tools area:production-image Production image improvements and fixes canary When set on PR running from apache repo - behave as canary run kind:documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants