{"meta":{"title":"Erstellen und Testen eines Rust-Projekts","intro":"Hier erfährst, du, wie du einen CI-Workflow (Continuous Integration) erstellst, um dein Rust-Projekt zu erstellen und zu testen.","product":"GitHub Actions","breadcrumbs":[{"href":"/de/enterprise-cloud@latest/actions","title":"GitHub Actions"},{"href":"/de/enterprise-cloud@latest/actions/tutorials","title":"Anleitungen"},{"href":"/de/enterprise-cloud@latest/actions/tutorials/build-and-test-code","title":"Erstellen und Testen von Code"},{"href":"/de/enterprise-cloud@latest/actions/tutorials/build-and-test-code/rust","title":"Rust"}],"documentType":"article"},"body":"# Erstellen und Testen eines Rust-Projekts\n\nHier erfährst, du, wie du einen CI-Workflow (Continuous Integration) erstellst, um dein Rust-Projekt zu erstellen und zu testen.\n\n## Einführung\n\nIn dieser Anleitung erfährst du, wie du ein Rust-Paket erstellst, testest und veröffentlichst.\n\nGitHub-gehostete Runner haben einen Toolcache mit vorinstallierter Software, die Abhängigkeiten für Rust einschließt. Eine vollständige Liste der aktuellen Software und der vorinstallierten Versionen von Rust findest du unter [Von GitHub gehostete Runner](/de/enterprise-cloud@latest/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#preinstalled-software).\n\n## Voraussetzungen\n\nDu solltest bereits mit der YAML-Syntax vertraut sein und wissen, wie sie mit GitHub Actions verwendet wird. Weitere Informationen finden Sie unter [Workflowsyntax für GitHub Actions](/de/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions).\n\nDu solltest über grundlegende Kenntnisse in Bezug auf die Rust-Programmiersprache verfügen. Weitere Informationen findest du unter [Erste Schritte mit Rust](https://www.rust-lang.org/learn).\n\n## Verwenden einer Rust-Workflowvorlage\n\nFügen Sie für einen schnellen Einstieg dem Verzeichnis `.github/workflows` Ihres Repositorys eine Workflowvorlage hinzu.\n\nGitHub bietet eine Rust-Workflowvorlage, die für die meisten grundlegenden Rust-Projekte funktionieren sollte. In den nachfolgenden Abschnitten dieser Anleitung finden Sie Beispiele dafür, wie diese Workflowvorlage angepasst werden kann.\n\n1. Navigieren Sie auf GitHub zur Hauptseite des Repositorys.\n\n2. Klicke unter dem Repositorynamen auf **<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   ![Screenshot: Registerkarten für das Repository „github/docs“. Die Registerkarte „Aktionen“ ist mit einem orangefarbenen Rahmen hervorgehoben.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. Wenn du bereits über einen Workflow im Repository verfügst, klicke auf **Neuer Workflow**.\n\n4. Auf der Seite „Workflow auswählen“ wird eine Auswahl empfohlener Workflowvorlagen angezeigt. Suche nach „Rust“.\n\n5. Filtern Sie die Auswahl von Workflows, indem Sie auf **Continuous Integration** klicken.\n\n6. Klicke im Workflow „Rust – von GitHub Actions“ auf **Konfigurieren**.\n\n   ![Screenshot: Seite „Einen Workflow auswählen“ Die Schaltfläche „Configure“ auf dem Workflow „Rust“ ist mit einem orangefarbenen Umriss hervorgehoben.](/assets/images/help/actions/starter-workflow-rust.png)\n\n7. Bearbeiten Sie den Workflow nach Bedarf. Beispiel: Ändere die Rust-Version.\n\n8. Klicke auf **Änderungen übernehmen**.\n\nDie `rust.yml`-Workflowdatei wird dem `.github/workflows`-Verzeichnis Ihres Repositorys hinzugefügt.\n\n## Angeben einer Rust-Version\n\nGitHub-gehostete Runner schließen eine aktuelle Version der Rust-Toolkette ein. Du kannst rustup verwenden, um die auf einem Runner installierte Version zu melden, die Version zu überschreiben und verschiedene Toolketten zu installieren. Weitere Informationen findest du unter [The rustup book](https://rust-lang.github.io/rustup/).\n\nDieses Beispiel veranschaulicht die Schritte, mit deren Hilfe du deine Runnerumgebung so einrichten kannst, dass du den nightly-Build von Rust verwenden und die Version melden kannst.\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### Abhängigkeiten „cachen“ (zwischenspeichern)\n\nDu kannst Abhängigkeiten mithilfe der Aktion „Cache“ zwischenspeichern und wiederherstellen. In diesem Beispiel wird davon ausgegangen, dass dein Repository eine `Cargo.lock`-Datei enthält.\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\nWenn du über benutzerdefinierte Anforderungen verfügst oder präzisere Steuerelemente für das Zwischenspeichern benötigst, solltest du weitere Konfigurationsoptionen für die [Aktion `cache`](https://github.com/marketplace/actions/cache) erkunden. Weitere Informationen finden Sie unter [Referenz zum Zwischenspeichern von Abhängigkeiten](/de/enterprise-cloud@latest/actions/using-workflows/caching-dependencies-to-speed-up-workflows).\n\n## Deinen Code bauen und testen\n\nDu kannst die gleichen Befehle verwenden, die du auch lokal verwendest, um deinen Code zu bauen und zu testen. In diesem Beispielworkflow wird gezeigt, wie `cargo build` und `cargo test` in einem Job verwendet werden.\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@v6\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\nDas in diesem Beispiel verwendete Schlüsselwort `release` entspricht einem Cargo-Profil. Du kannst jedes beliebige [Profil](https://doc.rust-lang.org/cargo/reference/profiles.html) verwenden, das du in deiner `Cargo.toml`-Datei definiert hast.\n\n## Veröffentlichen deines Pakets oder deiner Bibliothek auf crates.io\n\nNachdem du deinen Workflow zum Erstellen und Testen deines Codes eingerichtet hast, kannst du dich mit einem Geheimnis bei [crates.io](https://crates.io/) anmelden und dein Paket veröffentlichen.\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\nWenn beim Erstellen und Verpacken der Crate Fehler auftreten, überprüfe die Metadaten in deiner Manifestdatei `Cargo.toml` und siehe [Das Manifestformat](https://doc.rust-lang.org/cargo/reference/manifest.html). Du solltest außerdem deine `Cargo.lock`-Datei überprüfen. Weitere Informationen findest du unter [Cargo.toml gegen Cargo.lock](https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html).\n\n## Workflow-Daten als Artefakte paketieren\n\nNach Abschluss eines Workflows kannst du die resultierenden Artefakte zur Analyse hochladen oder in einem anderen Workflow verwenden. Du kannst dem Workflow diese Beispielschritte hinzufügen, um eine Anwendung für die Verwendung durch einen anderen Workflow hochzuladen.\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\nStelle zur Verwendung des hochgeladenen Artefakts in einem anderen Auftrag sicher, dass deine Workflows über die richtigen Berechtigungen für das Repository verfügen. Weitere Informationen findest du unter [Verwenden von GITHUB\\_TOKEN für die Authentifizierung in Workflows](/de/enterprise-cloud@latest/actions/security-for-github-actions/security-guides/automatic-token-authentication). Du kannst diese Beispielschritte verwenden, um die im vorherigen Workflow erstellte App herunterzuladen und auf GitHub zu veröffentlichen.\n\n```yaml copy\n      - uses: actions/checkout@v6\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```"}