CI/CD pour projets Rust : GitHub Actions de A à Z

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi le CI/CD est-il crucial pour les projets Rust ?

\n

Développer en Rust, ce n'est pas seulement une question de sécurité mémoire et de hautes performances, mais aussi de discipline rigoureuse. Le compilateur Rust détecte de nombreuses erreurs lors de la phase de construction, mais cela ne remplace pas la nécessité de tests de qualité, de linting et de vérification de la compatibilité des dépendances. C'est là que le CI/CD (Intégration Continue / Déploiement Continu) entre en jeu.

\n

GitHub Actions est un système d'automatisation intégré qui convient parfaitement aux projets Rust. Il permet d'exécuter automatiquement les tests, de formater le code, de vérifier les vulnérabilités et même de publier des crates dans le registre crates.io à chaque push dans le dépôt. Dans cet article, nous allons détailler le pipeline complet : de la base cargo build au déploiement en production.

\n\n

1. Bases : Configuration d'un workflow de base pour Rust

\n

Tout pipeline CI/CD dans GitHub Actions commence par la création d'un fichier YAML dans le répertoire .github/workflows/. Créons un fichier ci.yml pour la vérification de base d'un projet Rust.

\n\n

1.1. Premier workflow : Construction et tests

\n

Commençons par un ensemble minimal : cloner le dépôt, installer Rust et exécuter les tests.

\n
name: Rust CI\n\non:\n  push:\n    branches: [ "main", "develop" ]\n  pull_request:\n    branches: [ "main" ]\n\nenv:\n  CARGO_TERM_COLOR: always\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@v4\n    - name: Install Rust\n      uses: dtolnay/rust-toolchain@stable\n    - name: Build\n      run: cargo build --verbose\n    - name: Run tests\n      run: cargo test --verbose
\n

Que se passe-t-il ici ?

\n
    \n
  • actions/checkout@v4 — clone votre code.
  • \n
  • dtolnay/rust-toolchain@stable — l'action officielle pour installer Rust (prend en charge nightly, beta et stable).
  • \n
  • cargo build et cargo test — les commandes principales pour vérifier le projet.
  • \n
\n

Ce workflow sera déclenché à chaque push sur les branches main et develop, ainsi que lors de la création d'une Pull Request.

\n\n

1.2. Mise en cache des dépendances pour accélérer la construction

\n

Les projets Rust ont souvent beaucoup de dépendances. Pour éviter de les télécharger à chaque fois, utilisez la mise en cache. Cela réduira le temps de construction de 5 à 10 minutes à 30-60 secondes.

\n
    - name: Cache Cargo registry\n      uses: actions/cache@v3\n      with:\n        path: |\n          ~/.cargo/registry\n          ~/.cargo/git\n          target/\n        key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}\n        restore-keys: |\n          ${{ runner.os }}-cargo-
\n

Ajoutez cette étape avant d'exécuter cargo build. Le hachage du fichier Cargo.lock garantit que le cache ne sera mis à jour qu'en cas de modification des dépendances.

\n\n

2. Vérification avancée de la qualité du code

\n

Les tests seuls ne suffisent pas pour maintenir une qualité de code élevée. Ajoutons le linting, le formatage et la vérification de la sécurité.

\n\n

2.1. Formatage (rustfmt) et linting (clippy)

\n

Rust dispose d'outils intégrés pour maintenir un style de code uniforme. Ajoutons-les dans un job séparé :

\n
  lint:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v4\n    - uses: dtolnay/rust-toolchain@stable\n      with:\n        components: clippy, rustfmt\n    - name: Check formatting\n      run: cargo fmt --check\n    - name: Run clippy\n      run: cargo clippy -- -D warnings
\n
    \n
  • cargo fmt --check — vérifie que le code est formaté selon la norme rustfmt.
  • \n
  • cargo clippy -- -D warnings — exécute le linter et transforme les avertissements en erreurs (drapeau -D).
  • \n
\n

Cela permettra d'éviter le code "sale" dans le dépôt.

\n\n

2.2. Vérification de la sécurité des dépendances (car

Blogs

Book Recommendations