Repolode
suzuki-shunsuke

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. 1

    pinactをインストールする(INSTALL.mdを参照)

  2. 2

    リポジトリのアクションを固定する

    pinact run
  3. 3

    ファイルを変更せずにCIで固定状況を確認する

    pinact run --check
  4. 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 の数値は毎日更新されます。

関連プロジェクト