Delen via


NuGet-pakketten publiceren met Azure Pipelines (YAML/Klassiek)

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Met Behulp van Azure Pipelines kunt u uw NuGet-pakketten publiceren naar Azure Artifacts-feeds in uw organisatie, in andere organisaties en naar openbare registers, zoals nuget.org, met behulp van klassieke of YAML-pijplijnen. In dit artikel leert u het volgende:

  • Pakketten publiceren naar een interne feed
  • Pakketten publiceren naar een feed in een andere organisatie
  • Pakketversiebeheer

Vereisten

NuGet-pakketten publiceren naar een feed in dezelfde organisatie

Notitie

Als u uw pakketten wilt publiceren naar een feed met behulp van Azure Pipelines, moet u ervoor zorgen dat zowel de buildservice voor projectverzamelingen als de buildservice-identiteiten van uw project de rol FeedUitgever (Inzender) krijgen toegewezen in uw feedinstellingen. Zie Machtigingen beheren voor meer informatie.

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.

  2. Selecteer Pijplijnen en selecteer vervolgens uw pijplijndefinitie.

  3. Selecteer Bewerken en voeg vervolgens het volgende fragment toe aan uw YAML-pijplijn.

steps:
- task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
  displayName: 'NuGet Tool Installer'

- task: NuGetAuthenticate@0
  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. Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.

  2. Selecteer Pijplijnen en selecteer vervolgens uw pijplijndefinitie.

  3. Selecteer Bewerken en voeg vervolgens het volgende fragment toe aan uw YAML-pijplijn.

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

NuGet-pakketten publiceren naar een feed in een andere organisatie

Als u uw NuGet-pakketten wilt publiceren naar een feed in een andere Azure DevOps-organisatie, moet u eerst een persoonlijk toegangstoken (PAT) maken in de doelorganisatie. Navigeer naar de organisatie die als host fungeert voor uw doelfeed en maak een persoonlijk toegangstoken met het lees- en schrijfbereik voor pakketten>. Zodra de PAT is gemaakt, kopieert en slaat u deze op een veilige locatie op, omdat u deze in de volgende sectie nodig hebt om een serviceverbinding in te stellen.

  1. Meld u aan bij de Azure DevOps-organisatie waar uw pijplijn wordt uitgevoerd en navigeer vervolgens naar uw project.

  2. Navigeer naar uw Project settings>Service-verbindingen.

  3. Selecteer Nieuwe serviceverbinding, selecteer NuGet en selecteer vervolgens Volgende.

  4. Selecteer Externe Azure DevOps-server als verificatiemethode en voer vervolgens de URL van de doelfeed in. Plak het persoonlijke toegangstoken dat u eerder hebt gemaakt, geef een naam op voor uw serviceverbinding en schakel het selectievakje Toegang verlenen toe aan alle pijplijnen , indien van toepassing op uw scenario.

  5. Kies Opslaan wanneer u klaar bent.

    Een schermopname van het instellen van een NuGet-serviceverbinding voor verificatie met een externe feed in een andere organisatie.

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.

  2. Selecteer Pijplijnen en selecteer vervolgens uw pijplijndefinitie.

  3. Selecteer Bewerken en voeg vervolgens het volgende fragment toe aan uw YAML-pijplijn.

    - 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. Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.

  2. Selecteer Pijplijnen en selecteer vervolgens uw pijplijndefinitie.

  3. Selecteer Bewerken en voeg vervolgens het volgende fragment toe aan uw YAML-pijplijn.

    - task: NuGetToolInstaller@1                            # Minimum required NuGet version: 4.8.0.5385+.
      displayName: 'NuGet Tool Installer'
    
    - task: NuGetAuthenticate@0
      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          
    

Een schermopname van het pakket dat is gepubliceerd naar een feed in een andere organisatie.

NuGet-taakpakketversiebeheer

Azure Pipelines biedt ondersteuning voor Semantic Versioning en biedt de volgende configuratieopties voor NuGet-taken:

  • De datum en tijd gebruiken (klassiek) | byPrereleaseNumber (YAML): de pakketversie volgt de indeling: Major.Minor.Patch-ci-datetime , waar u de flexibiliteit hebt om de waarden Major, Minor en Patch aan te passen.

  • Een omgevingsvariabele gebruiken (klassiek) | byEnvVar (YAML): uw pakketversie is ingesteld op de waarde van de opgegeven omgevingsvariabele.

  • Het buildnummer gebruiken (klassiek) | byBuildNumber (YAML): uw pakketversie is ingesteld op het buildnummer. Zorg ervoor dat u de indeling van het buildnummer in de pijplijnopties definieert als $(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r). Als u de indeling in YAML wilt opgeven, voegt u een name: eigenschap toe aan de hoofdmap van uw pijplijn en definieert u de indeling.

Hier volgt een voorbeeld waarin wordt gedemonstreerd hoe u versiebeheer voor datum en tijd gebruikt om een SemVer-compatibel pakket te genereren dat is opgemaakt als: Major.Minor.Patch-ci-datetime.

variables:
  Major: '1'
  Minor: '0'
  Patch: '0'

steps:
- task: NuGetCommand@2
  inputs:
    command: pack
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'

Notitie

DotNetCore en DotNetStandard pakketten moeten worden verpakt met de DotNetCoreCLI@2 taak om System.InvalidCastExceptions te voorkomen. Zie de .NET Core CLI-taak voor meer informatie.

task: DotNetCoreCLI@2
inputs:
    command: pack
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'