Skip to content

Commit df5b4bb

Browse files
DanMeonclaude
andcommitted
ci: 매트릭스 확장 및 publish 워크플로우 dry-run 지원
변경사항: - 테스트 매트릭스에 Linux py3.10/3.11/3.12 추가 (Linux × 전 버전 런타임 검증, pydantic-core 패턴) - publish.yml에 `workflow_dispatch` 트리거 추가 (실 업로드 없이 wheel 빌드만 검증 가능) - `verify-version` / `publish` 잡에 `if: github.event_name == 'release'` 가드 추가 - `build-*` / `sdist` 잡의 `needs: [verify-version]` 제거 → workflow_dispatch 시에도 실행 - `publish` 잡의 `needs`에 `verify-version` 포함 (병렬 실행 후 최종 검증) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 1dd51f8 commit df5b4bb

2 files changed

Lines changed: 11 additions & 6 deletions

File tree

.github/workflows/ci.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ concurrency:
1717

1818
jobs:
1919
# * 메인 테스트 + 린트 + 타입체크
20-
# abi3-py39 wheel 하나로 3.9~3.13+ 모두 커버하므로 버전별 반복 대신 양끝 + OS 스모크만.
20+
# abi3-py39 wheel 로 빌드는 한 번이지만 런타임 동작은 버전별 검증 필요 → Linux × 전 버전.
21+
# macOS / Windows 는 OS 레이어 스모크이므로 py3.12 하나만.
2122
test:
2223
name: Test (${{ matrix.os }} / py${{ matrix.python }})
2324
runs-on: ${{ matrix.os }}
@@ -26,6 +27,9 @@ jobs:
2627
matrix:
2728
include:
2829
- { os: ubuntu-latest, python: "3.9", lint: true }
30+
- { os: ubuntu-latest, python: "3.10" }
31+
- { os: ubuntu-latest, python: "3.11" }
32+
- { os: ubuntu-latest, python: "3.12" }
2933
- { os: ubuntu-latest, python: "3.13" }
3034
- { os: macos-latest, python: "3.12" }
3135
- { os: windows-latest, python: "3.12" }

.github/workflows/publish.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ name: Publish to PyPI
33
on:
44
release:
55
types: [published]
6+
# 수동 트리거 시 wheel 빌드만 검증하고 실제 업로드는 skip (dry-run)
7+
workflow_dispatch: {}
68

79
permissions:
810
contents: read
@@ -13,6 +15,7 @@ concurrency:
1315

1416
jobs:
1517
verify-version:
18+
if: github.event_name == 'release'
1619
runs-on: ubuntu-latest
1720
steps:
1821
- uses: actions/checkout@v6
@@ -33,7 +36,6 @@ jobs:
3336
3437
build-linux:
3538
name: Build Linux wheel (${{ matrix.target }})
36-
needs: [verify-version]
3739
runs-on: ubuntu-latest
3840
strategy:
3941
matrix:
@@ -55,7 +57,6 @@ jobs:
5557

5658
build-macos:
5759
name: Build macOS wheel (${{ matrix.target }})
58-
needs: [verify-version]
5960
runs-on: macos-latest
6061
strategy:
6162
matrix:
@@ -79,7 +80,6 @@ jobs:
7980

8081
build-windows:
8182
name: Build Windows wheel
82-
needs: [verify-version]
8383
runs-on: windows-latest
8484
steps:
8585
- uses: actions/checkout@v6
@@ -99,7 +99,6 @@ jobs:
9999

100100
sdist:
101101
name: Build sdist
102-
needs: [verify-version]
103102
runs-on: ubuntu-latest
104103
steps:
105104
- uses: actions/checkout@v6
@@ -115,8 +114,10 @@ jobs:
115114
path: dist/*.tar.gz
116115

117116
publish:
117+
# 실 PyPI 업로드는 release 이벤트일 때만. workflow_dispatch 에서는 skip (dry-run).
118+
if: github.event_name == 'release'
118119
runs-on: ubuntu-latest
119-
needs: [build-linux, build-macos, build-windows, sdist]
120+
needs: [verify-version, build-linux, build-macos, build-windows, sdist]
120121
permissions:
121122
id-token: write
122123
steps:

0 commit comments

Comments
 (0)