継続的インテグレーション
checks、release、docs の各 GitHub Actions ワークフローと、ローカルの Mac でのリリース用バイナリのビルド。
概要
.github/workflows/ には checks.yml、release.yml、docs.yml の 3 つのワークフローがあり、いずれも Linux で動きます。費用がかかるため、macOS の GitHub Actions ランナーは使いません(2026-11-08 のオーナー判断)。ネイティブのビルド、テスト、リリース用バイナリはすべて、macOS 27 以降が動作するローカルの Apple silicon の Mac で作ります。
checks.yml: Linux でのプッシュ時チェック
engine/、tests/、fixtures/、scripts/、packaging/、Makefile、checks.yml 自体、または release.yml を変更するプッシュで実行されます(手動実行も可能です)。重複実行を避けるため、プルリクエストのトリガーはありません。同じ ref で実行中のランはキャンセルされます。
Ubuntu 上の Python 3.12.14 で、次の処理を行います。
engine/をインストールし、requirements. txt pip freezeを出力するリリースアセット検証スクリプトのテストを含む、エンジンとワーカーのテストスイートを実行する
scripts/を実行するverify_ fixtures. py - - repair engine/を実行するworker. py - - self- test パッケージング用スクリプトをバイトコンパイルし、
scripts/とbuild- macos. sh scripts/の構文をチェックするrelease- macos- local. sh
release.yml: リリースアセットの検証
GitHub Release が公開されたとき、またはタグを指定した手動実行で、Linux 上で実行されます。その Release に添付された macOS のアーカイブと .sha256 をダウンロードし、scripts/ で次の点を確認します。
チェックサム
バージョンがタグと一致すること
タグのコミットから、未コミットの変更がない作業ツリーでビルドされたこと
実行ファイルが arm64 で、最低要件が macOS 27.0 であること
バンドル済みヘルパーが含まれていること
このワークフローは何もビルドせず、公開も行いません。
ローカルの Mac でリリースを作る
macOS 27 以降の Apple silicon の Mac で、packaging/ の CFBundleShortVersionString を新しいバージョンにした、未コミットの変更がなくプッシュ済みのコミットから実行します。
scripts/release-macos-local.sh --upload v0.1.0このスクリプトは完全なパッケージングゲート(build-macos.sh)を実行し、build/ とその .sha256 を書き出して検証し、タグに対応する Release に添付します。その Release がまだなければ、下書きとして作成します。--upload を付けない場合はファイルを書き出すだけです。アップロード先は、同じコミットを対象とする未公開の下書きに限られます。公開後にファイルを差し替える場合は、新しいバージョンを作成してください。オーナーが下書きを確認して公開し、release.yml が成功することを確認します。
どのワークフローも、認証情報を使った署名、アプリのビルド、リリースの作成や公開、リポジトリ保護設定の変更は行いません。
docs.yml: ドキュメントサイト
このワークフローは、このドキュメントサイトをビルドします。doc/** を変更するプルリクエストと main へのプッシュで、Node.js 24 でサイトをビルドし、check:html、check:links、wrangler のドライランを実行します。
サイトの公開先は https:main へのプッシュか、main での Run workflow のときに動きます。手元のマシンからはデプロイしません。ジョブには CLOUDFLARE_API_TOKEN と CLOUDFLARE_ACCOUNT_ID のシークレットが必要です。シークレットがなければデプロイのステップは警告を出してスキップされ、ジョブ自体は成功します。そのため、デプロイのジョブが成功していても公開されたとは限りません。ジョブのログを確認してください。セットアップ手順はリポジトリ内の docs/ にあります。