From 942296119b0d6ced39ccdfc9ada33d2083e2b22c Mon Sep 17 00:00:00 2001 From: bluza Date: Tue, 15 Apr 2025 22:05:36 +0800 Subject: [PATCH] Improve worfklow to automate publishing the package to PyPI --- .github/workflows/python.yml | 25 -------- .github/workflows/test-build-publish.yml | 75 ++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 25 deletions(-) delete mode 100644 .github/workflows/python.yml create mode 100644 .github/workflows/test-build-publish.yml diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml deleted file mode 100644 index bbbb073..0000000 --- a/.github/workflows/python.yml +++ /dev/null @@ -1,25 +0,0 @@ -on: [push, pull_request] - -name: Tests - -jobs: - test: - runs-on: ubuntu-20.04 - strategy: - matrix: - python-version: ["3.9", "3.10", "3.11"] - - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install tox - - name: Test with tox - run: | - export TOX_SKIP_MISSING_INTERPRETERS="False"; - tox -e py diff --git a/.github/workflows/test-build-publish.yml b/.github/workflows/test-build-publish.yml new file mode 100644 index 0000000..7546bcd --- /dev/null +++ b/.github/workflows/test-build-publish.yml @@ -0,0 +1,75 @@ +name: DomainTools python wrapper CI/CD + +on: + push: + pull_request: + release: + types: [published] + + +jobs: + test: + runs-on: ubuntu-20.04 + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11"] + + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox + - name: Test with tox + run: | + export TOX_SKIP_MISSING_INTERPRETERS="False"; + tox -e py + + # run only in main and in pull request to `main` and in publish release + release-build: + if: | + github.ref == 'refs/heads/main' || + (github.event_name == 'pull_request' && github.base_ref == 'main') || + (github.event_name == 'release' && github.event.action == 'published') + needs: test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Install build dependencies + run: | + python -m pip install --upgrade pip + pip install build + + - name: Build package + run: python -m build + + - name: Upload distributions as artifact + uses: actions/upload-artifact@v4 + with: + name: release-dists + path: dist/ + + publish-to-pypi: + runs-on: ubuntu-latest + needs: release-build + if: github.event_name == 'release' && github.event.action == 'published' + permissions: + id-token: write # Required for OIDC trusted publishing + steps: + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + name: release-dists + path: dist/ + + - name: Publish to PyPI using API token + uses: pypa/gh-action-pypi-publish@release/v1