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
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.
crunu run --env web-app/staging -- npm testO 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
- No Crunu, abra Service tokens e escolha New service token. Conceda os ambientes de que o job precisa. O token só é mostrado uma vez.
- No GitLab, abra Settings → CI/CD → Variables e adicione
CRUNU_TOKENcomo variável mascarada e protegida. - Adicione
CRUNU_SERVER,CRUNU_VERSION,CRUNU_INSTALL_URL,CRUNU_INSTALL_SHA256eCRUNU_BINARY_SHA256com os valores do bloco CI setup da página do token. Na nuvem,CRUNU_SERVERéhttps://app.crunu.com. - Opcional: adicione um vínculo de CI (OIDC) na página do token. Escolha o provedor GitLab e defina
project_path,ref,ref_typee, 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.
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 testPara um token de production, o vínculo de CI (OIDC) pode exigir:
project_path:kiteline/web-appref:mainref_type:branchenvironment: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:
.crunuinstala uma versão fixa docrununobefore_script, confere o SHA-256 do instalador e do binário e imprimecrunu version;.crunu-oidcfaz o mesmo e adicionaid_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.
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 deployO 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:
test:
extends: .crunu
before_script:
- !reference [.crunu, before_script]
- npm ci
script:
- crunu run --env web-app/staging -- npm testO que é conferido
- O checksum do instalador é comparado antes de ele rodar. Se não bater, o job para e o
crununã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.