Partager via


Utiliser des packages Cargo à partir de Crates.io

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Les sources en amont d’Azure Artifacts permettent aux développeurs de consommer des packages à partir de registres publics tels que Crates.io et nuget.org. Cet article vous guide tout au long de la configuration de votre projet et de l’utilisation de la ligne de commande pour consommer des Crates à partir de Crates.io.

Prérequis

Produit Exigences
Azure DevOps - Une organisation Azure DevOps .
- Un projet Azure DevOps .
- Téléchargez et installez rustup. Vous aurez besoin de Cargo version 1.74.0 ou ultérieure.

Créer un flux

Azure Artifacts recommande d’avoir un flux dédié pour consommer des crates à partir de crates.io et un flux distinct exclusivement pour la publication de crates internes. Si vous disposez déjà d’un flux Azure Artifacts, passez à la section suivante. Sinon, créez-en un comme suit :

  1. Connectez-vous à votre organisation Azure DevOps, puis accédez à votre projet.

  2. Sélectionnez Artifacts, puis sélectionnez Créer un flux.

  3. Fournissez un nom pour votre flux, sélectionnez la visibilité pour définir qui peut afficher vos packages, puis choisissez l’étendue du flux. Cochez la case Inclure des packages provenant de sources publiques courantes pour activer les sources en amont sur votre flux.

  4. Sélectionnez Créer lorsque vous avez terminé.

    Capture d’écran montrant comment créer un flux pour consommer des crates depuis Crates.io en amont.

Se connecter à votre flux

Maintenant que vous disposez d’un flux, vous devez configurer votre fichier config.toml , configurer un fournisseur d’informations d’identification, puis vous connecter au Registre pour vous authentifier auprès de votre flux.

Configuration du projet

  1. Connectez-vous à votre organisation Azure DevOps, puis accédez à votre projet.

  2. Sélectionnez Artefacts, puis sélectionnez votre flux dans le menu déroulant.

  3. Sélectionnez Se connecter au flux, puis sélectionnez Cargo dans le volet de navigation gauche.

  4. Copiez l’extrait de code de la section d’installation de Project et collez-le dans votre fichier .cargo/config.toml dans votre référentiel source. Il doit ressembler à ce qui suit :

    • Flux dans l’étendue du projet :

      [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>"
      
    • Flux d’étendue de l’organisation :

      [registries]
      <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
      
      [source.crates-io]
      replace-with = "<FEED_NAME>"
      
  1. Connectez-vous à votre collection Azure DevOps, puis accédez à votre projet.

  2. Sélectionnez Artefacts, puis sélectionnez votre flux dans le menu déroulant.

  3. Sélectionnez Se connecter au flux, puis sélectionnez Cargo dans le volet de navigation gauche.

  4. Copiez l’extrait de code de la section d’installation de Project et collez-le dans votre fichier .cargo/config.toml dans votre référentiel source. Il doit ressembler à ce qui suit :

    • Flux dans l’étendue du projet :

      [registries]
      <FEED_NAME> = { index = "sparse+https://pkgs.dev.azure.com/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/Cargo/index/" }
      
      [source.crates-io]
      replace-with = "<FEED_NAME>"
      
    • Flux délimité à la collection :

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

Configurer un fournisseur d’informations d’identification

Pour utiliser Cargo avec Azure Artifacts, vous devez configurer un fournisseur d’informations d’identification. Les paramètres suivants définissent un assistant d’informations d’identification par défaut pour l’utilisateur :

Collez l’extrait de code suivant dans votre %USERPROFILE%.cargo\config.toml :

[registry]
global-credential-providers = ["cargo:token", "cargo:wincred"]

Connectez-vous à votre registre

  1. Créez un jeton d’accès personnel avec des portées de Mise en package>Lecture et écriture pour vous authentifier auprès de votre flux.

  2. Exécutez la commande suivante pour vous connecter à votre registre. Remplacez <FEED_NAME> par le nom de votre flux et, lorsque vous y êtes invité, collez le jeton d'accès personnel que vous avez créé précédemment.

    "Basic " + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("PAT:" + (Read-Host -MaskInput "Enter PAT"))) | cargo login --registry <FEED_NAME>
    

Enregistrer des packages à partir de Crates.io

Maintenant que votre projet est configuré, le fournisseur d’informations d’identification est configuré et que vous êtes authentifié avec votre flux, vous pouvez commencer à consommer des packages à partir de sources en amont. Azure Artifacts enregistre automatiquement une copie de tout package que vous installez en amont vers votre flux.

L’exemple suivant montre comment utiliser la bibliothèque reqwest, une bibliothèque cliente HTTP pour effectuer des requêtes HTTP :

  1. Ajoutez la caisse à votre Cargo.toml en exécutant la commande suivante dans votre répertoire de projet :

    cargo add reqwest
    
  2. Exécutez la commande suivante pour générer votre projet et consommer votre caisse :

    cargo build
    

Une fois le package installé, une copie est enregistrée dans votre flux. Vous pouvez le vérifier en accédant à votre flux dans Azure DevOps. Le package doit être disponible dans votre flux, comme indiqué ci-dessous :

Capture d’écran indiquant le crate reqwest répertorié dans un flux Azure Artifacts après avoir été sauvegardé à partir de Crates.io.

Remarque

Pour enregistrer des packages à partir d’amont, vous devez disposer du rôle Flux et Lecteur en amont (Collaborateur) ou supérieur. Pour plus d’informations, consultez rôles de flux et autorisations .