Skip to content

Speed up CI by parallelizing pulp-cli livetests and using uv. - #7954

Draft
gerrod3 wants to merge 1 commit into
pulp:mainfrom
gerrod3:cursor/ci-parallel-cli-uv
Draft

Speed up CI by parallelizing pulp-cli livetests and using uv.#7954
gerrod3 wants to merge 1 commit into
pulp:mainfrom
gerrod3:cursor/ci-parallel-cli-uv

Conversation

@gerrod3

@gerrod3 gerrod3 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

This is the first test to see if we can get the CI back under 30 mins. There's some more areas we can improve, but going to tackle this incrementally.

Assisted-By: Cursor Grok 4.5

📜 Checklist

  • Commits are cleanly separated with meaningful messages (simple features and bug fixes should be squashed to one commit)
  • A changelog entry or entries has been added for any significant changes
  • Follows the Pulp policy on AI Usage
  • (For new features) - User documentation and test coverage has been added

See: Pull Request Walkthrough

Assisted-By: Cursor Grok 4.5
Co-authored-by: Cursor <cursoragent@cursor.com>
{%- endfor %}

# This MUST be the ONLY call to pip install in inside the container.
# This MUST be the ONLY package install inside the container.

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.

Is this actually correct?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It might have been at one point. Think the main reason we want there to be only one install is so that dependency resolution is more reliable, but I can't remember.

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.

This is for pip that ignores already installed packages when called a second time.
I think uv is addressing this in some way. But we need to be careful.

(In some cases you end up with broken packages, in others you end up with package versions that weren't the ones you set out to test in the first place.)

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.

But I think the "full solution" is not to use "uv pip" but to go "uv" all the way.

cmd_stdin_prefix bash -c "cat > /tmp/bindings_requirements.txt" < bindings_requirements.txt
cmd_stdin_prefix bash -c "cat > /tmp/bindings_constraints.txt" < bindings_constraints.txt
cmd_prefix pip3 install -r /tmp/unittest_requirements.txt -r /tmp/functest_requirements.txt -r /tmp/bindings_requirements.txt -c /tmp/bindings_constraints.txt
cmd_prefix uv pip install -r /tmp/unittest_requirements.txt -r /tmp/functest_requirements.txt -r /tmp/bindings_requirements.txt -c /tmp/bindings_constraints.txt

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.

Seems like there are a few installs, not just the one.

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.

A few more below also

enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"

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.

Is it possible to set this globally rather than needing to specify it everywhere

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We could. Currently this comes from a install_uv macro in the plugin template. We could change it so that each workflow has UV_SYSTEM_PYTHON=1 in their global env config.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants