Freigeben über


Veröffentlichen von Cargo-Paketen mit Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022

Azure Pipelines ermöglicht es Entwicklern, ihre Cargo-Pakete in Azure Artifacts-Feeds und öffentlichen Registrierungen wie Crates.io zu veröffentlichen. In diesem Artikel erfahren Sie, wie Sie Ihre Cargo-Pakete in einem Azure Artifacts-Feed veröffentlichen können, indem Sie sowohl YAML- als auch klassische Pipelines verwenden.

In diesem Artikel erfahren Sie, wie Sie:

  • Erstellen Sie einen Azure Artifacts-Feed
  • Authentifizieren mit Azure Artifacts
  • Veröffentlichen von Cargo-Paketen

Voraussetzungen

Einen Feed erstellen

Azure Artifacts empfiehlt, einen dedizierten Feed für den Verbrauch von Crates aus crates.io und einen separaten Feed ausschließlich für die Veröffentlichung interner Crates zu verwenden. Wenn Sie bereits einen Feed haben, können Sie mit dem nächsten Abschnitt fortfahren.

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.

  2. Wählen Sie Artefakte und dann Ihren Feed erstellen aus.

  3. Geben Sie einen Namen für Ihren Feed an, geben Sie dessen Sichtbarkeit an, und wählen Sie dann einen Bereich für Ihren Feed aus.

  4. Wählen Sie Erstellen, wenn Sie fertig sind.

    Screenshot, der zeigt, wie Sie einen Frachtfeed für interne Pakete erstellen.

Authentifizieren mit Azure Artifacts

  1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.

  2. Wählen Sie Artefakte und dann Ihren Feed aus.

  3. Wählen Sie die Option Mit Feed verbinden und wählen Sie dann Cargo im linken Bereich aus.

  4. Folgen Sie den Anweisungen im Abschnitt Project-Setup, indem Sie den bereitgestellten Ausschnitt zur Datei config.toml in Ihrem Quell-Repository hinzufügen:

    • Projektbezogener Feed:

      [registries]
      <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
      
      [source.crates-io]
      replace-with = "<FEED_NAME>"
      
    • Organisationsbezogener Feed:

      [registries]
      <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
      
      [source.crates-io]
      replace-with = "<FEED_NAME>"
      
  5. Erstellen Sie ein persönliches Zugriffstoken mit Verpackung>Lese- und Schreibbereichen, um sich bei Ihrem Feed zu authentifizieren.

  6. Verwenden Sie die CargoAuthenticate-Aufgabe, um sich über Ihre Pipeline zu authentifizieren:

    1. Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.

    2. Wählen Sie Pipelines, Ihre Pipelinedefinition und dann Bearbeiten aus.

    3. Wählen Sie + aus, um eine neue Aufgabe hinzuzufügen. Suchen Sie nach der Aufgabe Cargo-Authentifizierung und wählen Sie dann Hinzufügen aus, um sie Ihrer Pipeline hinzuzufügen.

    4. Wählen Sie das Ellipsen-Symbol, um ein neues Fenster zu öffnen, das den Inhalt Ihres Repositorys anzeigt und wählen Sie dann Ihre config.toml-Datei.

      Screenshot der Cargo-Authentifizierungsaufgabe in einer klassischen Pipeline.

Veröffentlichen von Crates in Ihrem Feed

  1. Wählen Sie in Ihrem Azure DevOps-Projekt die Option Pipelines, wählen Sie Ihre Pipeline-Definition und wählen Sie dann Bearbeiten.

  2. Wählen Sie das Zeichen + auf Ihrem Agentenauftrag, um eine neue Aufgabe hinzuzufügen. Suchen Sie die PowerShell-Aufgabe über die Suchfunktion und wählen Sie dann Hinzufügen aus, um sie zu Ihrer Pipeline hinzuzufügen.

  3. Geben Sie Ihrer Aufgabe einen Namen, z. B. Veröffentlichen und wählen Sie dann Inline als Typ aus. Fügen Sie den Veröffentlichungsbefehl inline ein und ersetzen Sie den Platzhalter durch ihren Feednamen:

    cargo publish --registry <FEED_NAME>
    

Screenshot, der zeigt, wie Kisten in und Azure Artifacts-Feed mithilfe einer klassischen Pipeline veröffentlicht werden.

Beispiel

In diesem Beispiel installieren wir rustup auf dem Agent, richten die PATH-Umgebungsvariable ein, erstellen unser Projekt, authentifizieren mit CargoAuthenticate und veröffentlichen schließlich unser Crate in unserem Azure Artifacts-Feed:

trigger:
- main

pool:
  vmImage: windows-latest

steps:
- powershell: |
   Invoke-WebRequest -Uri https://sh.rustup.rs -OutFile rustup-init.sh
   bash .\rustup-init.sh -y
   echo "##vso[task.prependpath]$env:USERPROFILE\.cargo\bin"
  displayName: Install

- task: CargoAuthenticate@0
  displayName: 'cargo Authenticate'
  inputs:
    configFile: '.cargo/config.toml'

- script: |
   cargo build --all
  displayName: Build

- powershell: |
   cargo publish --registry CargoInternalFeed
  displayName: Publish

Nachdem die Pipelineausführung abgeschlossen ist, sollte Ihr Crate in Ihrem Feed verfügbar sein, wie unten dargestellt:

Screenshot der im Feed veröffentlichten Kiste