name: Publish on PyPI on: push jobs: build: name: Build distribution if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - uses: actions/setup-python@v6 with: python-version: "3.x" - run: sudo apt-get update - run: sudo apt-get install autoconf-archive - run: pip install build - name: Cache GNU GMP builds id: cache-gmp uses: actions/cache@v5 with: path: .local key: ${{ matrix.os }}-${{ hashFiles('scripts/*') }} - run: bash scripts/cibw_before_all.sh if: steps.cache-gmp.outputs.cache-hit != 'true' - run: python -m build -s env: PKG_CONFIG_PATH: ${{ github.workspace }}/.local/lib/pkgconfig - uses: actions/upload-artifact@v7 with: name: python-gmp-sdist path: dist/ wheels: uses: ./.github/workflows/wheels.yml if: startsWith(github.ref, 'refs/tags/') publish-to-pypi: name: Publish distribution to PyPI needs: - build - wheels runs-on: ubuntu-24.04 environment: name: pypi url: https://pypi.org/p/python-gmp permissions: id-token: write steps: - uses: actions/download-artifact@v8 with: pattern: python-gmp-* path: dist/ merge-multiple: true - uses: pypa/gh-action-pypi-publish@release/v1 github-release: name: >- Sign the Python distribution with Sigstore and upload them to GitHub Release needs: - publish-to-pypi runs-on: ubuntu-24.04 permissions: contents: write id-token: write steps: - uses: actions/download-artifact@v8 with: pattern: python-gmp-* path: dist/ merge-multiple: true - uses: sigstore/gh-action-sigstore-python@v3.3.0 with: inputs: >- ./dist/*.tar.gz ./dist/*.whl - name: Create GitHub Release env: GITHUB_TOKEN: ${{ github.token }} run: | PRERELEASE_FLAG="" if [[ "${{ github.ref_name }}" =~ [ab][0-9] ]] then PRERELEASE_FLAG="--prerelease" fi gh release create '${{ github.ref_name }}' \ --repo '${{ github.repository }}' ${PRERELEASE_FLAG} \ --generate-notes - name: Upload artifact signatures to GitHub Release env: GITHUB_TOKEN: ${{ github.token }} run: >- gh release upload '${{ github.ref_name }}' dist/** --repo '${{ github.repository }}'