diff --git a/.github/workflows/pypi-distribution.yaml b/.github/workflows/pypi-distribution.yaml index 61b18d4..22dbfb0 100644 --- a/.github/workflows/pypi-distribution.yaml +++ b/.github/workflows/pypi-distribution.yaml @@ -5,148 +5,20 @@ on: workflow_dispatch: jobs: - build: - strategy: + pypi_distribution: + strategy: fail-fast: false matrix: include: - build_type: cpu + platform: ubuntu-latest + - build_type: cuda - - name: Build distribution 📦 - runs-on: ubuntu-latest + platform: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - ## runner will run out of space if we don't clear some up by removing some unused tools - - name: Clear space - run: >- - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - - - name: cuda-toolkit - if: ${{ startsWith(matrix.build_type, 'cuda') }} - uses: Jimver/cuda-toolkit@v0.2.17 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.11" - - - name: Install Protoc Ubuntu - run: sudo apt install protobuf-compiler - - - name: Install Python dependencies - uses: py-actions/py-dependency-install@v4 - with: - path: "PyTorch_requirements.txt" - - - name: Install pypa/build - run: >- - python3 -m - pip install - build - --user - - - name: Build a binary wheel and a source tarball - run: python3 -m build -v - - - name: Store the distribution packages - uses: actions/upload-artifact@v4 - with: - name: python-package-distributions - path: dist/ - - - publish-to-testpypi: - name: Publish Python 🐍 distribution 📦 to TestPyPI - needs: - - build - runs-on: ubuntu-latest - - environment: - name: testPyPi-distribution - url: https://test.pypi.org/p/nuTens - - permissions: - id-token: write # IMPORTANT: mandatory for trusted publishing - - steps: - - name: Download all the dists - uses: actions/download-artifact@v4 - with: - name: python-package-distributions - path: dist/ - - name: Publish distribution 📦 to TestPyPI - uses: pypa/gh-action-pypi-publish@release/v1 - with: - repository-url: https://test.pypi.org/legacy/ - - publish-to-pypi: - name: >- - Publish Python 🐍 distribution 📦 to PyPI - if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes - needs: - - build - runs-on: ubuntu-latest - environment: - name: PyPi-distribution - url: https://pypi.org/p/nuTens # Replace with your PyPI project name - permissions: - id-token: write # IMPORTANT: mandatory for trusted publishing + ## ./ At start of reusable workflow indicates to use the one in current repo i.e. the from the current branch + uses: ./.github/workflows/pypi-distribution-reusable.yaml + with: + platform: ${{ matrix.platform }} + build_type: ${{ matrix.build_type }} - steps: - - name: Download all the dists - uses: actions/download-artifact@v4 - with: - name: python-package-distributions - path: dist/ - - name: Publish distribution 📦 to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 - - github-release: - if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes - name: >- - Sign the Python 🐍 distribution 📦 with Sigstore - and upload them to GitHub Release - needs: - - publish-to-pypi - runs-on: ubuntu-latest - - permissions: - contents: write # IMPORTANT: mandatory for making GitHub Releases - id-token: write # IMPORTANT: mandatory for sigstore - - steps: - - name: Download all the dists - uses: actions/download-artifact@v4 - with: - name: python-package-distributions - path: dist/ - - name: Sign the dists with Sigstore - uses: sigstore/gh-action-sigstore-python@v2.1.1 - with: - inputs: >- - ./dist/*.tar.gz - ./dist/*.whl - - name: Create GitHub Release - env: - GITHUB_TOKEN: ${{ github.token }} - run: >- - gh release create - '${{ github.ref_name }}' - --repo '${{ github.repository }}' - --notes "" - - name: Upload artifact signatures to GitHub Release - env: - GITHUB_TOKEN: ${{ github.token }} - # Upload to GitHub Release using the `gh` CLI. - # `dist/` contains the built packages, and the - # sigstore-produced signatures and certificates. - run: >- - gh release upload - '${{ github.ref_name }}' dist/** - --repo '${{ github.repository }}'