diff --git a/.github/workflows/build_wheels_macos.yml b/.github/workflows/build_wheels_macos.yml index 106b10cc..37ab4c56 100644 --- a/.github/workflows/build_wheels_macos.yml +++ b/.github/workflows/build_wheels_macos.yml @@ -153,6 +153,9 @@ jobs: needs: [Build, Test] runs-on: ubuntu-22.04 environment: opencv-python-rolling-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -161,28 +164,46 @@ jobs: with: name: wheels path: wheelhouse/ - - name: Upload wheels for opencv_python_rolling + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_python_rolling-* + mkdir dist dist-contrib dist-headless dist-contrib-headless + cp wheelhouse/opencv_python_rolling-* dist/ + cp wheelhouse/opencv_contrib_python_rolling-* dist-contrib/ + cp wheelhouse/opencv_python_headless_rolling-* dist-headless/ + cp wheelhouse/opencv_contrib_python_headless_rolling-* dist-contrib-headless/ + - name: Upload wheels for opencv_python_rolling + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-headless/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib-headless/ + print-hash: true + skip-existing: true Pre-release: if: github.event_name == 'release' && github.event.release.prerelease needs: [Build, Test] runs-on: ubuntu-22.04 environment: test-opencv-python-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -191,16 +212,27 @@ jobs: with: name: wheels path: wheelhouse/ - - name: Upload all wheels + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/opencv_* + mkdir dist + cp wheelhouse/opencv_* dist/ + - name: Upload all wheels + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + repository-url: https://test.pypi.org/legacy/ + skip-existing: true + verbose: true Release: if: github.event_name == 'release' && !github.event.release.prerelease needs: [Build, Test] runs-on: ubuntu-22.04 environment: opencv-python-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -209,19 +241,34 @@ jobs: with: name: wheels path: wheelhouse/ - - name: Upload wheels for opencv_python + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_python-* + mkdir dist dist-contrib dist-headless dist-contrib-headless + cp wheelhouse/opencv_python-* dist/ + cp wheelhouse/opencv_contrib_python-* dist-contrib/ + cp wheelhouse/opencv_python_headless-* dist-headless/ + cp wheelhouse/opencv_contrib_python_headless-* dist-contrib-headless/ + - name: Upload wheels for opencv_python + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-headless/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib-headless/ + print-hash: true + skip-existing: true diff --git a/.github/workflows/build_wheels_macos_m1.yml b/.github/workflows/build_wheels_macos_m1.yml index e38d286f..0dabd624 100644 --- a/.github/workflows/build_wheels_macos_m1.yml +++ b/.github/workflows/build_wheels_macos_m1.yml @@ -119,6 +119,9 @@ jobs: needs: [Build, Test] runs-on: ubuntu-22.04 environment: opencv-python-rolling-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -127,28 +130,46 @@ jobs: with: name: wheels path: wheelhouse/ - - name: Upload wheels for opencv_python_rolling + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_python_rolling-* + mkdir dist dist-contrib dist-headless dist-contrib-headless + cp wheelhouse/opencv_python_rolling-* dist/ + cp wheelhouse/opencv_contrib_python_rolling-* dist-contrib/ + cp wheelhouse/opencv_python_headless_rolling-* dist-headless/ + cp wheelhouse/opencv_contrib_python_headless_rolling-* dist-contrib-headless/ + - name: Upload wheels for opencv_python_rolling + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-headless/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib-headless/ + print-hash: true + skip-existing: true Pre-release: if: github.event_name == 'release' && github.event.release.prerelease needs: [Build, Test] runs-on: ubuntu-22.04 environment: test-opencv-python-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -157,16 +178,27 @@ jobs: with: name: wheels path: wheelhouse/ - - name: Upload all wheels + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/opencv_* + mkdir dist + cp wheelhouse/opencv_* dist/ + - name: Upload all wheels + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + repository-url: https://test.pypi.org/legacy/ + skip-existing: true + verbose: true Release: if: github.event_name == 'release' && !github.event.release.prerelease needs: [Build, Test] runs-on: ubuntu-22.04 environment: opencv-python-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -175,19 +207,34 @@ jobs: with: name: wheels path: wheelhouse/ - - name: Upload wheels for opencv_python + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_python-* + mkdir dist dist-contrib dist-headless dist-contrib-headless + cp wheelhouse/opencv_python-* dist/ + cp wheelhouse/opencv_contrib_python-* dist-contrib/ + cp wheelhouse/opencv_python_headless-* dist-headless/ + cp wheelhouse/opencv_contrib_python_headless-* dist-contrib-headless/ + - name: Upload wheels for opencv_python + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-headless/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib-headless/ + print-hash: true + skip-existing: true diff --git a/.github/workflows/build_wheels_manylinux.yml b/.github/workflows/build_wheels_manylinux.yml index b8e47334..ba844bc6 100644 --- a/.github/workflows/build_wheels_manylinux.yml +++ b/.github/workflows/build_wheels_manylinux.yml @@ -203,6 +203,9 @@ jobs: needs: [Build, Test] runs-on: ubuntu-22.04 environment: opencv-python-rolling-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -210,29 +213,46 @@ jobs: - uses: actions/download-artifact@v4 with: path: wheelhouse/ - - - name: Upload wheels for opencv_python_rolling + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_rolling-* + mkdir dist dist-contrib dist-headless dist-contrib-headless + cp wheelhouse/wheel-*/opencv_python_rolling-* dist/ + cp wheelhouse/wheel-*/opencv_contrib_python_rolling-* dist-contrib/ + cp wheelhouse/wheel-*/opencv_python_headless_rolling-* dist-headless/ + cp wheelhouse/wheel-*/opencv_contrib_python_headless_rolling-* dist-contrib-headless/ + - name: Upload wheels for opencv_python_rolling + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_headless_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-headless/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_headless_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib-headless/ + print-hash: true + skip-existing: true Pre-release: if: github.event_name == 'release' && github.event.release.prerelease needs: [Build, Build_sdist, Test] runs-on: ubuntu-22.04 environment: test-opencv-python-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -240,17 +260,27 @@ jobs: - uses: actions/download-artifact@v4 with: path: wheelhouse/ - - - name: Upload all wheels + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_* wheelhouse/wheel-*/opencv-* + mkdir dist + cp wheelhouse/wheel-*/opencv_* wheelhouse/wheel-*/opencv-* dist/ + - name: Upload all wheels + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + repository-url: https://test.pypi.org/legacy/ + skip-existing: true + verbose: true Release: if: github.event_name == 'release' && !github.event.release.prerelease needs: [Build, Build_sdist, Test] runs-on: ubuntu-22.04 environment: opencv-python-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -258,19 +288,34 @@ jobs: - uses: actions/download-artifact@v4 with: path: wheelhouse/ - - name: Upload wheels for opencv_python + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python-* wheelhouse/wheel-*/opencv-python-[^h]* + mkdir dist dist-contrib dist-headless dist-contrib-headless + cp wheelhouse/wheel-*/opencv_python-* wheelhouse/wheel-*/opencv-python-[^h]* dist/ + cp wheelhouse/wheel-*/opencv_contrib_python-* wheelhouse/wheel-*/opencv-contrib-python-[^h]* dist-contrib/ + cp wheelhouse/wheel-*/opencv_python_headless-* wheelhouse/wheel-*/opencv-python-headless-* dist-headless/ + cp wheelhouse/wheel-*/opencv_contrib_python_headless-* wheelhouse/wheel-*/opencv-contrib-python-headless-* dist-contrib-headless/ + - name: Upload wheels for opencv_python + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python-* wheelhouse/wheel-*/opencv-contrib-python-[^h]* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_python_headless-* wheelhouse/wheel-*/opencv-python-headless-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-headless/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/wheel-*/opencv_contrib_python_headless-* wheelhouse/wheel-*/opencv-contrib-python-headless-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib-headless/ + print-hash: true + skip-existing: true diff --git a/.github/workflows/build_wheels_windows.yml b/.github/workflows/build_wheels_windows.yml index 580bdd57..852cfd57 100644 --- a/.github/workflows/build_wheels_windows.yml +++ b/.github/workflows/build_wheels_windows.yml @@ -138,6 +138,9 @@ jobs: needs: [Build, Test] runs-on: ubuntu-22.04 environment: opencv-python-rolling-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -145,28 +148,46 @@ jobs: - uses: actions/download-artifact@v4 with: path: wheelhouse/ - - name: Upload wheels for opencv_python_rolling + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_python_rolling-* + mkdir dist dist-contrib dist-headless dist-contrib-headless + cp wheelhouse/opencv_python_rolling-* dist/ + cp wheelhouse/opencv_contrib_python_rolling-* dist-contrib/ + cp wheelhouse/opencv_python_headless_rolling-* dist-headless/ + cp wheelhouse/opencv_contrib_python_headless_rolling-* dist-contrib-headless/ + - name: Upload wheels for opencv_python_rolling + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-headless/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_headless_rolling - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_ROLLING_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless_rolling-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib-headless/ + print-hash: true + skip-existing: true Pre-release: if: github.event_name == 'release' && github.event.release.prerelease needs: [Build, Test] runs-on: ubuntu-22.04 environment: test-opencv-python-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -174,16 +195,27 @@ jobs: - uses: actions/download-artifact@v4 with: path: wheelhouse/ - - name: Upload all wheels + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload --repository testpypi -u ${{ secrets.PYPI_USERNAME }} -p ${{ secrets.PYPI_PASSWORD }} --skip-existing wheelhouse/opencv_* + mkdir dist + cp wheelhouse/opencv_* dist/ + - name: Upload all wheels + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + repository-url: https://test.pypi.org/legacy/ + skip-existing: true + verbose: true Release: if: github.event_name == 'release' && !github.event.release.prerelease needs: [Build, Test] runs-on: ubuntu-22.04 environment: opencv-python-release + permissions: + contents: read + id-token: write defaults: run: shell: bash @@ -191,19 +223,34 @@ jobs: - uses: actions/download-artifact@v4 with: path: wheelhouse/ - - name: Upload wheels for opencv_python + - name: Select only OpenCV wheels run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_python-* + mkdir dist dist-contrib dist-headless dist-contrib-headless + cp wheelhouse/opencv_python-* dist/ + cp wheelhouse/opencv_contrib_python-* dist-contrib/ + cp wheelhouse/opencv_python_headless-* dist-headless/ + cp wheelhouse/opencv_contrib_python_headless-* dist-contrib-headless/ + - name: Upload wheels for opencv_python + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_python_headless-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-headless/ + print-hash: true + skip-existing: true - name: Upload wheels for opencv_contrib_python_headless - run: | - python -m pip install twine - python -m twine upload -u ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_USERNAME }} -p ${{ secrets.OPENCV_CONTRIB_PYTHON_HEADLESS_PASSWORD }} --skip-existing wheelhouse/opencv_contrib_python_headless-* + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: dist-contrib-headless/ + print-hash: true + skip-existing: true diff --git a/README.md b/README.md index 6de64d64..de19e3a1 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ The build process for a single entry in the build matrices is as follows (see fo 6. Install the generated wheel 7. Test that Python can import the library and run some sanity checks -8. Use twine to upload the generated wheel to PyPI (only in release builds) +8. Use the [official PyPI publish action](https://github.com/pypa/gh-action-pypi-publish) to upload the generated wheel to PyPI (only in release builds) Steps 1--4 are handled by ``pip wheel``.