Skip to content

Upload Python Package #89

Upload Python Package

Upload Python Package #89

Workflow file for this run

# This workflow will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Upload Python Package
on:
release:
types: [published]
jobs:
wheels:
name: Build wheels
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- "3.12"
- "3.13"
linux-compatibility:
- "manylinux_2_34"
- "musllinux_1_2"
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/[email protected]
- name: 🏗 Set up uv and Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: ${{ matrix.python-version }}
- name: 🏗 Set package version
run: |
sed -i "s/^version = \".*\"/version = \"${{ github.event.release.tag_name }}\"/" pyproject.toml
- name: 📦 Build package
run: uv build --wheel --config-settings build-args='--compatibility ${{ matrix.linux-compatibility }}'
- name: ⬆️ Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.python-version }}-${{ matrix.linux-compatibility }}
path: dist
release:
name: Releasing to PyPi
runs-on: ubuntu-latest
needs: ["wheels"]
environment:
name: release
url: https://pypi.org/manage/project/deebot-client/
permissions:
contents: write
id-token: write
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/[email protected]
- name: 🏗 Set up uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
- name: 🏗 Set package version
run: |
sed -i "s/^version = \".*\"/version = \"${{ github.event.release.tag_name }}\"/" pyproject.toml
- name: 📦 Build source package
run: uv build --sdist
- name: ⬇️ Download wheels
uses: actions/download-artifact@v4
with:
pattern: wheels-*
- name: 🚀 Publish to PyPi
run: uv publish
- name: ✍️ Sign published artifacts
uses: sigstore/[email protected]
with:
inputs: ./dist/*.tar.gz ./dist/*.whl
release-signing-artifacts: true