Quickstart por CI
A Moatgator se conecta ao CI por meio de um único CLI (moatgator). A GitHub Action é uma camada fina sobre o mesmo código, então o comportamento e os códigos de saída são idênticos.
| CI | Credencial | Guia |
|---|---|---|
| GitHub Actions | OIDC (sem chave guardada) | GitHub Actions |
| GitLab CI | Chave de API como variável mascarada | GitLab CI |
| Bitbucket Pipelines | Chave de API como variável protegida (secured) | Bitbucket Pipelines |
| CircleCI | Chave de API em um context | CircleCI |
| Qualquer outro | Chave de API | Genérico |
Credenciais
- OIDC (só no GitHub Actions): o job troca o token do GitHub por um token da Moatgator que dura 10 minutos. Nada de longa duração para vazar. Você cria antes uma regra de confiança no console; sem ela, ninguém entra. Detalhes.
- Chave de API (
mg_live_…): crie no console, nas chaves do app, com apenasbuilds:writeebuilds:read. Guarde como uma variável de CI mascarada e protegida. Nunca a faça commit, nunca a imprima com echo. Gire a chave pelo console.
Códigos de saída (todos os CIs)
| Código | Significado |
|---|---|
| 0 | ok |
| 1 | erro interno |
| 2 | uso inválido (opção desconhecida, arquivo ou versão faltando) |
| 3 | autenticação (sem credencial, chave recusada, escopo faltando, OIDC recusado) |
| 4 | falha (pacote recusado, nota abaixo do mínimo, moatgator.yml inválido, erro de API ou de rede, --require-protected sem pacote protegido) |
| 5 | tempo esgotado (--timeout, padrão 600 s) |
Motor em prévia, pacotes não publicados
O moatgator protect registra o build e envia o pacote, mas nenhum pacote protegido é produzido ainda; o comando diz isso. O CLI e a Action ainda não foram publicados no npm nem no Marketplace, então os comandos npx moatgator destes guias passam a funcionar quando o pacote for lançado. Veja a tabela de estado na introdução.
Boas práticas para qualquer CI
- Rode em tags de release ou branches protegidas, não em pull requests vindos de forks. Pull requests de forks não devem receber credenciais.
- Fixe actions ou imagens de terceiros por SHA completo de commit ou por digest.
- Comece com o
scan(não precisa de credencial) e depois acrescente oprotect. - Use
--jsonquando quiser interpretar o resultado; as mensagens para pessoas vão para o stderr.