CI에서 Lockpick 실행하기
릴리스를 배포할 때 Pulse로 사이트를 확인하고, 심각한 문제가 열려 있으면 빌드를 실패시키세요.
Node.js 20.9 이상이 있는 CI라면 어디서든 CLI를 실행할 수 있습니다. CI에서 Pulse를 실행하면 Lockpick에서 시작할 때와 같이 매달 허용량의 Pulse 스캔 한 번을 사용하므로, 모든 푸시마다 실행하지 말고 배포할 때 실행하세요.
워크플로 작성하기
CLI에 로그인한 상태에서 저장소 안에서 실행하세요.
lockpick ci init <site>.github/workflows/lockpick.yml 파일을 작성합니다. 이 워크플로는 릴리스를 게시할 때, 그리고 Actions 탭에서 직접 시작할 때 실행됩니다. 사이트에 Pulse를 실행하고 결과를 기다리며, 열린 문제 중 high 이상의 심각도가 있으면 실패합니다. 작성 당시의 CLI 버전을 고정(pin)합니다.
--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는 실시간 진행 줄 대신 스캔 상태가 바뀔 때마다 한 줄씩 출력합니다. --json을 쓰면 결과만 출력합니다. 색상을 보여 주는 로그에서 색상을 쓰려면 FORCE_COLOR=1을 설정하세요.
CLI와 릴리스 스캔 스크립트의 종료 코드
CLI와 독립 실행형 릴리스 스캔 스크립트는 서로 다른 종료 코드 규칙을 씁니다. 작업이 어느 것을 실행하는지 확인하세요.
| 결과 | lockpick CLI | 독립 실행형 릴리스 스캔 스크립트 |
|---|---|---|
| 문제 기준 이내로 완료됨 | 0 | 0 |
| 열린 문제가 기준에 도달함 | 8 | 1 |
| 스캔이 실패했거나 다른 오류가 발생함 | CLI 종료 코드 참고 | 1 |
릴리스 스캔 스크립트는 사이트 범위의 CI 키(LOCKPICK_CI_KEY)를 사용합니다. CLI는 LOCKPICK_KEY와 승인된 권한을 사용합니다.
도움이 되었나요?