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
Maak een Azure DevOps-organisatie en een project als u dat nog niet hebt gedaan.
Maak een nieuwe feed als u er nog geen hebt.
Als u een zelf-hostende agent gebruikt, moet u ervoor zorgen dat de .NET Core SDK (2.1.400+) en NuGet (4.8.0.5385+) zijn geïnstalleerd.
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.
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Pijplijnen en selecteer vervolgens uw pijplijndefinitie.
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
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Pijplijnen en selecteer vervolgens uw pijplijndefinitie.
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.
Meld u aan bij de Azure DevOps-organisatie waar uw pijplijn wordt uitgevoerd en navigeer vervolgens naar uw project.
Navigeer naar uw Project settings>Service-verbindingen.
Selecteer Nieuwe serviceverbinding, selecteer NuGet en selecteer vervolgens Volgende.
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.
Kies Opslaan wanneer u klaar bent.
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Pijplijnen en selecteer vervolgens uw pijplijndefinitie.
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
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Pijplijnen en selecteer vervolgens uw pijplijndefinitie.
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
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 eenname:
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)'