GitHub Actions、Dependabot、pre-commitなどのCI/CD設定に潜むセキュリティ問題を検出し、修正案を提示する静的解析ツールです。
suzuki-shunsuke/pinact
GitHub Actionsと再利用可能なワークフローを完全なコミットSHAに固定し、バージョンコメントの更新と検証もできるCLI。
- スター
- 1,252
- フォーク
- 43
- 未解決の Issue
- 33
- 最終コミット
- 昨日
これは何?
pinactはGitHubのワークフローや複合アクションのファイルを編集し、各アクションまたは再利用可能なワークフローの参照先を、変更できない完全な長さのコミットSHAにします。元のバージョンは末尾のコメントとして残ります。v3のような可変タグはメンテナーが移動できるため、SHAに固定することでサプライチェーン上のリスクを取り除けます。
固定するだけでなく、pinactでは固定済みアクションを新しいバージョンに更新したり、ファイルを編集せずに固定状態を確認したり、バージョンコメントが固定先のSHAと一致するか検証したりできます。checkモードではオフラインでも動作し、GitHub Enterprise Serverに対応しています。また、GitHubのトークンをOSのキーチェーンまたはghtknから読み込めます。
CIパイプラインでpinactをcheckモードで実行すれば、固定されていないアクションを含むビルドを失敗させられます。また、reviewdogなどのレビュー用ツール向けにSARIFを出力できます。
主な機能
- 01GitHub Actionsと再利用可能なワークフローをコミットSHAに固定し、バージョンをコメントとして残します。
- 02GitHub APIを使わないオフラインモードを含め、ファイルを編集せずに固定状態を確認できます。
- 03最小リリース経過期間を任意で指定して、固定済みアクションを更新します。
- 04バージョンコメントが固定先のコミットと一致するか検証します。
- 05特定のアクションを対象に含めたり除外したりでき、変更行のみを固定できます。
- 06SARIFを出力し、GitHub Enterprise Serverに対応しています。
ユースケース
- サードパーティ製アクションが予告なく変更されないよう、CIワークフローを強化する。
- 固定されていない参照があると失敗するcheckモードを使って、CIでアクションの固定を徹底する。
- Renovateを使っていないチームで、固定済みアクションを手動で最新の状態に保つ。
- 変更行のみを固定し、大規模なリポジトリで段階的に固定を導入する。
クイックスタート
- 1
pinactをインストールする(INSTALL.mdを参照)
- 2
リポジトリのアクションを固定する
pinact run - 3
ファイルを変更せずにCIで固定状況を確認する
pinact run --check - 4
API呼び出しがレート制限されないよう、GitHubトークンを設定する
export GITHUB_TOKEN=<your token>
使う前に知っておきたいこと
- GitHubアクセストークンがない場合、API呼び出しはレート制限されます。
収録されている特集
トピック
よくある質問
- pinact とは?
- GitHub Actionsと再利用可能なワークフローを完全なコミットSHAに固定し、バージョンコメントの更新と検証もできるCLI。 pinactはGitHubのワークフローや複合アクションのファイルを編集し、各アクションまたは再利用可能なワークフローの参照先を、変更できない完全な長さのコミットSHAにします。元のバージョンは末尾のコメントとして残ります。v3のような可変タグはメンテナーが移動できるため、SHAに固定することでサプライチェーン上のリスクを取り除けます。
- pinact は無料で使えますか?ライセンスは?
- pinact は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- pinact は今もメンテナンスされていますか?
- 活発にメンテナンス中。pinact の最終コミットは 2026年11月6日 です。
- pinact は何に使えますか?
- サードパーティ製アクションが予告なく変更されないよう、CIワークフローを強化する。 固定されていない参照があると失敗するcheckモードを使って、CIでアクションの固定を徹底する。 Renovateを使っていないチームで、固定済みアクションを手動で最新の状態に保つ。 変更行のみを固定し、大規模なリポジトリで段階的に固定を導入する。
- pinact のインストール方法は?
- pinactをインストールする(INSTALL.mdを参照) リポジトリのアクションを固定する: pinact run ファイルを変更せずにCIで固定状況を確認する: pinact run --check API呼び出しがレート制限されないよう、GitHubトークンを設定する: export GITHUB_TOKEN=<your token>
- pinact はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/suzuki-shunsuke/pinact
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Webダッシュボード、CLI、GitHub Actions連携を備えたオープンソースのシークレット・環境変数管理ツール。
Goプロジェクトのビルド、パッケージ化、GitHubやパッケージマネージャー、コンテナレジストリへの公開を自動化するリリースツールです。
機械学習向けのCI/CDワークフローを実行し、プルリクエストにメトリクスやプロットをレポートするオープンソースCLI。
Gitリポジトリやファイル、標準入力からパスワードやAPIキー、トークンなどのハードコードされたシークレットを検出するCLIツール。
ファイル、Gitリポジトリ、Dockerイメージ、パッケージ内の500種類以上のハードコードされたシークレットを検出・検証するCLI。pre-commitフックやCIで利用できます。