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 900CIでは、CLIはライブの進行表示の代わりに、スキャンの状態が変わるたびに1行ずつ表示します。--json を指定すると、結果だけを出力します。色を表示したいログでは、FORCE_COLOR=1 を設定してください。
CLIとリリーススキャンのスクリプトの終了コード
CLIと、単独のリリーススキャンのスクリプトでは、終了コードの決まりが異なります。ジョブがどちらを実行しているか確認してください。
| 結果 | lockpick CLI | 単独のリリーススキャンのスクリプト |
|---|---|---|
| 検出事項の基準を超えずに完了 | 0 | 0 |
| 未解決の検出事項が基準に達した | 8 | 1 |
| スキャンが失敗したか、別のエラーが発生した | CLIの終了コードを参照 | 1 |
リリーススキャンのスクリプトは、サイト単位のCIキー(LOCKPICK_CI_KEY)を使います。CLIは LOCKPICK_KEY と、承認された権限を使います。
このページは役に立ちましたか?