Pular para o conteúdo
EmbutidoPipeline de CI

Variáveis do GitLab CI no Crunu, vinculadas com id_tokens

Dê aos jobs do GitLab CI as variáveis de um ambiente do Crunu. Vincule o token a um caminho de projeto, ref e ambiente com os id_tokens OIDC do GitLab.

Compatibilidade
Funciona com o Crunu hoje: o suporte a GitLab CI faz parte do produto.
Recursos do Crunu
CI/CD
Conferido
Com o Crunu 6.0.0 em 27 de outubro de 2026
Exemplo. A Kiteline é uma empresa fictícia.

Recursos do Crunu que funcionam com GitLab CI

Cada recurso abaixo funciona do mesmo jeito em todas as integrações: o servidor guarda texto cifrado, e só as pessoas, máquinas e tokens que você autorizar conseguem descriptografar.

  • CI/CD

    Dê a cada pipeline um token de serviço limitado aos ambientes dele e vincule-o ao seu provedor de CI com OIDC, para que um token vazado não consiga entrar sozinho.

    Saiba mais

Como funciona com GitLab CI

Nesta página

O que o Crunu faz no GitLab CI

Um job executa o seu comando por meio do crunu run. O agente crunu entra com um token de serviço, confere as assinaturas, descriptografa as variáveis em memória e inicia o comando com elas. Nada é gravado no disco.

Shell
crunu run --env web-app/staging -- npm test

O token recebe só os ambientes que você concede. Com um vínculo de CI (OIDC), o GitLab emite para o job um token cujo audience é o seu servidor do Crunu, e o token do Crunu só funciona junto com ele, para o caminho de projeto, o ref e o ambiente que você definir. O próprio crunu lê o token do GitLab em CRUNU_ID_TOKEN.

Configuração

  1. No Crunu, abra Service tokens e escolha New service token. Conceda os ambientes de que o job precisa. O token só é mostrado uma vez.
  2. No GitLab, abra Settings → CI/CD → Variables e adicione CRUNU_TOKEN como variável mascarada e protegida.
  3. Adicione CRUNU_SERVER, CRUNU_VERSION, CRUNU_INSTALL_URL, CRUNU_INSTALL_SHA256 e CRUNU_BINARY_SHA256 com os valores do bloco CI setup da página do token. Na nuvem, CRUNU_SERVER é https://app.crunu.com.
  4. Opcional: adicione um vínculo de CI (OIDC) na página do token. Escolha o provedor GitLab e defina project_path, ref, ref_type e, para um token de production, environment.

Exemplo de job

A imagem do job precisa de sh e de curl ou wget. As imagens node, python e alpine têm esses comandos.

YAML
test:
  image: node:24
  id_tokens:
    CRUNU_ID_TOKEN:
      aud: https://app.crunu.com   # your Crunu server; only if the token has a CI binding (OIDC)
  script:
    - curl -sSf "$CRUNU_INSTALL_URL" -o /tmp/crunu-install.sh
    - echo "$CRUNU_INSTALL_SHA256  /tmp/crunu-install.sh" | sha256sum -c -
    - sh /tmp/crunu-install.sh --version "$CRUNU_VERSION" --sha256 "$CRUNU_BINARY_SHA256" --user-install
    - crunu run --env web-app/staging -- npm test

Para um token de production, o vínculo de CI (OIDC) pode exigir:

  • project_path: kiteline/web-app
  • ref: main
  • ref_type: branch
  • environment: production

Os templates de job .crunu

Os passos de instalação também existem como um arquivo de template com dois jobs ocultos. Os seus jobs os herdam com extends:

  • .crunu instala uma versão fixa do crunu no before_script, confere o SHA-256 do instalador e do binário e imprime crunu version;
  • .crunu-oidc faz o mesmo e adiciona id_tokens, para tokens com vínculo de CI.

Mantenha uma cópia do template no seu repositório, para que as mudanças nele sejam revisadas junto com o seu código. Se, em vez disso, você o incluir a partir de outro projeto do GitLab, fixe o ref num commit, não num branch.

YAML
include:
  - local: ci/crunu.gitlab-ci.yml

test:
  image: node:24
  extends: .crunu
  script:
    - crunu run --env web-app/staging -- npm test

deploy:
  image: node:24
  extends: .crunu-oidc        # the production token has an OIDC rule: project_path, ref, environment
  environment: production
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
  script:
    - crunu run --env web-app/production -- npm run deploy

O before_script do próprio job substitui o do template, porque o extends não mescla listas de comandos. Adicione de volta os passos do template de forma explícita:

YAML
test:
  extends: .crunu
  before_script:
    - !reference [.crunu, before_script]
    - npm ci
  script:
    - crunu run --env web-app/staging -- npm test

O que é conferido

  • O checksum do instalador é comparado antes de ele rodar. Se não bater, o job para e o crunu não é instalado.
  • O instalador confere o checksum do binário e o executa uma vez antes de colocá-lo no lugar.
  • Valores malformados, como um checksum ausente ou um endereço que não é https://, são recusados antes de qualquer download.

Runners e checksums

O crunu roda no Linux e no macOS, em amd64 e arm64. Não há build para Windows. O checksum do bloco CI setup é para Linux amd64; para runners arm64, defina checksums por plataforma a partir do manifest.json do release.

Revogação

Abra o token no Crunu e escolha Revoke. O próximo login dele é recusado, e um job que já está rodando termina com o que recebeu. Se o token pode ter vazado, rotacione também as chaves dos ambientes que ele recebeu e reemita os valores contidos neles nos respectivos provedores.

Veja também

Dúvidas e respostas

Não encontrou a resposta? Escreva para support@crunu.com, e uma pessoa vai responder.

Como o crunu obtém o token OIDC do GitLab?

Adicione id_tokens com CRUNU_ID_TOKEN e o seu servidor do Crunu como audience, ou estenda o template .crunu-oidc. O crunu lê a variável sozinho.

Por que o meu job perdeu os passos de instalação do template?

O before_script do próprio job substitui o do template, porque o extends não mescla listas de comandos. Adicione !reference [.crunu, before_script] no início do seu.

Quais imagens de job funcionam?

Qualquer imagem com sh e curl ou wget, como node, python ou alpine.

Experimente com GitLab CI

Crie a sua organização em app.crunu.com, adicione um ambiente e conecte-o. Grátis durante o acesso antecipado.