Partager via


Publier des packages Cargo avec Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022

Azure Pipelines permet aux développeurs de publier des packages Cargo sur des flux Azure Artifacts et des registres publics tels que Crates.io. Cet article vous explique comment publier vos packages Cargo sur des flux Azure Artifacts avec des pipelines YAML et classiques.

Cet article vous guidera tout au long des étapes suivantes :

  • Créer un flux Azure Artifacts
  • S’authentifier auprès de Azure Artifacts
  • Publier des packages Cargo

Prérequis

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, vous pouvez passer à la section suivante.

  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, spécifiez sa visibilité, puis choisissez une étendue pour votre flux.

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

    Capture d’écran montrant comment créer un flux de fret pour les packages internes.

S’authentifier auprès de Azure Artifacts

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

  2. Sélectionnez Artefacts, puis sélectionnez votre flux.

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

  4. Suivez les instructions de la section Configuration de project en ajoutant l’extrait fourni à votre fichier config.toml dans votre référentiel source :

    • Flux à l'échelle 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 à l'échelle 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>"
      
  5. 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.

  6. Utilisez la tâche CargoAuthenticate pour vous authentifier à partir de votre pipeline :

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

    2. Sélectionnez Pipelines, sélectionnez votre définition de pipeline, puis sélectionnez Modifier.

    3. Sélectionnez le signe + pour ajouter une nouvelle tâche. Recherchez la tâche Cargo Authenticate, puis sélectionnez Ajouter pour l’ajouter à votre pipeline.

    4. Sélectionnez l’icône de points de suspension pour ouvrir une nouvelle fenêtre affichant le contenu de votre référentiel, puis choisissez votre fichier config.toml.

      Capture d’écran montrant la tâche d’authentification cargo dans un pipeline classique.

Publier des crates sur votre flux

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines, votre définition de pipeline puis Édition.

  2. Sélectionnez le signe + sur votre projet d’agent pour ajouter une nouvelle tâche. Recherchez la tâche PowerShell via la fonction de recherche, puis sélectionnez Ajouter pour l’ajouter à votre pipeline.

  3. Donnez un nom à votre tâche, par exemple Publier, puis sélectionnez En ligne comme type. Collez votre commande de publication en ligne, en remplaçant l’espace réservé par le nom de votre flux :

    cargo publish --registry <FEED_NAME>
    

Capture d’écran montrant comment publier des caisses sur et un flux Azure Artifacts à l’aide d’un pipeline classique.

Exemple

Dans cet exemple, nous allons installer rustup sur l’agent, configurer la variable d’environnement PATH, créer notre projet, s’authentifier auprès de CargoAuthenticate et enfin publier notre crate dans notre flux Azure Artifacts :

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

Une fois l’exécution de votre pipeline terminée, votre crate doit être disponible dans votre flux, comme indiqué ci-dessous :

Capture d’écran montrant la caisse hello-world-cargo publiée sur le flux.