# Rode o Lockpick no CI

Verifique o seu site com um Pulse quando publicar uma release, e faça o build falhar quando houver achados graves em aberto.

A CLI roda em qualquer CI que tenha Node.js 20.9 ou mais recente. Um Pulse no CI usa uma verificação Pulse da sua cota mensal a cada vez, igual a iniciá-lo no Lockpick, então rode-o quando publicar, e não em cada push.

## Escreva o workflow

No seu repositório, com a CLI conectada:

```bash title="Terminal"
lockpick ci init <site>
```

Ele grava `.github/workflows/lockpick.yml`. O workflow roda quando você publica uma release e quando você o inicia pela aba Actions. Ele executa um Pulse no site, espera o resultado e falha quando os achados abertos são `high` ou de gravidade maior. Ele fixa a versão da CLI com que foi escrito.

* `--fail-on critical`, `high`, `medium` ou `low` define a linha de corte.
* `--dry-run` imprime o workflow sem gravá-lo.
* `--file <path>` grava em outro lugar, e `--force` substitui um arquivo existente.

Se a CLI estiver conectada a um endereço local, `ci init` avisa você: os runners do GitHub só conseguem acessar um endereço público do Lockpick. Passe `--host` com esse endereço.

## Adicione a chave

O workflow lê a chave do segredo do repositório `LOCKPICK_KEY`. Use uma chave com permissão para iniciar verificações Pulse.

```bash title="Terminal"
gh secret set LOCKPICK_KEY
```

> **Careful**
>
> Uma chave pode fazer o que você permitiu ao se conectar. Guarde-a no cofre de
> segredos do seu CI, nunca no seu repositório, e revogue-a no Lockpick, em
> **Adicionar à sua IA**, na aba **CLI e chaves**, quando não precisar mais dela.

## Falhe com achados em qualquer lugar

O `--fail-on` funciona em qualquer comando que termina com uma verificação concluída: `lockpick pulse`, `lockpick recheck`, `lockpick watch`, `lockpick deep start` e `lockpick findings`. O `lockpick ci check <run-id>` aplica a regra a uma verificação que já terminou, sem iniciar outra nem usar a sua cota, e também pode falhar pela idade (`--max-age-hours`) ou pela cobertura (`--min-coverage`). Quando os achados abertos atingem a linha, o comando termina com o código 8, então qualquer CI pode interromper o build:

```bash title="Terminal"
lockpick pulse <site> --fail-on high --timeout 900
```

No CI, a CLI imprime uma linha sempre que o estado de uma verificação muda, em vez de uma linha de progresso ao vivo, e `--json` imprime apenas o resultado. Defina `FORCE_COLOR=1` para ter cor em um log que a mostre.

## Códigos de saída da CLI e do script de release

A CLI e o [script de verificação de release](/pt-BR/docs/protect/release-scans) independente usam contratos de saída diferentes. Confira qual deles o seu job executa.

| Resultado                                  | CLI `lockpick`                                                     | Script de verificação de release independente |
| ------------------------------------------ | ------------------------------------------------------------------ | --------------------------------------------- |
| Concluído dentro do limite de achados      | 0                                                                  | 0                                             |
| Os achados abertos atingiram o limite      | 8                                                                  | 1                                             |
| A verificação falhou ou ocorreu outro erro | Veja [códigos de saída da CLI](/pt-BR/docs/cli/install#exit-codes) | 1                                             |

O script de verificação de release usa uma chave de CI limitada a um site (`LOCKPICK_CI_KEY`); a CLI usa `LOCKPICK_KEY` e as permissões que você aprovou.