個人でOSSを公開していると、コードの品質そのものよりも、公開・マージ・リリース直前の「うっかり」で事故ることがあります。
たとえば、
-
.envを消し忘れてコミットする - READMEに
curl | bashのような危険なインストール手順を書いてしまう - テスト用の秘密鍵ブロックが残る
- GitHub Actionsの権限が広すぎる
-
SECURITY.mdやLICENSEなど、OSSとして最低限ほしいファイルが抜ける
レビュワーがいないsoloメンテだと、こういうミスは誰も止めてくれません。
そこで、OSS公開前に浅く広くチェックする小さなCLI & GitHub Actionとして、maintainer-safe-ops を作りました。
GitHub Marketplace:
https://github.com/marketplace/actions/maintainer-safe-ops
Repository:
https://github.com/rein051521/maintainer-safe-ops
何をするツールか
maintainer-safe-ops は、OSSリポジトリを公開・マージ・リリースする前に、メンテナー目線の危険パターンを検出するツールです。
現在は以下のようなルールを持っています。
| 種類 | 例 |
|---|---|
| 誤コミット |
.env など |
| 危険コマンド | rm -rf |
| 危険な導入手順 | `curl |
| 秘密情報 | PEM形式の秘密鍵ブロック |
| GitHub Actions | 過剰権限・危険設定 |
| OSS基本ファイル |
LICENSE, SECURITY.md など |
| リリース前確認 | release前のセルフチェック |
CLIとしても、GitHub Actionとしても使えます。
gitleaks / CodeQL の代替ではない
このツールは、gitleaks や CodeQL の代替ではありません。
gitleaks はシークレット検出に強く、CodeQL は静的解析に強いです。
maintainer-safe-ops は、それらの手前に置く「公開前の軽量セルフチェック」を目的にしています。
位置づけとしては、次のような補助ツールです。
- gitleaks: 深いシークレット検出
- CodeQL: 静的解析
- Dependabot: 依存関係更新
- maintainer-safe-ops: OSSメンテナー向けの公開前・マージ前・リリース前チェック
GitHub Actionとして使う
Marketplaceから利用できます。
name: Maintainer Safe Ops
on:
pull_request:
push:
permissions:
contents: read
jobs:
safe-ops:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: rein051521/maintainer-safe-ops@v0.1.5
with:
path: "."
format: "human"
fail-on: "high"
まずは fail-on: high から始めるのが無難です。
初期導入で厳しすぎると運用しづらいため、必要に応じて段階的に調整する想定です。
出力形式
出力は以下に対応しています。
- human
- JSON
- SARIF
SARIF出力により、GitHub code scanning 連携も視野に入れています。
実行ログ
自分の別デモリポジトリで、GitHub Actionとして実行したログも公開しています。
これは第三者採用ではなく、maintainer-owned demonstration consumer です。
実績を盛るつもりはなく、まずは実際に別リポジトリで動くことを確認する目的です。
どういう人向けか
主に以下のような人向けです。
- 個人でOSSを公開している
- GitHub Actionsを使っている
- release前チェックを自動化したい
- gitleaks / CodeQL の前段に軽い確認を置きたい
- soloメンテでレビュー役がいない
今後やりたいこと
今後は以下を改善予定です。
- allowlist / 誤検知制御の改善
- SARIF互換性の改善
- GitHub Actions向けルールの拡充
- 導入ドキュメントの改善
- 実利用フィードバックをもとにしたルール追加
フィードバック歓迎
まだ初期版です。
特に以下のようなフィードバックがあると助かります。
- 誤検知したパターン
- 検出できなかった危険パターン
- 欲しいルール
- 導入で詰まった点
- SARIF / CodeQL連携まわりの改善点
フィードバック用Discussion:
https://github.com/rein051521/maintainer-safe-ops/discussions/19
Issueでも受け付けています:
https://github.com/rein051521/maintainer-safe-ops/issues/24
褒めは不要で、雑な指摘や辛口フィードバック歓迎です。