From 6ebffb9db7814305182f059db7a59212ed77bb3a Mon Sep 17 00:00:00 2001 From: Sachaa-Thanasius Date: Tue, 10 Sep 2024 07:58:22 +0530 Subject: [PATCH] Add a draft of a release workflow --- .github/workflows/release.yml | 115 ++++++++++++++++++++++++++++++++++ 1 file changed, 115 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 0000000..b785239 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,115 @@ +# Based on a packaging guide at https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ +name: Release + +on: + push: + branches: [main] + tags: ["*"] + workflow_dispatch: + +jobs: + build: + name: Build distribution + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Install pypa/build + run: | + python3 -m pip install build + + - name: Build a binary wheel and a source tarball + run: | + python3 -m build + + - name: Store the distribution packages + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + publish-to-testpypi: + name: Publish distribution to TestPyPI + needs: [build] + runs-on: ubuntu-latest + + environment: + name: test-release + url: https://test.pypi.org/p/defer-imports + + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + - name: Publish package distributions to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ + + publish-to-pypi: + name: Publish distribution to PyPI + needs: [publish-to-testpypi] + runs-on: ubuntu-latest + + environment: + name: release + url: https://pypi.org/p/defer-imports + + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + + release-on-github: + name: Upload distributions to GitHub Release + needs: [publish-to-pypi] + runs-on: ubuntu-latest + + permissions: + contents: write # IMPORTANT: mandatory for making GitHub Releases + + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + - name: Create GitHub Release + env: + GITHUB_TOKEN: ${{ github.token }} + run: >- + gh release create + '${{ github.ref_name }}' + --repo '${{ github.repository }}' + --notes "" + + - name: Upload artifacts to GitHub Release + env: + GITHUB_TOKEN: ${{ github.token }} + run: >- + gh release upload + '${{ github.ref_name }}' dist/** + --repo '${{ github.repository }}'