Repository navigation
feat: add API resources and harden SDK #8
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| concurrency: | |
| group: release-${{ github.ref }} | |
| cancel-in-progress: false | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| name: Build distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Set up Python | |
| uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| python-version: "3.14" | |
| cache: pip | |
| cache-dependency-path: pyproject.toml | |
| - name: Verify release tag matches package version | |
| env: | |
| RELEASE_TAG: ${{ github.ref_name }} | |
| run: >- | |
| python -c 'import os, runpy; | |
| version = runpy.run_path("src/assinafy/_version.py")["__version__"]; | |
| tag = os.environ["RELEASE_TAG"]; | |
| assert tag == f"v{version}", f"{tag!r} does not match v{version}"' | |
| - name: Install SDK and build tooling | |
| run: python -m pip install -e ".[dev]" build twine | |
| - name: Lint (ruff) | |
| run: ruff check src tests scripts | |
| - name: Format check (ruff) | |
| run: ruff format --check src tests scripts | |
| - name: Type check (mypy) | |
| run: mypy src | |
| - name: Test (pytest) | |
| run: pytest -q --cov=assinafy --cov-branch --cov-fail-under=90 --cov-report=term-missing | |
| - name: Build sdist and wheel | |
| run: python -m build | |
| - name: Check distribution metadata | |
| run: python -m twine check dist/* | |
| - name: Verify installed wheel | |
| env: | |
| RELEASE_TAG: ${{ github.ref_name }} | |
| run: | | |
| python -m venv "$RUNNER_TEMP/assinafy-wheel-test" | |
| "$RUNNER_TEMP/assinafy-wheel-test/bin/python" -m pip install dist/*.whl | |
| "$RUNNER_TEMP/assinafy-wheel-test/bin/python" -c 'import os; from importlib.metadata import version; import assinafy; expected = os.environ["RELEASE_TAG"].removeprefix("v"); assert version("assinafy") == expected == assinafy.__version__' | |
| - name: Upload artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: dist | |
| path: dist/ | |
| publish-pypi: | |
| name: Publish to PyPI | |
| runs-on: ubuntu-latest | |
| needs: build | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/assinafy | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: dist | |
| path: dist/ | |
| - name: Publish via PyPI Trusted Publishing | |
| uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2 |