Skip to main content

依存関係のキャッシュ

ワークフローの速度と効率のための依存関係のキャッシュについて説明します。

ワークフロー依存関係のキャッシュについて

ワークフローの実行は、しばしば他の実行と同じ出力あるいはダウンロードされた依存関係を再利用します。 たとえばMaven、Gradle、npm、Yarnといったパッケージ及び依存関係管理ツールは、ダウンロードされた依存関係のローカルキャッシュを保持します。

依存関係などのファイルの再作成にかかる時間を短縮するために、 GitHub は、ワークフローで頻繁に使用するファイルをキャッシュできます。

成果物と依存関係キャッシュの比較

成果物とキャッシングは、GitHubにファイルを保存できるようにするので似ていますが、それぞれの機能のユースケースは異なっており、入れ替えて使うことはできません。

  • パッケージ管理システムからのビルドの依存関係など、ジョブまたはワークフローの実行の間で頻繁に変更されないファイルを再利用する場合は、キャッシュを使用します。
  • ビルドされたバイナリやビルド ログなど、ワークフローの実行が終了した後に表示するためにジョブによって生成されたファイルを保存する場合は、成果物を使用します。

ワークフロー実行の成果物について詳しくは、「ワークフロー成果物を使ったデータの格納と共有」をご覧ください。

キャッシュのセキュリティ

キャッシュは、ワークフローまたはジョブの ID ではなく、ワークフロー実行で使用されるブランチまたはタグに基づいて共有されます。 さまざまなワークフロー トリガーに使用されるブランチについては、 ワークフローをトリガーするイベントGITHUB_REF を参照してください。 キャッシュを読み取ることができる実行では、その内容が as-is復元されるため、復元されたファイルは信頼されていない入力として扱い、シークレットやその他の機密データはキャッシュに格納しないでください。

信頼されていないワークフローは、フォークから pull_request がキャッシュを復元する場合など、機密性の高いキャッシュコンテンツを読み取ることができます。 有害なキャッシュは、信頼されたワークフローでコードが実行される可能性があります。 キャッシュポイズニングのリスクを制限するために、 GitHub は、低信頼トリガーに応答して実行されるワークフローに、既定のブランチのスコープ内のキャッシュへの読み取り専用アクセスを提供します。

キャッシュ スコープ、アクセス制限、キャッシュを安全に使用するためのベスト プラクティスの詳細については、 依存関係キャッシュのリファレンス を参照してください。

次のステップ

ワークフローに依存関係のキャッシュを実装するには、「依存関係キャッシュのリファレンス」を参照してください。