ビルド監査

CI マトリクス、SHA256SUMS、再現性、OpenSSF。

ビルドマトリクス

5 ターゲットの GitHub Actions マトリクス、各ターゲット ネイティブ runner:

ターゲットrunnerリンクアーカイブ
x86_64-linux-muslubuntu-latest + Alpine 3.20 docker完全静的 musl.tar.gz
aarch64-linux-muslubuntu-24.04-arm + Alpine 3.20 docker完全静的 musl.tar.gz
aarch64-macosmacos-14静的、システムの libc++/libSystem.tar.gz
x86_64-macosmacos-14(aarch64 からクロス)静的、システムの libc++/libSystem.tar.gz
x86_64-windowswindows-latest + MSYS2 + mingw64完全静的.zip

CI の 2 ステージ

  1. build-and-test.yml — main への プッシュと各 PR で走る。全マトリクス構築 + smoke + dist/ を 7 日間保持するアーティファクトにアップロード。PR ゲートの 役割。
  2. release.yml — タグプッシュ (v*)と workflow_dispatch で トリガー。最終的にソフトプロップスで GitHub Release を発行。

スモークテスト方針

scripts/smoke.sh

  1. バージョン確認 — 構築したばかりの lha の バージョンバナーが一致するか。
  2. CLI デコード round-tripupstream/lhasa/test/archives/ の最初の .lzh / .lzs / .pma に対して lha llha 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 しない。

OpenSSF Scorecard

公開 GitHub 履歴が PR で十分な厚みを持ってからバッジを有効化。 既に満たしているヒューリスティック: