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
Une organisation Azure DevOps. Créez une organisation si vous n’en avez pas déjà une.
Un projet Azure DevOps. Créez un projet si vous n’en avez pas encore un.
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.
Connectez-vous à votre organisation Azure DevOps puis accédez à votre projet.
Sélectionnez Artifacts, puis sélectionnez Créer un flux.
Fournissez un nom pour votre flux, spécifiez sa visibilité, puis choisissez une étendue pour votre flux.
Sélectionnez Créer lorsque vous avez terminé.
S’authentifier auprès de Azure Artifacts
Connectez-vous à votre organisation Azure DevOps puis accédez à votre projet.
Sélectionnez Artefacts, puis sélectionnez votre flux.
Sélectionnez Se connecter au flux, puis sélectionnez Cargo dans le volet gauche.
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>"
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.
Utilisez la tâche CargoAuthenticate pour vous authentifier à partir de votre pipeline :
Connectez-vous à votre organisation Azure DevOps puis accédez à votre projet.
Sélectionnez Pipelines, sélectionnez votre définition de pipeline, puis sélectionnez Modifier.
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.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.
Publier des crates sur votre flux
Dans votre projet Azure DevOps, sélectionnez Pipelines, votre définition de pipeline puis Édition.
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.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>
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 :