Schéma du fichier .gitrust-ci.yml (mode Easy)

Référence complète du fichier de configuration CI pour le mode Easy de gitrust. Ce fichier doit se trouver à la racine du dépôt.

Pour une introduction pratique, consulte le tutoriel 04 — Automatiser avec la CI.


Structure générale

language: <string>       # Profil de langage (requis)

build:
  command: <string>      # Commande de build

checks:
  <nom>: <string>        # Une ou plusieurs commandes de vérification
  <nom>: <string>

tests:
  command: <string>      # Commande de test principale

deploy:                  # Optionnel
  command: <string>
  only_on: <string>      # Branche déclenchant le déploiement (ex. "main")

artifacts:               # Optionnel
  paths:
    - <chemin>

env:                     # Variables d'environnement pour toutes les étapes
  <NOM>: <valeur>

Champ language

Type : string — Requis

Charge un profil préconfigué avec les outils et l'image Docker adaptés au langage.

Valeur Image Docker de base Outils pré-installés
rust rust:latest cargo, rustfmt, clippy
node node:lts npm, npx
python python:3-slim pip, pytest
go golang:latest go, gofmt, golangci-lint

Si ton langage n'est pas listé, utilise language: node ou language: python comme base générique et surcharge les commandes manuellement. Les profils sont définis sur le serveur de build dans deployment/ci-engine/profiles/.


Section build

Optionnel

Exécutée en premier. Arrête le pipeline en cas d'échec (code de sortie non nul).

build:
  command: "cargo build --release"

Section checks

Optionnel

Dictionnaire de vérifications statiques (lint, format, sécurité). Chaque clé est un nom arbitraire affiché dans les logs. Les checks sont exécutés en parallèle si le serveur de build le supporte.

checks:
  lint: "cargo clippy -- -D warnings"
  format: "cargo fmt -- --check"
  audit: "cargo audit"

Section tests

Optionnel

Commande de test principale. Exécutée après build et checks.

tests:
  command: "cargo test --release"

Section deploy

Optionnel

Déploiement conditionnel. Exécuté uniquement sur la branche spécifiée dans only_on.

deploy:
  command: "./scripts/deploy.sh production"
  only_on: "main"

Si only_on est omis, le déploiement s'exécute sur toutes les branches — généralement non souhaitable.


Section artifacts

Optionnel

Chemins des fichiers ou dossiers à conserver après le pipeline. Les artefacts sont accessibles depuis la page de détail du pipeline dans l'UI.

artifacts:
  paths:
    - target/release/mon-binaire
    - dist/
    - coverage/

Section env

Optionnel

Variables d'environnement disponibles dans toutes les commandes du pipeline. Ne jamais placer de secrets ici — utilise les variables CI chiffrées via l'UI (/{owner}/{repo}/ci/variables).

env:
  RUST_BACKTRACE: "1"
  NODE_ENV: "test"

Les variables définies dans l'UI ont priorité sur celles du fichier YAML en cas de conflit de nom.


Exemples complets par langage

Rust

language: rust

build:
  command: "cargo build --release"

checks:
  lint: "cargo clippy -- -D warnings"
  format: "cargo fmt -- --check"

tests:
  command: "cargo test --release"

artifacts:
  paths:
    - target/release/mon-binaire

Node.js

language: node

build:
  command: "npm ci"

checks:
  lint: "npm run lint"
  typecheck: "npm run typecheck"

tests:
  command: "npm test"

artifacts:
  paths:
    - dist/

Python

language: python

build:
  command: "pip install -r requirements.txt"

checks:
  lint: "flake8 src/"
  format: "black --check src/"

tests:
  command: "pytest --tb=short"

Go

language: go

build:
  command: "go build ./..."

checks:
  lint: "golangci-lint run ./..."
  vet: "go vet ./..."

tests:
  command: "go test ./..."

Détection automatique du mode

gitrust détecte le mode à exécuter lors d'un push selon la règle suivante :

Contenu de l'arbre du commit Mode
.gitrust-ci.yml présent Easy — ce fichier
.dagger/ présent Power — module Dagger complet
Aucun des deux Pas de pipeline

Si les deux sont présents, le mode Power a la priorité.


Voir aussi