본문으로 건너뛰기Lockpick
문서

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 900

CI에서 CLI는 실시간 진행 줄 대신 스캔 상태가 바뀔 때마다 한 줄씩 출력합니다. --json을 쓰면 결과만 출력합니다. 색상을 보여 주는 로그에서 색상을 쓰려면 FORCE_COLOR=1을 설정하세요.

CLI와 릴리스 스캔 스크립트의 종료 코드

CLI와 독립 실행형 릴리스 스캔 스크립트는 서로 다른 종료 코드 규칙을 씁니다. 작업이 어느 것을 실행하는지 확인하세요.

결과lockpick CLI독립 실행형 릴리스 스캔 스크립트
문제 기준 이내로 완료됨00
열린 문제가 기준에 도달함81
스캔이 실패했거나 다른 오류가 발생함CLI 종료 코드 참고1

릴리스 스캔 스크립트는 사이트 범위의 CI 키(LOCKPICK_CI_KEY)를 사용합니다. CLI는 LOCKPICK_KEY와 승인된 권한을 사용합니다.

도움이 되었나요?

이 페이지 목차