From d8e058dce3b75b985ff89cb8d12871f933d9a1e5 Mon Sep 17 00:00:00 2001 From: Ying Xiang Date: Sat, 7 Feb 2026 20:49:12 +0800 Subject: [PATCH 1/2] ci: add Github Actions workflows and update setup.py --- .github/workflows/cd.yaml | 35 +++++++++++++++++++ .github/workflows/test_cd.yaml | 35 +++++++++++++++++++ .github/workflows/unittest.yaml | 61 +++++++++++++++++++++++++++++++++ setup.py | 16 +++++++++ 4 files changed, 147 insertions(+) create mode 100644 .github/workflows/cd.yaml create mode 100644 .github/workflows/test_cd.yaml create mode 100644 .github/workflows/unittest.yaml diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml new file mode 100644 index 0000000..4710925 --- /dev/null +++ b/.github/workflows/cd.yaml @@ -0,0 +1,35 @@ +name: Publish to PyPI + +on: + push: + tags: + - '[0-9]*.[0-9]*.[0-9]*' # Trigger only on tags like 2.1.6 + +permissions: + contents: read + id-token: write # For PyPI Trusted Publishing + +jobs: + build-and-publish: + name: Build and publish Python distribution + runs-on: ubuntu-24.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install build dependencies + run: | + python -m pip install --upgrade pip + pip install build + + - name: Build package + run: python -m build + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/.github/workflows/test_cd.yaml b/.github/workflows/test_cd.yaml new file mode 100644 index 0000000..447ab02 --- /dev/null +++ b/.github/workflows/test_cd.yaml @@ -0,0 +1,35 @@ +name: Publish to TestPyPI + +on: + push: + tags: + - '[0-9]*.[0-9]*.[0-9]*.test*' # Trigger only on tags like 2.1.6.test1 + +jobs: + build-and-publish: + name: Build and publish Python distribution + runs-on: ubuntu-24.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install build dependencies + run: | + python -m pip install --upgrade pip + pip install build + + - name: Build package + run: python -m build + + - name: Publish to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ + password: ${{ secrets.TEST_PYPI_API_TOKEN }} + skip-existing: true diff --git a/.github/workflows/unittest.yaml b/.github/workflows/unittest.yaml new file mode 100644 index 0000000..509567e --- /dev/null +++ b/.github/workflows/unittest.yaml @@ -0,0 +1,61 @@ +name: Unittest + +on: + push: + branches: + - '**' + pull_request: + branches: + - '**' + workflow_dispatch: + +jobs: + test-py27: + runs-on: ubuntu-24.04 + container: python:2.7 + services: + redis: + image: redis:6.2 + ports: + - 6379:6379 + mongodb: + image: mongo:5.0 + ports: + - 27017:27017 + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + pip install --upgrade pip + pip install "pytest<5" mock pytest-cov + pip install .[redis,memory,mongodb] + + - name: Test with pytest + run: | + python -m pytest app/ + + test-py38: + runs-on: ubuntu-24.04 + container: python:3.8 + services: + redis: + image: redis:6.2 + ports: + - 6379:6379 + mongodb: + image: mongo:5.0 + ports: + - 27017:27017 + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + pip install --upgrade pip + pip install pytest pytest-cov + pip install .[redis,memory,mongodb] + + - name: Test with pytest + run: | + python -m pytest app/ diff --git a/setup.py b/setup.py index 5f9bf9d..18d41ef 100644 --- a/setup.py +++ b/setup.py @@ -68,5 +68,21 @@ def get_version(): "apscheduler[gevent] == 3.8.1;python_version == '2.7'", "apscheduler[gevent] < 4.0;python_version >= '3.7'", ], + "docs": [ + "sphinx", + "sphinxawesome-theme", + ], }, + classifiers=[ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Topic :: Software Development :: Libraries :: Python Modules", + "Operating System :: OS Independent", + ], ) From 61249c27cf9883261d0536e42d8f2e435981e0b2 Mon Sep 17 00:00:00 2001 From: "Tim Liao (Hsuan Wei Liao)" Date: Sun, 8 Feb 2026 00:47:30 +0800 Subject: [PATCH 2/2] ci: extend tags pattern to accept postfix "postN" --- .github/workflows/cd.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index 4710925..db829da 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -4,6 +4,7 @@ on: push: tags: - '[0-9]*.[0-9]*.[0-9]*' # Trigger only on tags like 2.1.6 + - '[0-9]*.[0-9]*.[0-9]*.post*' # Trigger only on tags like 2.1.6.post1 permissions: contents: read