Variables GitLab CI depuis Crunu, liées par id_tokens
Donnez aux jobs GitLab CI les variables d’un environnement Crunu. Liez le jeton de service à un projet, une ref et un environnement via les id_tokens OIDC.
- Prise en charge
- Fonctionne avec Crunu aujourd’hui : le produit prend en charge GitLab CI nativement.
- Fonctionnalités Crunu
- CI/CD
- Vérifié
- Avec Crunu 6.0.0, le 27 octobre 2026
Les fonctionnalités Crunu qui fonctionnent avec GitLab CI
Chaque fonctionnalité ci-dessous fonctionne de la même façon dans chaque intégration : le serveur garde des données chiffrées, et seuls les personnes, les machines et les jetons que vous autorisez peuvent les déchiffrer.
CI/CD
Donnez à chaque pipeline un jeton de service limité à ses environnements, et liez-le à votre fournisseur de CI par OIDC : un jeton qui fuit ne peut pas se connecter seul.
En savoir plus
Comment ça marche avec GitLab CI
Sur cette page
Ce que fait Crunu dans GitLab CI
Un job lance votre commande via crunu run. L’agent crunu se connecte avec un jeton de service, vérifie les signatures, déchiffre les variables en mémoire et lance la commande avec elles. Rien n’est écrit sur le disque.
crunu run --env web-app/staging -- npm testLe jeton ne reçoit que les environnements que vous accordez. Avec une liaison CI (OIDC), GitLab remet au job un jeton dont l’audience est votre serveur Crunu, et le jeton Crunu ne fonctionne qu’accompagné de celui-ci, pour le chemin de projet, la ref et l’environnement que vous avez définis. crunu lit lui-même le jeton GitLab dans CRUNU_ID_TOKEN.
Configuration
- Dans Crunu, ouvrez Service tokens et choisissez New service token. Accordez les environnements dont le job a besoin. Le jeton n’est affiché qu’une seule fois.
- Dans GitLab, ouvrez Settings → CI/CD → Variables et ajoutez
CRUNU_TOKENcomme variable masquée et protégée. - Ajoutez
CRUNU_SERVER,CRUNU_VERSION,CRUNU_INSTALL_URL,CRUNU_INSTALL_SHA256etCRUNU_BINARY_SHA256avec les valeurs du bloc CI setup de la page du jeton. Dans le cloud,CRUNU_SERVERvauthttps://app.crunu.com. - Facultatif : ajoutez une liaison CI (OIDC) sur la page du jeton. Choisissez le fournisseur GitLab et définissez
project_path,ref,ref_typeet, pour un jeton de production,environment.
Exemple de job
L’image du job doit contenir sh et curl ou wget. Les images node, python et alpine les contiennent.
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 testPour un jeton de production, la liaison CI (OIDC) pourrait exiger :
project_path:kiteline/web-appref:mainref_type:branchenvironment:production
Les modèles de jobs .crunu
Les étapes d’installation existent aussi sous forme d’un fichier de modèle avec deux jobs cachés. Vos jobs en héritent avec extends :
.crunuinstalle une version figée decrunudansbefore_script, vérifie le SHA-256 de l’installateur et du binaire, et affichecrunu version;.crunu-oidcfait de même et ajouteid_tokens, pour les jetons dotés d’une liaison CI.
Gardez une copie du modèle dans votre dépôt : ses modifications sont ainsi relues avec votre code. Si vous l’incluez plutôt depuis un autre projet GitLab, figez ref sur un commit, pas sur une branche.
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 deployLe before_script propre à un job remplace celui du modèle, car extends ne fusionne pas les listes de commandes. Rajoutez explicitement les étapes du modèle :
test:
extends: .crunu
before_script:
- !reference [.crunu, before_script]
- npm ci
script:
- crunu run --env web-app/staging -- npm testCe qui est vérifié
- La somme de contrôle de l’installateur est comparée avant son exécution. En cas d’écart, le job s’arrête et
crunun’est pas installé. - L’installateur vérifie la somme de contrôle du binaire et l’exécute une fois avant de le mettre en place.
- Les valeurs mal formées, comme une somme de contrôle manquante ou une adresse qui n’est pas en
https://, sont refusées avant tout téléchargement.
Runners et sommes de contrôle
crunu fonctionne sous Linux et macOS, en amd64 et arm64. Il n’existe pas de version Windows. La somme de contrôle du bloc CI setup concerne Linux amd64 ; pour les runners arm64, définissez des sommes de contrôle par plateforme à partir du manifest.json de la version.
Révocation
Ouvrez le jeton dans Crunu et choisissez Revoke. Sa prochaine connexion est refusée, et un job déjà en cours se termine avec ce qu’il a reçu. Si le jeton a pu fuiter, renouvelez aussi les clés des environnements qui lui étaient accordés et réémettez chez leurs fournisseurs les valeurs qu’ils contiennent.
Voir aussi
Questions et réponses
Votre question n’est pas traitée ici ? Écrivez à support@crunu.com : une personne vous répondra.
Comment crunu obtient-il le jeton OIDC de GitLab ?
Ajoutez id_tokens avec CRUNU_ID_TOKEN et votre serveur Crunu comme audience, ou étendez le modèle .crunu-oidc. crunu lit la variable de lui-même.
Pourquoi mon job a-t-il perdu les étapes d’installation du modèle ?
Le before_script propre à un job remplace celui du modèle, car extends ne fusionne pas les listes de commandes. Ajoutez !reference [.crunu, before_script] au début du vôtre.
Quelles images de job conviennent ?
Toute image qui contient sh et curl ou wget, comme node, python ou alpine.