本文へ移動Lockpick
ドキュメント

CIでLockpickを実行する

リリース時にPulseでサイトを確認し、重大な検出事項が未解決のままならビルドを失敗させます。

CLIは、Node.js 20.9 以降が使えるどのCIでも動きます。CIでPulseを実行すると、Lockpickで開始した場合と同じく、毎回月間の利用枠からPulseスキャンを1回使います。プッシュのたびではなく、リリース時に実行することをおすすめします。

ワークフローを作成する

リポジトリで、CLIにサインインした状態で実行します。

ターミナル
lockpick ci init <site>

このコマンドは .github/workflows/lockpick.yml を作成します。ワークフローは、リリースを公開したとき、またはActionsタブから手動で開始したときに実行されます。サイトでPulseを実行し、結果を待ちます。未解決の検出事項が high 以上の場合は失敗します。作成時のCLIのバージョンも固定されます。

  • --fail-on critical、high、medium、low で基準を設定します。
  • --dry-run を指定すると、ファイルを書かずにワークフローを表示します。
  • --file <path> を指定すると、別の場所に書き込みます。--force を指定すると、既存のファイルを置き換えます。

CLIがローカルのアドレスにサインインしている場合、ci init は警告します。GitHubのランナーが届くのは、公開されているLockpickのアドレスだけだからです。その場合は、そのアドレスを --host で指定してください。

キーを追加する

ワークフローは、リポジトリのシークレット LOCKPICK_KEY からキーを読み取ります。Pulseスキャンの開始を許可されたキーを使ってください。

ターミナル
gh secret set LOCKPICK_KEY

どこでも検出事項で失敗させる

--fail-on は、完了したスキャンで終わるコマンドのすべてで使えます。対象は lockpick pulse、lockpick recheck、lockpick watch、lockpick deep start、lockpick findings です。lockpick ci check <run-id> は、完了済みのスキャンに基準を適用します。このコマンドは、スキャンを開始したり利用枠を使ったりしません。また、スキャンの経過時間(--max-age-hours)やカバレッジ(--min-coverage)でも失敗させられます。未解決の検出事項が基準に達すると、コマンドは終了コード 8 で終わります。そのため、どのCIでもビルドを止められます。

ターミナル
lockpick pulse <site> --fail-on high --timeout 900

CIでは、CLIはライブの進行表示の代わりに、スキャンの状態が変わるたびに1行ずつ表示します。--json を指定すると、結果だけを出力します。色を表示したいログでは、FORCE_COLOR=1 を設定してください。

CLIとリリーススキャンのスクリプトの終了コード

CLIと、単独のリリーススキャンのスクリプトでは、終了コードの決まりが異なります。ジョブがどちらを実行しているか確認してください。

結果lockpick CLI単独のリリーススキャンのスクリプト
検出事項の基準を超えずに完了00
未解決の検出事項が基準に達した81
スキャンが失敗したか、別のエラーが発生したCLIの終了コードを参照1

リリーススキャンのスクリプトは、サイト単位のCIキー(LOCKPICK_CI_KEY)を使います。CLIは LOCKPICK_KEY と、承認された権限を使います。

このページは役に立ちましたか?

このページの内容