ビルド監査
CI マトリクス、SHA256SUMS、再現性、OpenSSF。
ビルドマトリクス
5 ターゲットの GitHub Actions マトリクス、各ターゲット ネイティブ runner:
| ターゲット | runner | リンク | アーカイブ |
|---|---|---|---|
x86_64-linux-musl | ubuntu-latest + Alpine 3.20 docker | 完全静的 musl | .tar.gz |
aarch64-linux-musl | ubuntu-24.04-arm + Alpine 3.20 docker | 完全静的 musl | .tar.gz |
aarch64-macos | macos-14 | 静的、システムの libc++/libSystem | .tar.gz |
x86_64-macos | macos-14(aarch64 からクロス) | 静的、システムの libc++/libSystem | .tar.gz |
x86_64-windows | windows-latest + MSYS2 + mingw64 | 完全静的 | .zip |
CI の 2 ステージ
-
build-and-test.yml— main への プッシュと各 PR で走る。全マトリクス構築 + smoke +dist/を 7 日間保持するアーティファクトにアップロード。PR ゲートの 役割。 -
release.yml— タグプッシュ (v*)とworkflow_dispatchで トリガー。最終的にソフトプロップスで GitHub Release を発行。
スモークテスト方針
- バージョン確認 — 構築したばかりの
lhaの バージョンバナーが一致するか。 - CLI デコード round-trip —
upstream/lhasa/test/archives/の最初の.lzh/.lzs/.pmaに対してlha lとlha xqを実行。 バイナリが liblhasa を end-to-end で正しく駆動することを確認。
upstream の make check は、直接は走らせない —
テストドライバが . test_extract.sh を相対パス
ソースしていて、musl/glibc 隔離の parallel build out-of-tree
パターンで落ちる。同じアーカイブ corpus を CLI から叩くのは
等価。
依存フットプリント
vendored lhasa ツリーは外部ライブラリ依存ゼロ —
zlib も libiconv も libcurl も libarchive もない。
configure.ac は C コンパイラと Libtool しか probe しない。
- Linux musl — 完全静的。同じバイナリが Alpine / Debian / Ubuntu / RHEL / Fedora / Arch で動く。
- macOS — システムの
libc++/libSystemのみ。CI はotool -Lで Homebrew 経路リンクを検出したら失敗。 - Windows — MinGW 静的。VC 再配布不要。
OpenSSF Scorecard
公開 GitHub 履歴が PR で十分な厚みを持ってからバッジを有効化。 既に満たしているヒューリスティック:
- Code-Review — PR は
build-and-testマトリクスを通過。 - License — MIT ラッパー、ISC アップストリーム。
どちらも
/LICENSEと/NOTICE.mdに。 - Token-Permissions — CI ワークフローは
permissions: contents: writeをトップで宣言。 - Pinned-Dependencies — GitHub Actions は major + sha にピン留め。