Partager via


Publier des packages NuGet avec Azure Pipelines (YAML/Classic)

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

Azure Pipelines permet aux développeurs de publier des packages sur des flux Azure Artifacts au sein de leur organisation, de les alimenter dans d’autres organisations et des registres publics tels que nuget.org. Cet article explique comment publier des packages NuGet sur des flux internes et externes à l’aide de pipelines Classic et YAML.

Prerequisites

Produit Exigences
Azure DevOps - Une organisation Azure DevOps et un projet.
- Un flux Azure Artifacts.
- Si vous utilisez un agent auto-hébergé, assurez-vous qu’il dispose du Kit de développement logiciel (SDK) .NET Core et de NuGet installés.
- Autorisations:
    - Pour accorder l'accès à tous les pipelines du projet, vous devez être membre du groupe Administrateurs du projet.
    - Pour créer des connexions de service, vous devez avoir le rôle d'administrateur ou de créateur de connexions de service.

Note

Si vous utilisez Ubuntu 24.04 ou version ultérieure, vous devez utiliser la NuGetAuthenticate tâche avec l’interface CLI .NET au lieu de nuget.exe. Consultez la rubrique Prise en charge des nouvelles images hébergées Ubuntu pour plus de détails.

Publier des packages NuGet sur un flux dans la même organisation

Si vous n’avez pas encore de flux, vous pouvez en créer un, sinon suivez ces étapes pour publier votre package NuGet dans un flux au sein de la même organisation :

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

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

  3. Sélectionnez Modifier, puis ajoutez l’extrait de code suivant à votre pipeline YAML pour authentifier et publier votre package :

    steps:
    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1                            # Authenticate with Azure Artifacts and other NuGet registries.
      displayName: 'NuGet Authenticate'
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push
    
  1. Connectez-vous à votre azure DevOps, puis accédez à votre projet.

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

  3. Sélectionnez Modifier, puis ajoutez l’extrait de code suivant à votre pipeline YAML pour authentifier et publier votre package :

    steps:
    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1
      displayName: 'NuGet Authenticate'
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push
    

Note

Pour publier des packages sur un flux à l’aide d’Azure Pipelines, assurez-vous que le service de génération de la collection de projets et les identités du service de génération de votre projet ont le rôle Feed Publisher (Contributeur) attribué dans vos paramètres de flux. Consultez la section Gérer les permissions pour plus de détails.

Publier des packages NuGet sur un flux dans une autre organisation

Pour publier vos packages NuGet dans un flux dans une autre organisation Azure DevOps, vous devez d’abord créer un jeton d’accès personnel (PAT) dans l’organisation cible, puis créer une connexion de service dans l’organisation où votre pipeline s’exécute. Vous pouvez ensuite utiliser la connexion de service dans votre pipeline YAML ou Classic pour authentifier et publier vos packages.

1. Créer un jeton d’accès personnel

  1. Connectez-vous à l’organisation Azure DevOps qui héberge votre flux cible.

  2. Accédez à Paramètres utilisateur>Jetons d’accès personnels.

  3. Sélectionnez Nouveau jeton, fournissez un nom descriptif, puis, sous Permissions, sélectionnez Packaging>Lecture et écriture.

  4. Sélectionnez Créer lorsque vous avez terminé, puis copiez et stockez votre PAT dans un emplacement sécurisé, car vous en aurez besoin pour configurer la connexion de service suivante.

2. Créer une connexion de service

  1. Connectez-vous à l’organisation Azure DevOps où votre pipeline s’exécutera, puis accédez à votre projet.

  2. Accédez aux Paramètres du projet>Connexions de service.

  3. Sélectionnez Nouvelle connexion de service, sélectionnez NuGet, puis sélectionnez Suivant.

  4. Sélectionnez Serveur Azure DevOps externe comme Méthode d’authentification, puis saisissez l’URL du flux cible. Collez le jeton d’accès personnel que vous avez créé précédemment, donnez un nom à votre connexion de service, et cochez Accorder la permission d’accès à tous les pipelines si cela s’applique à votre scénario.

  5. Lorsque vous avez terminé, sélectionnez Enregistrer.

    Une capture d’écran montrant comment configurer une connexion de service NuGet pour s’authentifier avec un flux externe dans une autre organisation.

3. Publier votre package

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

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

  3. Sélectionnez Modifier, puis ajoutez l’extrait de code suivant à votre pipeline YAML pour authentifier et publier votre package :

    - task: NuGetToolInstaller@1                                # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1
      inputs:
        nuGetServiceConnections: <SERVICE_CONNECTION_NAME>
    
    - script: |
          nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push       
    
  1. Connectez-vous à votre organization Azure DevOps, puis accédez à votre projet.

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

  3. Sélectionnez Modifier, puis ajoutez l’extrait suivant à votre pipeline YAML.

    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@1                            # Authenticate with Azure Artifacts and other NuGet registries.
      inputs:
        nuGetServiceConnections: <SERVICE_CONNECTION_NAME>        # Name of the service connection used to authenticate with feeds across organizations or public registries.
    
    - script: |
        nuget.exe push -Source "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" -ApiKey az $(Build.ArtifactStagingDirectory)\*.nupkg
      displayName: Push          
    

Une capture d’écran montrant le package publié avec succès dans un flux d’une autre organisation.