NuGet-pakketten publiceren met Azure Pipelines (YAML/Klassiek)
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Met Azure Pipelines kunt u klassieke of YAML-pijplijnen gebruiken om uw NuGet-pakketten te publiceren naar uw Azure Artifacts-feed, externe feeds of openbare registers, zoals nuget.org. In dit artikel leert u het volgende:
- Een NuGet-pakket genereren in Azure Pipelines
- Pakketten publiceren naar interne en externe feeds
- Pakketten publiceren naar NuGet.org
Vereisten
een Azure DevOps-organisatie. Maak gratis een account.
Een Azure DevOps-project. Maak een nieuw project als u er nog geen hebt.
Een Azure Artifacts-feed. Maak gratis een account.
Een NuGet-pakket maken
Er zijn verschillende manieren om uw NuGet-pakketten te maken, zoals het dotnet of nuget.exe CLI om uw pakketten in te pakken. Als u al MSBuild of andere taken gebruikt om uw pakketten te maken, kunt u deze sectie overslaan en doorgaan naar de volgende.
Als u een NuGet-pakket wilt maken, voegt u het volgende codefragment toe aan uw YAML-bestand. Zie NuGet-taak voor meer informatie.
- task: NuGetCommand@2
inputs:
command: pack
packagesToPack: '**/*.csproj'
packDestination: '$(Build.ArtifactStagingDirectory)'
- packagesToPack: het patroon dat de taak gebruikt om te zoeken naar csproj-mappen die moeten worden verpakt.
- packDestination: map waarin pakketten worden gemaakt. Als deze leeg zijn, worden pakketten gemaakt in de bronhoofdmap.
Pakketversiebeheer
NuGet-pakketten worden gedefinieerd door hun namen en versienummers. Het gebruik van Semantic Versioning is een aanbevolen methode voor het effectief beheren van pakketversies. Semantische versies bestaan uit drie numerieke onderdelen: Primaire, Secundaire en Patch.
Het patchnummer wordt verhoogd na het oplossen van een fout. Bij het vrijgeven van een nieuwe functie die compatibel is met eerdere versies, kunt u de secundaire versie verhogen en de patchversie opnieuw instellen op 0. Als u daarentegen een achterwaartse incompatibele wijziging aanbrengt, kunt u de primaire versie verhogen en zowel de secundaire als de patchversie opnieuw instellen op 0.
Semantic Versioning ondersteunt ook het gebruik van labels voor prerelease om pakketten te taggen. Voeg gewoon een afbreekstreepje toe, gevolgd door uw prerelease-tag, bijvoorbeeld: 1.0.0-beta.
Azure Pipelines ondersteunt Semantic Versioning en biedt de volgende configuratieopties voor NuGet-taken:
De datum en tijd gebruiken (klassiek) | byPrereleaseNumber (YAML): uw 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.
Hieronder ziet u 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 .NET Core CLI-taak voor meer informatie.
task: DotNetCoreCLI@2
inputs:
command: pack
versioningScheme: byPrereleaseNumber
majorVersion: '$(Major)'
minorVersion: '$(Minor)'
patchVersion: '$(Patch)'
Pakketten publiceren naar interne feeds
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.
steps:
- task: NuGetAuthenticate@1
displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
publishVstsFeed: '<projectName>/<feed>'
allowPackageConflicts: true
Pakketten publiceren naar externe feeds
Als u uw pakketten wilt publiceren naar externe NuGet-feeds of openbare registers, zoals feeds in andere Azure DevOps-organisaties of nuget.org, moet u eerst een serviceverbinding maken om te verifiëren met de respectieve service:
Navigeer vanuit uw Azure DevOps-project naar Project settings>Service-verbindingen>
Selecteer NuGet>Next voor nieuwe serviceverbinding.>
Vul de vereiste velden in en selecteer Opslaan wanneer u klaar bent. Zie Serviceverbindingen beheren voor meer informatie.
Notitie
De NuGetAuthenticate@1 taak ondersteunt serviceverbindingen met basisverificatie, maar biedt geen ondersteuning voor Apikey-verificatie. Als u ApiKey-verificatie wilt gebruiken, moet u in plaats daarvan de NuGetCommand@2 taak gebruiken.
Als u uw NuGet-pakketten wilt publiceren naar een feed in een andere organisatie, voegt u het volgende codefragment toe aan uw YAML-pijplijn:
Gebruik de opdrachtregeltaak en 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"
Gebruik de opdrachtregeltaak en het 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 tekenreeks gebruiken bij het publiceren naar een Azure Artifacts-feed.
Publiceren naar NuGet.org
Meld u aan bij uw nuget.org-account en genereer een API-sleutel.
Navigeer naar uw Azure DevOps-project en selecteer vervolgens Project-instellingen.
Selecteer Serviceverbindingen en selecteer vervolgens Nieuwe serviceverbinding.
Selecteer NuGet en selecteer vervolgens Volgende.
Selecteer ApiKey als verificatiemethode en 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 geef vervolgens een serviceverbindingsnaam op.
Selecteer Toegang verlenen aan alle pijplijnen en selecteer Opslaan wanneer u klaar bent. Houd er rekening mee dat u de rol Beheerder van de serviceverbinding nodig hebt om deze optie te selecteren.
steps:
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: nuget.org
Verwante artikelen:
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor