GitHub Actionsのロックファイル(actions.lock)とは?タグ書き換えから守る仕組みと始め方

GitHub Actionsのロックファイルactions.lockを解説する記事のアイキャッチ

GitHub Actionsに、ワークフローで使うアクションを「決まったコミット」に固定できるロックファイル(actions.lock)の機能が登場しました。GitHub公式が2026年10月14日にパブリックプレビューとして発表したものです。

この記事では、この新機能だけにしぼって、何を防げるのか・どう始めるのかをやさしく解説します。GitHub Actionsそのものの基本は、GitHub Actionsの基礎から始めるCI/CD入門をご覧ください。

目次

ロックファイルで何が変わる?

ワークフローでは uses: actions/checkout@v4 のように、タグやブランチでアクションを指定するのが一般的です。ところが、タグやブランチは後から別のコミットに動かすことができます。そのため、レビューしたときとは違うコードが、あとの実行で動いてしまう可能性があります。

公式は、アクションが乗っ取られた場合、タグやブランチを動かされるだけで、自分のリポジトリを何も変えていないのに悪意のあるコードがワークフローに入りこむおそれがあると説明しています。

ロックファイルを使うと、ワークフローの書き方(タグやブランチの指定)はそのままに、ロックしたときのコミットそのものが実行されるようになります。

タグが別のコミットに動いても、ロックファイルに記録したコミットが実行される仕組みの図

注意:ロックしても「安全なアクション」になるわけではない

公式は「ロックは、依存そのものが安全かどうかを決めるものではない」と明記しています。ロックする前に依存(アクション)の中身を確認することが大切です。

主な特徴

  • 対象プラン:GitHub Enterprise Cloud(データレジデンシー版を含む)、Team、Free(パブリックプレビュー)
  • ファイル:.github/workflows/actions.lock に、アクションとその推移的な依存(アクションがさらに使っているアクション)、再利用ワークフローの依存を、確認できるコミットとして記録
  • 少しずつ導入できる:ワークフローごとに導入(オンボード)できる。導入したワークフローは、依存がロックファイルに載っている必要があり、記録されたコミットが実行される
  • 古いロックファイルのチェック:ファイルを書きかえずに、ロックファイルが最新か確かめられる(CIのチェックにも使える)
  • 「Require lockfile」ポリシー(パブリックプレビュー):エンタープライズ・組織・リポジトリの管理者が、ワークフローにロックファイルの使用を必須にできる
  • Dependabot対応:導入済みのワークフローでDependabotがアクションの更新プルリクエストを作るとき、対応するロックファイルの記録も同じプルリクエストで作り直す

始め方

ロックファイルは、GitHub CLI(gh)の拡張機能「gh-actions-lock」で作ります。公式リポジトリのREADMEによると、流れは次のとおりです。

  1. GitHub CLI(gh)をインストールする
  2. 拡張機能を入れる:gh extension install github/gh-actions-lock
  3. リポジトリで gh actions-lock を実行する(.github/workflows/ 内のワークフローを調べ、アクションをコミットに固定してロックファイルを更新)
  4. 生成されたロックファイルとワークフローの変更を確認して、コミットする

CIなどで「書きかえずに確認だけ」したいときは gh actions-lock --verify を使います。新しいワークフローを作ったときや、uses の依存を追加・削除したときは、もう一度 gh actions-lock を実行します。

なお、READMEには「公開プレビュー中で1.0未満のため、ロックファイルの形式やオプション、動作は予告なく変わることがある」と書かれています。また、GitHub Enterprise Server(GHES)には対応していません。

まとめ

  • actions.lockは、ワークフローの依存をコミット単位で固定し、タグやブランチが動いても同じコードを実行させる仕組み
  • 2026年10月14日からパブリックプレビュー(Enterprise Cloud・Team・Free)
  • gh actions-lock 拡張で作成。Require lockfileポリシーやDependabotにも対応
  • ロックは依存の安全性を保証しないので、ロック前の確認が必要

関連記事:GitHubのAI Scan for pull requestsとは?

参考資料

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

社内エンジニアとして、SREとセキュリティの仕事をしています。サーバーの構築や運用、クラウド環境の設計にも関わってきました。趣味はゲームと漫画・アニメ。

コメント

コメントする

目次