NuGet-pakketten publiceren met Azure Pipelines (YAML/Klassiek)
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
In Azure Pipelines kunt u de klassieke editor of de YAML-taken gebruiken om uw NuGet-pakketten in uw pijplijn te publiceren, naar uw Azure Artifacts-feed of naar openbare registers zoals nuget.org.
Een NuGet-pakket maken
Er zijn verschillende manieren om uw NuGet-pakketten te maken, zoals het gebruik van Visual Studio om uw NuGet-pakketten in te pakken. Als u al MSBuild of een andere taak gebruikt om uw pakketten te maken, slaat u deze sectie over en gaat u naar de sectie NuGet-pakketten publiceren.
Als u een NuGet-pakket wilt maken, voegt u het volgende codefragment toe aan uw YAML-pijplijnbestand. Zie NuGet-taak voor meer informatie.
- task: NuGetCommand@2
inputs:
command: pack
packagesToPack: '**/*.csproj'
packDestination: '$(Build.ArtifactStagingDirectory)'
- packagesToPack: patroon om te zoeken naar csproj-mappen die moeten worden verpakt
- packDestination: map waarin pakketten worden gemaakt
Pakketversiebeheer
NuGet-pakketten onderscheiden zich door hun namen en versienummers. Het gebruik van Semantic Versioning is een aanbevolen strategie voor het effectief beheren van pakketversies. Semantische versies bestaan uit drie numerieke onderdelen: Primaire, Secundaire en Patch.
De patch wordt verhoogd na het oplossen van een fout. Wanneer u een nieuwe functie die compatibel is met eerdere versies uitbrengt, gaat u de secundaire versie verhogen en de patchversie opnieuw instellen op 0. Wanneer u een incompatibele wijziging met eerdere versies aanbrengt, kunt u de primaire versie verhogen en de secundaire en patchversies opnieuw instellen op 0.
Met Semantic Versioning kunt u ook prereleaselabels gebruiken om uw pakketten te taggen. Voer hiervoor een afbreekstreepje in, gevolgd door uw prerelease-tag: bijvoorbeeld 1.0.0-beta. Semantic Versioning wordt ondersteund in Azure Pipelines en kan als volgt worden geconfigureerd in uw NuGet-taak:
Gebruik de datum en tijd (klassiek): byPrereleaseNumber (YAML). Uw pakketversie heeft de indeling Major.Minor.Patch-ci-datetime, waar u de flexibiliteit hebt om de waarden van uw primaire, secundaire en patch te kiezen.
Gebruik een omgevingsvariabele (klassiek): byEnvVar (YAML). Uw pakketversie is ingesteld op de waarde van de omgevingsvariabele die u opgeeft.
Gebruik het buildnummer (klassiek): byBuildNumber (YAML). Uw pakketversie is ingesteld op het buildnummer. Zorg ervoor dat u de buildnummernotatie onder de pijplijnopties instelt op
$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
. Als u de indeling in YAML wilt instellen, voegt u een eigenschapname:
toe aan de hoofdmap van uw pijplijn en voegt u de indeling toe.
In het volgende voorbeeld ziet u hoe u de optie voor versiebeheer voor datum en tijd gebruikt om een compatibele SemVer-versie te genereren die 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 .NET Core CLI-taak voor meer informatie.
task: DotNetCoreCLI@2
inputs:
command: pack
versioningScheme: byPrereleaseNumber
majorVersion: '$(Major)'
minorVersion: '$(Minor)'
patchVersion: '$(Patch)'
NuGet-pakketten publiceren
Als u pakketten vanuit uw pijplijn wilt publiceren naar een Azure Artifacts-feed, moet de pijplijnidentiteit de rol FeedUitgever (Inzender) hebben voor de feed. Zie Machtigingen voor pijplijnen voor meer informatie.
steps:
- task: NuGetAuthenticate@1
displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
publishVstsFeed: '<projectName>/<feed>'
allowPackageConflicts: true
Als u een pakket wilt publiceren naar een externe NuGet-feed, moet u eerst een serviceverbinding maken om verbinding te maken met die feed. Een serviceverbinding maken:
- Ga naar Project settings>Service connections New service connections.>
- Selecteer NuGet en selecteer vervolgens Volgende.
- Vul het formulier in en selecteer Opslaan wanneer u klaar bent.
Zie Serviceverbindingen beheren voor meer informatie.
Notitie
De NuGetAuthenticate@1-taak ondersteunt een serviceverbinding met behulp van basisverificatie. De taak biedt geen ondersteuning voor Verificatie van NuGet-API-sleutels. Als uw serviceverbinding ApiKey gebruikt, moet u de NuGetCommand@2 taak gebruiken en de NuGet-API-sleutel opgeven in het argumentveld. Zie NuGet-taak voor meer informatie.
Als u een pakket wilt publiceren naar een externe NuGet-feed, voegt u het volgende codefragment toe aan uw YAML-pijplijn.
De opdrachtregeltaak gebruiken (met NuGet.exe):
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION>
- script: |
nuget push <PACKAGE_PATH> -src https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>
displayName: "Push"
De opdrachtregeltaak gebruiken (met dotnet):
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: <NAME_OF_YOUR_SERVICE_CONNECTION>
- script: |
dotnet build <CSPROJ_PATH> --configuration <CONFIGURATION>
dotnet pack <CSPROJ_PATH> -p:PackageVersion=<YOUR_PACKAGE_VERSION> --output <OUTPUT_DIRECTORY> --configuration <CONFIGURATION>
dotnet nuget push <PACKAGE_PATH> --source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json --api-key <ANY_STRING>
displayName: "Build, pack and push"
Notitie
Dit ApiKey
is vereist, maar u kunt elke willekeurige waarde gebruiken bij het pushen naar Azure Artifacts-feeds.
Publiceren naar NuGet.org
Navigeer naar uw Azure DevOps-project en selecteer vervolgens Project-instellingen.
Selecteer Service Verbinding maken ions en selecteer vervolgens Nieuwe serviceverbinding.
Selecteer NuGet en selecteer vervolgens Volgende.
Selecteer ApiKey als verificatiemethode. Gebruik de volgende URL voor uw feed-URL: https://api.nuget.org/v3/index.json.
Voer de ApiKey in die u eerder hebt gegenereerd en voer vervolgens een serviceverbindingsnaam in.
Selecteer Toegang verlenen aan alle pijplijnen en selecteer Opslaan wanneer u klaar bent. Als u deze optie wilt selecteren, hebt u de serviceverbinding nodig Beheer istratorrol.
Voeg het volgende YAML-fragment toe aan uw pijplijndefinitie:
steps:
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: nuget.org
Verwante artikelen:
- NPM-pakketten publiceren met Azure Pipelines
- Universele pakketten publiceren en downloaden in Azure Pipelines
- Releases in Azure Pipelines
- Release artifacts en Artifact sources (Artefacten en artefactbronnen vrijgeven)
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor