0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人OSSの公開前チェックを自動化する GitHub Action を作った

0
Posted at

個人でOSSを公開していると、コードの品質そのものよりも、公開・マージ・リリース直前の「うっかり」で事故ることがあります。

たとえば、

  • .env を消し忘れてコミットする
  • READMEに curl | bash のような危険なインストール手順を書いてしまう
  • テスト用の秘密鍵ブロックが残る
  • GitHub Actionsの権限が広すぎる
  • SECURITY.mdLICENSE など、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

褒めは不要で、雑な指摘や辛口フィードバック歓迎です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?