CI/CD
ワークフロー
このリポジトリには GitHub Actions の workflow が 3 つあります。
Repo Checks: Pull Request とmain/codex/**への push で実行Docs Pages:mainへの push で VitePress を GitHub Pages に公開Release Package:v*タグの push で package artifact を作成し GitHub Release に添付
Repo Checks
日常開発の主な安全網です。現在は次を確認します。
- docs の必須アセットがそろっていること
- docs サイトが build できること
- メンテ対象の Python ファイルが compile できること
- メンテ対象の runtime / package ファイルが
ruffを通ること - wheel と sdist が build できること
- editable install 後に想定 entrypoint が使えること
matanyone2-runtime --helpとpython -m matanyone2 --helpが動くこと
Docs Pages
docs/ からサイトを build し、docs/.vitepress/dist を GitHub Pages にデプロイします。
つまり docs は 2 段階で検証されます。
Repo Checksで Pull Request 時点の build 健全性を確認Docs Pagesでmain更新後に同じ成果物を公開
Release Package
v0.1.0 のようなタグを push すると、release workflow は次を行います。
- sdist と wheel を build
SHA256SUMS.txtを生成- workflow artifact として保存
- GitHub Release を作成または更新
- 生成したファイルを Release に添付
- 同じ配布物を PyPI に公開
例:
powershell
git tag v0.1.0
git push origin v0.1.0PyPI の事前設定
PyPI 公開には、リポジトリ外で一度だけ設定が必要です。
- PyPI 上で
matanyone2-runtimeを作成するか、使いたい配布名を確保する - PyPI 側でこの GitHub リポジトリと workflow を trusted publisher として登録する
.github/workflows/release-package.ymlで使っているpypienvironment と対応付ける- tag release は
main系統で行い、workflow 側と PyPI 設定の整合を保つ
現在の workflow は公式の pypa/gh-action-pypi-publish と OIDC を使っているため、trusted publishing を設定すれば長期 API トークンを GitHub secrets に置かずに運用できます。
公開中のパッケージ:
push 前のローカル確認
CI に頼る前に、ローカルでは次を確認しています。
powershell
.\.venv\Scripts\python.exe -m compileall hugging_face matanyone2 scripts
.\.venv\Scripts\python.exe -m ruff check pyproject.toml hugging_face\app.py hugging_face\__init__.py scripts\run_pipeline_check.py
.\.venv\Scripts\python.exe -m ruff check matanyone2\__init__.py matanyone2\__main__.py matanyone2\cli.py matanyone2\demo_core.py matanyone2\gradio.py matanyone2\runtime.py
.\.venv\Scripts\python.exe -m buildeditable install 済みなら、次の smoke test も行えます。
powershell
.\.venv\Scripts\matanyone2-runtime.exe --help
.\.venv\Scripts\python.exe -m matanyone2 --help