Pular para o conteúdo principal

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.

CICredencialGuia
GitHub ActionsOIDC (sem chave guardada)GitHub Actions
GitLab CIChave de API como variável mascaradaGitLab CI
Bitbucket PipelinesChave de API como variável protegida (secured)Bitbucket Pipelines
CircleCIChave de API em um contextCircleCI
Qualquer outroChave de APIGené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 apenas builds:write e builds: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ódigoSignificado
0ok
1erro interno
2uso inválido (opção desconhecida, arquivo ou versão faltando)
3autenticação (sem credencial, chave recusada, escopo faltando, OIDC recusado)
4falha (pacote recusado, nota abaixo do mínimo, moatgator.yml inválido, erro de API ou de rede, --require-protected sem pacote protegido)
5tempo 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 o protect.
  • Use --json quando quiser interpretar o resultado; as mensagens para pessoas vão para o stderr.