diff --git a/.ci/ansible/Containerfile.j2 b/.ci/ansible/Containerfile.j2 index 13b5ff05..69c62ba0 100644 --- a/.ci/ansible/Containerfile.j2 +++ b/.ci/ansible/Containerfile.j2 @@ -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. RUN --mount=type=cache,target=/root/.cache/uv uv pip install --upgrade setuptools wheel && \ uv pip install {{ image.source }} {%- if image.upperbounds | default(false) -%} diff --git a/.ci/assets/ci_constraints.txt b/.ci/assets/ci_constraints.txt index c9198f19..3380502b 100644 --- a/.ci/assets/ci_constraints.txt +++ b/.ci/assets/ci_constraints.txt @@ -17,3 +17,7 @@ azure-storage-blob!=12.28.* pycares<5 # older aiodns versions don't pin pycares UB, and are broken by pycares>=5 + + +pytest-django!=4.13.0 +# This version seems not to not have a proper requirement on Django. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1978f107..dcbfd00c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,9 @@ name: "Build" on: workflow_call: +env: + UV_SYSTEM_PYTHON: "1" + defaults: run: working-directory: "pulp_ostree" @@ -31,9 +34,13 @@ 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: "Install python dependencies" run: | - pip install build packaging twine wheel mkdocs jq + uv pip install build packaging twine wheel mkdocs jq - name: "Install OS packages" run: | sudo apt-get update @@ -44,7 +51,7 @@ jobs: twine check dist/* - name: "Install built packages" run: | - pip install dist/pulp_ostree-*-py3-none-any.whl -c .ci/assets/ci_constraints.txt + uv pip install dist/pulp_ostree-*-py3-none-any.whl -c .ci/assets/ci_constraints.txt - name: "Generate api specs" run: | pulpcore-manager openapi --file "api.json" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f363b193..95351be5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,6 +9,9 @@ name: "Ostree CI" on: {pull_request: {branches: ['*']}} +env: + UV_SYSTEM_PYTHON: "1" + concurrency: group: ${{ github.ref_name }}-${{ github.workflow }} cancel-in-progress: true @@ -28,9 +31,13 @@ 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: "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: @@ -55,10 +62,14 @@ 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: "Install python dependencies" run: | - pip install gitpython + uv pip install gitpython - name: "Analyze changed files" id: "check" diff --git a/.github/workflows/create-branch.yml b/.github/workflows/create-branch.yml index f6db2c95..07fe9786 100644 --- a/.github/workflows/create-branch.yml +++ b/.github/workflows/create-branch.yml @@ -12,6 +12,7 @@ on: env: RELEASE_WORKFLOW: true + UV_SYSTEM_PYTHON: "1" jobs: create-branch: @@ -38,10 +39,14 @@ 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: "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: "pulp_ostree" diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 9f5af75b..697decc3 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -15,6 +15,9 @@ on: required: true type: "string" +env: + UV_SYSTEM_PYTHON: "1" + jobs: changelog: runs-on: "ubuntu-latest" @@ -29,9 +32,13 @@ 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: "Install python dependencies" run: | - pip install towncrier + uv pip install towncrier - name: "Build changelog" run: | towncrier build --yes --version 4.0.0.ci diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 326457fe..3eb4249d 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -10,6 +10,9 @@ name: "Lint" on: workflow_call: +env: + UV_SYSTEM_PYTHON: "1" + defaults: run: working-directory: "pulp_ostree" @@ -27,10 +30,14 @@ 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: "Install python dependencies" run: | - pip install -r lint_requirements.txt + uv pip install -r lint_requirements.txt - name: "Lint workflow files" run: | diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 91f9596d..102b1a0d 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -14,6 +14,9 @@ on: - cron: "00 3 * * *" workflow_dispatch: +env: + UV_SYSTEM_PYTHON: "1" + defaults: run: working-directory: "pulp_ostree" @@ -44,10 +47,14 @@ jobs: - uses: "actions/setup-python@v6" with: python-version: "3.13" + - name: "Install uv" + uses: "astral-sh/setup-uv@v7" + with: + enable-cache: true - 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: | diff --git a/.github/workflows/pr_checks.yml b/.github/workflows/pr_checks.yml index d0e9767f..c2670f7b 100644 --- a/.github/workflows/pr_checks.yml +++ b/.github/workflows/pr_checks.yml @@ -17,6 +17,9 @@ on: - "main" - "[0-9]+.[0-9]+" +env: + UV_SYSTEM_PYTHON: "1" + # This workflow runs with elevated permissions. # Do not even think about running a single bit of code from the PR. # Static analysis should be fine however. @@ -38,9 +41,13 @@ 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: "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" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1d479358..e23bc3cb 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,6 +12,9 @@ on: tags: - "[0-9]+.[0-9]+.[0-9]+" +env: + UV_SYSTEM_PYTHON: "1" + defaults: run: working-directory: "pulp_ostree" @@ -125,10 +128,14 @@ 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: "Install towncrier" run: | - pip install towncrier + uv pip install towncrier - name: "Get release notes" id: "get_release_notes" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d88e627c..ef95c977 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,6 +10,9 @@ name: Ostree Release Pipeline on: workflow_dispatch: +env: + UV_SYSTEM_PYTHON: "1" + defaults: run: working-directory: "pulp_ostree" @@ -31,10 +34,14 @@ 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: "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: | diff --git a/.github/workflows/sanity.yml b/.github/workflows/sanity.yml index 60372ecf..58b199e7 100644 --- a/.github/workflows/sanity.yml +++ b/.github/workflows/sanity.yml @@ -13,6 +13,9 @@ name: "Sanity" on: workflow_call: +env: + UV_SYSTEM_PYTHON: "1" + defaults: run: working-directory: "pulp_ostree" @@ -30,10 +33,14 @@ 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: "Install python dependencies" run: | - pip install -r lint_requirements.txt + uv pip install -r lint_requirements.txt - name: "Verify bump version config" run: | diff --git a/.github/workflows/scripts/before_script.sh b/.github/workflows/scripts/before_script.sh index 908f7514..6475a49c 100755 --- a/.github/workflows/scripts/before_script.sh +++ b/.github/workflows/scripts/before_script.sh @@ -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" diff --git a/.github/workflows/scripts/install.sh b/.github/workflows/scripts/install.sh index 13676ea3..14721c4d 100755 --- a/.github/workflows/scripts/install.sh +++ b/.github/workflows/scripts/install.sh @@ -17,8 +17,8 @@ source .github/workflows/scripts/utils.sh PIP_REQUIREMENTS=("pulp-cli-ostree" "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} @@ -33,7 +33,7 @@ fi fi # Check out the pulp-cli-ostree branch matching the installed version. -PULP_CLI_VERSION="$(pip freeze | sed -n -e 's/pulp-cli-ostree==//p')" +PULP_CLI_VERSION="$(uv pip freeze | sed -n -e 's/pulp-cli-ostree==//p')" git clone --depth 1 --branch "$PULP_CLI_VERSION" https://github.com/pulp/pulp-cli-ostree.git ../pulp-cli-ostree PULP_API_ROOT="$(yq -r '.pulp_scenario_settings.api_root // .pulp_settings.api_root // "/pulp/"' < .ci/ansible/vars/main.yaml)" diff --git a/.github/workflows/scripts/script.sh b/.github/workflows/scripts/script.sh index 6ef0191e..9434de77 100755 --- a/.github/workflows/scripts/script.sh +++ b/.github/workflows/scripts/script.sh @@ -109,7 +109,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 CERTIFI=$(cmd_prefix python3 -c 'import certifi; print(certifi.where())') cmd_prefix bash -c "cat /etc/pulp/certs/pulp_webserver.crt >> '$CERTIFI'" @@ -145,13 +145,7 @@ fi # 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-ostree -if [[ -f "test_requirements.txt" ]] -then - pip install -r test_requirements.txt - pytest -v tests -m "pulp_ostree" -else - PULP_CA_BUNDLE="/usr/local/share/ca-certificates/pulp_webserver.crt" make livetest PYTEST_MARK="live and (pulp_ostree)" -fi +PULP_CA_BUNDLE="/usr/local/share/ca-certificates/pulp_webserver.crt" make paralleltest PYTEST_MARK="live and (pulp_ostree)" popd if [ -f "$POST_SCRIPT" ]; then diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3f32cf4b..092f3ecf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,6 +14,9 @@ on: required: true type: "string" +env: + UV_SYSTEM_PYTHON: "1" + defaults: run: working-directory: "pulp_ostree" @@ -41,7 +44,6 @@ jobs: - uses: "actions/setup-python@v6" with: python-version: "3.11" - - name: "Install uv" uses: "astral-sh/setup-uv@v7" with: @@ -75,7 +77,7 @@ jobs: - 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/pulp_ostree/.ci/assets/httpie/" >> $GITHUB_ENV - name: "Set environment variables" @@ -145,5 +147,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 ... diff --git a/.github/workflows/update-labels.yml b/.github/workflows/update-labels.yml index f680f109..f1b1bfa1 100644 --- a/.github/workflows/update-labels.yml +++ b/.github/workflows/update-labels.yml @@ -15,6 +15,9 @@ on: paths: - "template_config.yml" +env: + UV_SYSTEM_PYTHON: "1" + jobs: update_backport_labels: runs-on: "ubuntu-latest" @@ -22,13 +25,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 Git with pulpbot name and email" run: | git config --global user.name 'pulpbot' git config --global user.email 'pulp-infra@redhat.com' - name: "Install python dependencies" run: | - pip install requests pyyaml + uv pip install requests pyyaml - uses: "actions/checkout@v6" - name: "Update labels" run: | diff --git a/.github/workflows/update_ci.yml b/.github/workflows/update_ci.yml index 3cf71bea..89337d77 100644 --- a/.github/workflows/update_ci.yml +++ b/.github/workflows/update_ci.yml @@ -15,6 +15,9 @@ on: - cron: "30 10 * * 0" workflow_dispatch: +env: + UV_SYSTEM_PYTHON: "1" + jobs: update: runs-on: "ubuntu-latest" @@ -32,10 +35,14 @@ 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: "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: |