name: PyPI Release on: workflow_dispatch: push: tags: - 'v[0-9]+.[0-9]+.[0-9]+' jobs: build_and_publish: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: 3.x - name: Install dependencies run: | python -m pip install --upgrade pip pip install build setuptools wheel twine importlib-metadata==7.2.1 - name: Build and publish env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | python -m build twine upload dist/*