From 858b6177dcdf7536cee76a1640471a2994fdb489 Mon Sep 17 00:00:00 2001 From: Marko Toplak Date: Tue, 15 Oct 2024 10:41:46 +0200 Subject: [PATCH] Release workflow --- .github/workflows/release.yml | 76 +++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..b6ae54f3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,76 @@ +name: Release +on: + release: + types: [published] + workflow_dispatch: + +jobs: + build_dist_files: + # Build source distribution and wheel if package is pure python + name: Build distribution files + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install build tool + run: python -m pip install build + + - name: Build sdist + run: python -m build --sdist . + + - name: Build wheel + run: python -m build --wheel . + + - name: Upload dist files + uses: actions/upload-artifact@v4 + with: + name: dist-sdist + path: dist/* + + upload_release_assets: + name: Upload Release Assets + needs: [build_dist_files] + # run eventhough job in need is skipped + if: always() && !failure() && !cancelled() && startsWith(github.ref, 'refs/tags') + runs-on: ubuntu-latest + + steps: + - uses: actions/download-artifact@v4 + with: + # unpacks all dist artifacts into dist/ + pattern: dist-* + path: dist + merge-multiple: true + + - name: Upload to release + uses: shogo82148/actions-upload-release-asset@v1 + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: dist/*.whl + + pypi_publish: + name: PyPI Publish + needs: [build_dist_files] + runs-on: ubuntu-latest + permissions: + id-token: write # this permission is mandatory for trusted publishing + # run eventhough job in need is skipped + if: always() && !failure() && !cancelled() && startsWith(github.ref, 'refs/tags') + + steps: + - uses: actions/download-artifact@v4 + with: + # unpacks all dist artifacts into dist/ + pattern: dist-* + path: dist + merge-multiple: true + + - name: Publish packages to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_API_TOKEN }} + packages_dir: dist/