Set up publishing to PyPI and Test-PyPI (#2721)

This commit is contained in:
Mike Drob
2025-11-03 16:20:11 +01:00
committed by GitHub
parent 93d76b0f30
commit 50514a6146

View File

@@ -10,6 +10,15 @@ permissions:
contents: read contents: read
jobs: jobs:
setup:
runs-on: ubuntu-latest
outputs:
pypi_env: ${{ github.event_name == 'push' && 'pypi' || 'test-pypi' }}
pypi_url: ${{ github.event_name == 'push' && 'https://upload.pypi.org/legacy/' || 'https://test.pypi.org/legacy/' }}
steps:
- name: Set publishing variables
run: echo "Publishing setup complete"
build_documentation: build_documentation:
runs-on: [self-hosted, macos] runs-on: [self-hosted, macos]
steps: steps:
@@ -108,81 +117,90 @@ jobs:
pypi-publish: pypi-publish:
name: Upload release to PyPI name: Upload release to PyPI
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [build_linux_release, build_mac_release] needs: [setup, build_linux_release, build_mac_release]
permissions: permissions:
id-token: write id-token: write
environment: environment:
name: pypi name: ${{ needs.setup.outputs.pypi_env }}
url: https://pypi.org/p/mlx url: https://pypi.org/p/mlx
steps: steps:
- uses: actions/download-artifact@v6 - uses: actions/download-artifact@v6
with: with:
pattern: linux-wheels-* pattern: linux-wheels-*
merge-multiples: true merge-multiples: true
path: artifacts path: dist
- uses: actions/download-artifact@v6 - uses: actions/download-artifact@v6
with: with:
pattern: mac-wheels-* pattern: mac-wheels-*
merge-multiples: true merge-multiples: true
path: artifacts path: dist
- name: Display structure of downloaded files - name: Display structure of downloaded files
run: ls -R artifacts run: ls -R dist
# - name: Publish package distributions to PyPI - name: Publish package distributions to PyPI
# uses: pypa/gh-action-pypi-publish@release/v1 uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: ${{ needs.setup.outputs.pypi_url }}
pypi-publish-cuda: pypi-publish-cuda:
name: Upload CUDA release to PyPI name: Upload CUDA release to PyPI
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: build_cuda_release needs: [setup, build_cuda_release]
permissions: permissions:
id-token: write id-token: write
environment: environment:
name: pypi name: ${{ needs.setup.outputs.pypi_env }}
url: https://pypi.org/p/mlx-cuda url: https://pypi.org/p/mlx-cuda
steps: steps:
- uses: actions/download-artifact@v6 - uses: actions/download-artifact@v6
with: with:
name: mlx-cuda name: mlx-cuda
path: artifacts path: dist
- name: Display structure of downloaded files - name: Display structure of downloaded files
run: ls -R artifacts run: ls -R dist
# - name: Publish package distributions to PyPI - name: Publish package distributions to PyPI
# uses: pypa/gh-action-pypi-publish@release/v1 uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: ${{ needs.setup.outputs.pypi_url }}
pypi-publish-cpu: pypi-publish-cpu:
name: Upload CPU release to PyPI name: Upload CPU release to PyPI
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: build_linux_release needs: [setup, build_linux_release]
permissions: permissions:
id-token: write id-token: write
environment: environment:
name: pypi name: ${{ needs.setup.outputs.pypi_env }}
url: https://pypi.org/p/mlx-cpu url: https://pypi.org/p/mlx-cpu
steps: steps:
- uses: actions/download-artifact@v6 - uses: actions/download-artifact@v6
with: with:
name: mlx-cpu name: mlx-cpu
path: artifacts path: dist
- name: Display structure of downloaded files - name: Display structure of downloaded files
run: ls -R artifacts run: ls -R dist
# - name: Publish package distributions to PyPI - name: Publish package distributions to PyPI
# uses: pypa/gh-action-pypi-publish@release/v1 uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: ${{ needs.setup.outputs.pypi_url }}
pypi-publish-metal: pypi-publish-metal:
name: Upload Metal release to PyPI name: Upload Metal release to PyPI
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: build_mac_release needs: [setup, build_mac_release]
permissions: permissions:
id-token: write id-token: write
environment: environment:
name: pypi name: ${{ needs.setup.outputs.pypi_env }}
url: https://pypi.org/p/mlx-metal url: https://pypi.org/p/mlx-metal
steps: steps:
- uses: actions/download-artifact@v6 - uses: actions/download-artifact@v6
with: with:
name: mlx-metal name: mlx-metal
path: artifacts path: dist
- name: Display structure of downloaded files - name: Display structure of downloaded files
run: ls -R artifacts run: ls -R dist
# - name: Publish package distributions to PyPI - name: Publish package distributions to PyPI
# uses: pypa/gh-action-pypi-publish@release/v1 uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: ${{ needs.setup.outputs.pypi_url }}