diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..1926c08 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,65 @@ +name: Build and Publish to PyPI or TestPyPI + +on: push + +jobs: + build: + name: Build distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.x" + - name: Install Hatch + run: pipx install hatch + - name: Build + run: hatch build + - name: Store the distribution packages + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + publish-to-pypi: + name: Publish distributions to PyPI + if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes + needs: + - build + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/wn + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + steps: + - name: Download the dists + uses: actions/download-artifact@v4.1.8 + with: + name: python-package-distributions + path: dist/ + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + + publish-to-testpypi: + name: Publish distributions to TestPyPI + needs: + - build + runs-on: ubuntu-latest + environment: + name: testpypi + url: https://test.pypi.org/p/wn + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + steps: + - name: Download the dists + uses: actions/download-artifact@v4.1.8 + with: + name: python-package-distributions + path: dist/ + - name: Publish to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ + skip-existing: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 2b6a181..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Upload to PyPI - -on: - release: - types: [created] - -jobs: - precheck: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "3.9" - - name: Install Hatch - run: pipx install hatch - - name: Lint - run: hatch fmt --linter --check - - name: Type Check - run: hatch run mypy:check - - name: Unit tests - run: hatch test - - deploy: - runs-on: ubuntu-latest - needs: [precheck] - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "3.9" - - name: Install Hatch - run: pipx install hatch - - name: Build and publish - env: - HATCH_INDEX_USER: __token__ - HATCH_INDEX_AUTH: ${{ secrets.PYPI_PASSWORD }} - run: | - hatch build - hatch publish diff --git a/CHANGELOG.md b/CHANGELOG.md index 0245bfb..342f553 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ * Switched packaging from flit to Hatch ([#201]) * Updated dependencies, CI warnings, old workarounds ([#203]) +* Change CI publishing to OIDC trusted publishing ## [v0.9.5]