{"meta":{"title":"Création et test de code Rust","intro":"Découvrez comment créer un flux de travail d’intégration continue (CI) pour générer et tester votre projet Rust.","product":"GitHub Actions","breadcrumbs":[{"href":"/fr/actions","title":"GitHub Actions"},{"href":"/fr/actions/tutorials","title":"Tutoriels"},{"href":"/fr/actions/tutorials/build-and-test-code","title":"Générer et tester du code"},{"href":"/fr/actions/tutorials/build-and-test-code/rust","title":"Rust"}],"documentType":"article"},"body":"# Création et test de code Rust\n\nDécouvrez comment créer un flux de travail d’intégration continue (CI) pour générer et tester votre projet Rust.\n\n## Introduction\n\nCe guide explique comment générer, tester et publier un package Rust.\n\nLes exécuteurs hébergés dans GitHub ont un cache d’outils où sont préinstallés des logiciels, notamment les dépendances pour Rust. Pour obtenir la liste complète des logiciels à jour et des versions préinstallées de Rust, consultez « [Exécuteurs hébergés par GitHub](/fr/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#preinstalled-software) ».\n\n## Prérequis\n\nVous devez déjà être familiarisé avec la syntaxe YAML et savoir comment elle s’utilise avec GitHub Actions. Pour plus d’informations, consultez « [Syntaxe de flux de travail pour GitHub Actions](/fr/actions/using-workflows/workflow-syntax-for-github-actions) ».\n\nIl est recommandé de connaître les bases du langage Rust. Pour plus d’informations, consultez [Prise en main de Rust](https://www.rust-lang.org/learn).\n\n## Utilisation d’un modèle de flux de travail Rust\n\nPour démarrer rapidement, ajoutez un modèle de workflow au répertoire `.github/workflows` de votre référentiel.\n\nGitHub fournit un modèle de flux de travail Rust qui devrait fonctionner pour la plupart des projets Rust de base. Les sections suivantes de ce guide donnent des exemples de la manière dont vous pouvez personnaliser ce modèle de workflow.\n\n1. Sur GitHub, accédez à la page principale du référentiel.\n\n2. Sous le nom de votre référentiel, cliquez sur **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> Actions**.\n\n   ![Capture d’écran des onglets du référentiel « github/docs ». L’onglet « Actions » est mis en surbrillance avec un encadré orange.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. Si vous disposez déjà d’un workflow dans votre dépôt, cliquez sur **Nouveau workflow**.\n\n4. La page « Choisir un workflow » présente une sélection de modèles de workflow recommandés. Recherchez « Rust ».\n\n5. Filtrez la sélection de workflows en cliquant sur **Intégration continue**.\n\n6. Dans le flux de travail « Rust – par GitHub Actions », cliquez sur **Configurer**.\n\n   ![Capture d’écran de la page « Choisir un workflow ». Le bouton « Configurer » dans le flux de travail « Rust » est mis en évidence à l’aide d’un rectangle orange.](/assets/images/help/actions/starter-workflow-rust.png)\n\n7. Modifiez le workflow en fonction des besoins. Par exemple, modifiez la version de Rust.\n\n8. Cliquez sur **Commiter les changements**.\n\nLe fichier de workflow `rust.yml` est ajouté au répertoire `.github/workflows` de votre dépôt.\n\n## Spécification d’une version Rust\n\nLes exécuteurs hébergés dans GitHub incluent une version récente de la chaîne d’outils Rust. Vous pouvez utiliser rustup pour signaler la version installée sur un exécuteur, remplacer la version et installer différentes chaînes d’outils. Pour plus d’informations, consultez [The rustup book](https://rust-lang.github.io/rustup/).\n\nCet exemple montre les étapes que vous pouvez utiliser pour configurer votre environnement d’exécuteur afin d’utiliser le build nocturne de Rust et de signaler la version.\n\n```yaml copy\n      - name: Temporarily modify the rust toolchain version\n        run: rustup override set nightly\n      - name: Output rust version for educational purposes\n        run: rustup --version\n```\n\n### Mise en cache des dépendances\n\nVous pouvez mettre en cache et restaurer des dépendances à l’aide de l’action Cache. Cet exemple part du principe que votre référentiel contient un fichier `Cargo.lock`.\n\n```yaml copy\n      - name: Cache\n        uses: actions/cache@v4\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}\n```\n\nSi vous avez des exigences personnalisées ou avez besoin de contrôles plus fins pour la mise en cache, vous devez explorer d’autres options de configuration pour l’action [`cache`](https://github.com/marketplace/actions/cache). Pour plus d’informations, consultez « [Référence sur la mise en cache des dépendances](/fr/actions/using-workflows/caching-dependencies-to-speed-up-workflows) ».\n\n## Génération et test de votre code\n\nVous pouvez utiliser les mêmes commandes que celles que vous utilisez localement pour générer et tester votre code. Cet exemple de workflow montre comment utiliser `cargo build` et `cargo test` dans un travail :\n\n```yaml copy\njobs:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        BUILD_TARGET: [release] # refers to a cargo profile\n    outputs:\n      release_built: ${{ steps.set-output.outputs.release_built }}\n    steps:\n      - uses: actions/checkout@v5\n      - name: Build binaries in \"${{ matrix.BUILD_TARGET }}\" mode\n        run: cargo build --profile ${{ matrix.BUILD_TARGET }}\n      - name: Run tests in \"${{ matrix.BUILD_TARGET }}\" mode\n        run: cargo test --profile ${{ matrix.BUILD_TARGET }}\n```\n\nLe mot clé `release` utilisé dans cet exemple correspond à un profil de cargo. Vous pouvez utiliser n’importe quel [profil](https://doc.rust-lang.org/cargo/reference/profiles.html) que vous avez défini dans votre fichier `Cargo.toml`.\n\n## Publication de votre package ou bibliothèque dans crates.io\n\nUne fois que vous avez configuré votre flux de travail pour générer et tester votre code, vous pouvez utiliser un secret pour vous connecter à [crates.io](https://crates.io/) et publier votre package.\n\n```yaml copy\n      - name: Login into crates.io\n        run: cargo login ${{ secrets.CRATES_IO }}\n      - name: Build binaries in \"release\" mode\n        run: cargo build -r\n      - name: \"Package for crates.io\"\n        run: cargo package # publishes a package as a tarball\n      - name: \"Publish to crates.io\"\n        run: cargo publish # publishes your crate as a library that can be added as a dependency\n```\n\nEn cas d’erreurs lors de la génération et de l’empaquetage de la crate, vérifiez les métadonnées de votre manifeste, le fichier `Cargo.toml`, voir [Le format manifeste](https://doc.rust-lang.org/cargo/reference/manifest.html). Vous devez également vérifier votre fichier `Cargo.lock` et consulter [Cargo.toml vs Cargo.lock](https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html).\n\n## Empaquetage des données de workflow en tant qu’artefacts\n\nUne fois que le flux de travail est terminé, vous pouvez télécharger les artefacts résultants à des fins d’analyse ou d’utilisation dans un autre flux de travail. Vous pouvez ajouter ces exemples d’étapes au flux de travail pour télécharger une application à utiliser par un autre flux de travail.\n\n```yaml copy\n      - name: Upload release artifact\n        uses: actions/upload-artifact@v4\n        with:\n          name: <my-app>\n          path: target/${{ matrix.BUILD_TARGET }}/<my-app>\n```\n\nPour utiliser l’artefact téléchargé dans un autre projet, vérifiez que vos flux de travail disposent des autorisations appropriées pour le référentiel, voir [Utiliser GITHUB\\_TOKEN pour l’authentification dans les flux de travail](/fr/actions/security-for-github-actions/security-guides/automatic-token-authentication). Vous pouvez utiliser ces exemples d’étapes pour télécharger l’application créée dans le flux de travail précédent et la publier sur GitHub.\n\n```yaml copy\n      - uses: actions/checkout@v5\n      - name: Download release artifact\n        uses: actions/download-artifact@v5\n        with:\n          name: <my-app>\n          path: ./<my-app>\n      - name: Publish built binary to GitHub releases\n      - run: |\n          gh release create --generate-notes ./<my-app>/<my-project>#<my-app>\n```"}