Skip to content

Commit 1b47aef

Browse files
mivertowskiclaude
andcommitted
Update CI and publish workflows to match Rust SDK pattern
CI: add package build verification job alongside lint, typecheck, and test matrix. Publish: add verify step (lint + typecheck + test) before PyPI publish, and create GitHub Release with generated notes on tag push. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 66abfaf commit 1b47aef

File tree

2 files changed

+98
-0
lines changed

2 files changed

+98
-0
lines changed

.github/workflows/ci.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
lint:
11+
name: Lint
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: astral-sh/setup-uv@v4
16+
- run: uv sync
17+
- run: uv run ruff check src/ tests/
18+
- run: uv run ruff format --check src/ tests/
19+
20+
typecheck:
21+
name: Typecheck
22+
runs-on: ubuntu-latest
23+
steps:
24+
- uses: actions/checkout@v4
25+
- uses: astral-sh/setup-uv@v4
26+
- run: uv sync
27+
- run: uv run mypy src/
28+
29+
test:
30+
name: Test (Python ${{ matrix.python-version }})
31+
runs-on: ubuntu-latest
32+
strategy:
33+
matrix:
34+
python-version: ["3.11", "3.12", "3.13"]
35+
steps:
36+
- uses: actions/checkout@v4
37+
- uses: astral-sh/setup-uv@v4
38+
with:
39+
python-version: ${{ matrix.python-version }}
40+
- run: uv sync
41+
- run: uv run pytest --cov=vynco --cov-report=term-missing
42+
43+
package:
44+
name: Package
45+
runs-on: ubuntu-latest
46+
steps:
47+
- uses: actions/checkout@v4
48+
- uses: astral-sh/setup-uv@v4
49+
- run: uv build

.github/workflows/publish.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Publish to PyPI
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
permissions:
9+
id-token: write
10+
contents: write
11+
12+
jobs:
13+
verify:
14+
name: Verify
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: astral-sh/setup-uv@v4
19+
- run: uv sync
20+
- run: uv run ruff check src/ tests/
21+
- run: uv run ruff format --check src/ tests/
22+
- run: uv run mypy src/
23+
- run: uv run pytest
24+
- run: uv build
25+
26+
publish:
27+
name: Publish
28+
needs: verify
29+
runs-on: ubuntu-latest
30+
environment: pypi
31+
steps:
32+
- uses: actions/checkout@v4
33+
- uses: astral-sh/setup-uv@v4
34+
- run: uv build
35+
- uses: pypa/gh-action-pypi-publish@release/v1
36+
37+
release:
38+
name: GitHub Release
39+
needs: publish
40+
runs-on: ubuntu-latest
41+
permissions:
42+
contents: write
43+
steps:
44+
- uses: actions/checkout@v4
45+
- name: Create GitHub Release
46+
env:
47+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48+
TAG_NAME: ${{ github.ref_name }}
49+
run: gh release create "$TAG_NAME" --generate-notes --title "$TAG_NAME"

0 commit comments

Comments
 (0)