ワークフローの uses をタグやブランチのまま残しつつ、実行は .github/workflows/actions.lock に記録したコミットへ固定する。対象は GitHub Enterprise Cloud、GitHub Enterprise Cloud with data residency、Team、Free。ロックは依存そのものの安全性は判定しない。

gh extension install github/gh-actions-lock のあと、リポジトリルートで gh actions-lock を実行するとロックファイルを生成する。手編集はしない。ワークフロー単位で段階導入でき、導入後は依存がロックファイルに必須。GitHub Actions は記録コミットを実行し、許可アクションの検査もそのコミットに対して行う。ロックしたコミットはソースリポジトリのブランチ上に存在する必要がある。

  • アクションの推移的依存も記録する
  • 再利用ワークフローの依存は、定義側リポジトリのロックファイルが担う
  • 自リポジトリの uses: ./… は uses: $/… へ書き換え。実行中コミットへ解決し、ロック項目は不要
  • 導入済みワークフローのバージョン更新では、Dependabot が同じプルリクエストでロック項目を再生成する
  • Dependabot は未導入ワークフローをオンボードしない
  • 古くなったロックファイルは gh actions-lock --verify でファイルを変えずに検証できる

Require lockfile ポリシーは、uses: 依存を持つ対象ワークフローを、ロック未導入なら実行ブロックする。エンタープライズ・組織・リポジトリの管理者が設定できる。Active にする前に対象をオンボードする。Evaluate モードは GitHub Enterprise のみ。

ロックファイル導入後は、ワークフロー内の SHA ピン留めは不要。推移的依存に加え、ソースリポジトリの owner_id と repo_id も記録する。拡張は uses 参照を解決した具体的な版へ書き換え(例: octo-org/deploy-action@v3 を @v3.1.0 に)。導入後の許可リスト照合はロックした SHA。タグ指定(例: actions/checkout@v6)は一致しない。ワイルドカードかフル SHA が必要。

#参考文献