Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ci/ansible/Containerfile.j2
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ ADD ./{{ plugin_name }}/{{ plugin_name | replace("-", "_") }}/app/webserver_snip
ADD ./{{ item.origin }} {{ item.destination }}
{%- 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.

RUN --mount=type=cache,target=/root/.cache/uv uv pip install --upgrade setuptools wheel && \
uv pip install {{ image.source }}
{%- if image.upperbounds | default(false) -%}
Expand Down
11 changes: 9 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,23 @@ jobs:
- uses: "actions/setup-python@v6"
with:
python-version: "3.11"
- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install build packaging twine wheel mkdocs jq
uv pip install build packaging twine wheel mkdocs jq
- name: "Build package"
run: |
python3 -m build
twine check dist/*
- name: "Install built packages"
run: |
pip install dist/pulpcore-*-py3-none-any.whl -c .ci/assets/ci_constraints.txt
uv pip install dist/pulpcore-*-py3-none-any.whl -c .ci/assets/ci_constraints.txt
- name: "Generate api specs"
run: |
pulpcore-manager openapi --file "api.json"
Expand Down
18 changes: 16 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,16 @@ jobs:
- uses: "actions/setup-python@v6"
with:
python-version: "3.11"
- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install requests pygithub pyyaml
uv pip install requests pygithub pyyaml
- name: "Check commit message"
if: github.event_name == 'pull_request'
env:
Expand All @@ -56,9 +63,16 @@ jobs:
with:
python-version: "3.12"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install gitpython
uv pip install gitpython

- name: "Analyze changed files"
id: "check"
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/create-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,16 @@ jobs:
with:
python-version: "3.11"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install bump-my-version packaging -r plugin_template/requirements.txt
uv pip install bump-my-version packaging -r plugin_template/requirements.txt

- name: "Setting secrets"
working-directory: "pulpcore"
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,16 @@ jobs:
- uses: "actions/setup-python@v6"
with:
python-version: "3.12"
- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
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.

- name: "Install python dependencies"
run: |
pip install towncrier
uv pip install towncrier
- name: "Build changelog"
run: |
towncrier build --yes --version 4.0.0.ci
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,16 @@ jobs:
with:
python-version: "3.11"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install -r lint_requirements.txt
uv pip install -r lint_requirements.txt

- name: "Lint workflow files"
run: |
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,16 @@ jobs:
with:
python-version: "3.13"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install gitpython packaging toml
uv pip install gitpython packaging toml

- name: "Configure Git with pulpbot name and email"
run: |
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/pr_checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,16 @@ jobs:
- uses: "actions/setup-python@v6"
with:
python-version: "3.11"
- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Determine PR labels"
run: |
pip install GitPython==3.1.42
uv pip install GitPython==3.1.42
git fetch origin ${{ github.event.pull_request.head.sha }}
python .ci/scripts/pr_labels.py "origin/${{ github.base_ref }}" "${{ github.event.pull_request.head.sha }}" >> "$GITHUB_ENV"
- uses: "actions/github-script@v8"
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,17 @@ jobs:
- uses: "actions/setup-python@v6"
with:
python-version: "3.11"
- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"

- name: "Install towncrier"
run: |
pip install towncrier
uv pip install towncrier

- name: "Get release notes"
id: "get_release_notes"
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,16 @@ jobs:
with:
python-version: "3.11"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install bump-my-version towncrier
uv pip install bump-my-version towncrier

- name: "Configure Git with pulpbot name and email"
run: |
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/sanity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,16 @@ jobs:
with:
python-version: "3.11"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install -r lint_requirements.txt
uv pip install -r lint_requirements.txt

- name: "Verify bump version config"
run: |
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/scripts/before_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ echo "# Constraints Files:"
tail -v -n +1 ../*/*constraints.txt || true

echo
echo "# pip list outside the container"
pip list
echo "# package list outside the container"
uv pip list

echo
echo "# pip list inside the container"
cmd_prefix bash -c "pip3 list"
echo "# package list inside the container"
cmd_prefix bash -c "uv pip list"

echo
echo "# State of the containers"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/scripts/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ source .github/workflows/scripts/utils.sh

PIP_REQUIREMENTS=("pulp-cli" "yq")

# This must be the **only** call to "pip install" on the test runner.
pip install ${PIP_REQUIREMENTS[*]}
# This must be the **only** package install on the test runner.
uv pip install ${PIP_REQUIREMENTS[*]}

if [[ "$TEST" = "s3" ]]; then
for i in {1..3}
Expand All @@ -33,7 +33,7 @@ fi
fi

# Check out the pulp-cli branch matching the installed version.
PULP_CLI_VERSION="$(pip freeze | sed -n -e 's/pulp-cli==//p')"
PULP_CLI_VERSION="$(uv pip freeze | sed -n -e 's/pulp-cli==//p')"
git clone --depth 1 --branch "$PULP_CLI_VERSION" https://github.com/pulp/pulp-cli.git ../pulp-cli

PULP_API_ROOT="$(yq -r '.pulp_scenario_settings.api_root // .pulp_settings.api_root // "/pulp/"' < .ci/ansible/vars/main.yaml)"
Expand Down
11 changes: 7 additions & 4 deletions .github/workflows/scripts/script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ cmd_stdin_prefix bash -c "cat > /tmp/unittest_requirements.txt" < unittest_requi
cmd_stdin_prefix bash -c "cat > /tmp/functest_requirements.txt" < functest_requirements.txt
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


CERTIFI=$(cmd_prefix python3 -c 'import certifi; print(certifi.where())')
cmd_prefix bash -c "cat /etc/pulp/certs/pulp_webserver.crt >> '$CERTIFI'"
Expand Down Expand Up @@ -170,12 +170,15 @@ export PULP_FIXTURES_URL="http://pulp-fixtures:8080"
# some pulp-cli tests use the api root envvar
export PULP_API_ROOT="$(EDITOR=cat pulp config edit 2>/dev/null | awk -F'"' '/api_root/{print $2; exit}')"
pushd ../pulp-cli
# livetests are parallel-safe (pytest-xdist).
CLI_MARK="live and (pulpcore or pulp_file or pulp_certguard)"
if [[ -f "test_requirements.txt" ]]
then
pip install -r test_requirements.txt
pytest -v tests -m "pulpcore or pulp_file or pulp_certguard"
uv pip install -r test_requirements.txt
pytest -v tests -m "${CLI_MARK}" -n 8
else
PULP_CA_BUNDLE="/usr/local/share/ca-certificates/pulp_webserver.crt" make livetest PYTEST_MARK="live and (pulpcore or pulp_file or pulp_certguard)"
PULP_CA_BUNDLE="/usr/local/share/ca-certificates/pulp_webserver.crt" \
uv run pytest -v tests pulp-glue/tests -m "${CLI_MARK}" -n 8
fi
popd

Expand Down
16 changes: 9 additions & 7 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,6 @@ jobs:
with:
python-version: "3.11"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true

- name: "Download plugin package"
uses: "actions/download-artifact@v8"
with:
Expand Down Expand Up @@ -81,9 +76,16 @@ jobs:
tar xvf "../../pulpcore/certguard-python-client.tar"
popd

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install build towncrier twine wheel httpie docker netaddr boto3 'ansible~=10.3.0' mkdocs jq jsonpatch bump-my-version
uv pip install build towncrier twine wheel httpie docker netaddr boto3 'ansible~=10.3.0' mkdocs jq jsonpatch bump-my-version
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/pulpcore/.ci/assets/httpie/" >> $GITHUB_ENV

- name: "Set environment variables"
Expand Down Expand Up @@ -153,5 +155,5 @@ jobs:
docker logs pulp || true
docker exec pulp ls -latr /etc/yum.repos.d/ || true
docker exec pulp cat /etc/yum.repos.d/* || true
docker exec pulp bash -c "pip3 list" || true
docker exec pulp bash -c "uv pip list" || true
...
9 changes: 8 additions & 1 deletion .github/workflows/update-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,16 @@ jobs:
run: |
git config --global user.name 'pulpbot'
git config --global user.email 'pulp-infra@redhat.com'
- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install requests pyyaml
uv pip install requests pyyaml
- uses: "actions/checkout@v6"
- name: "Update labels"
run: |
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/update_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,16 @@ jobs:
with:
python-version: "3.11"

- name: "Install uv"
uses: "astral-sh/setup-uv@v7"
with:
enable-cache: true
- name: "Configure uv to use system Python"
run: |
echo "UV_SYSTEM_PYTHON=1" >> "$GITHUB_ENV"
- name: "Install python dependencies"
run: |
pip install gitpython packaging -r plugin_template/requirements.txt
uv pip install gitpython packaging -r plugin_template/requirements.txt

- name: "Configure Git with pulpbot name and email"
run: |
Expand Down
1 change: 1 addition & 0 deletions CHANGES/+ci-parallel-cli-uv.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Run pulp-cli livetests in parallel with pytest-xdist, and use uv instead of pip in CI.
Loading