Publicera NuGet-paket med Azure Pipelines (YAML/klassisk)
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
I Azure Pipelines kan du använda den klassiska redigeraren eller YAML-uppgifterna för att publicera dina NuGet-paket i din pipeline, till ditt Azure Artifacts-flöde eller till offentliga register som nuget.org.
Skapa ett NuGet-paket
Det finns olika sätt att skapa dina NuGet-paket, till exempel att använda Visual Studio för att packa dina NuGet-paket. Om du redan använder MSBuild eller någon annan uppgift för att skapa dina paket hoppar du över det här avsnittet och går vidare till avsnittet Publicera NuGet-paket .
Om du vill skapa ett NuGet-paket lägger du till följande kodfragment i din YAML-pipelinefil. Mer information finns i NuGet-uppgift.
- task: NuGetCommand@2
inputs:
command: pack
packagesToPack: '**/*.csproj'
packDestination: '$(Build.ArtifactStagingDirectory)'
- packagesToPack: mönster för att söka efter csproj-kataloger att packa
- packDestination: katalog där paket skapas
Paketversionshantering
NuGet-paket särskiljs av deras namn och versionsnummer. Att använda semantisk versionshantering är en rekommenderad strategi för att effektivt hantera paketversioner. Semantiska versioner består av tre numeriska komponenter: Major, Minor och Patch.
Korrigeringen ökas efter att en bugg har åtgärdats. När du släpper en ny bakåtkompatibel funktion ökar du delversionen och återställer korrigeringsversionen till 0. När du gör en bakåtkompatibel ändring ökar du huvudversionen och återställer delversionerna och korrigeringsversionerna till 0.
Med semantisk versionshantering kan du också använda förhandsversionsetiketter för att tagga dina paket. Om du vill göra det anger du ett bindestreck följt av taggen prerelease: T.ex. 1.0.0-beta. Semantisk versionshantering stöds i Azure Pipelines och kan konfigureras i din NuGet-uppgift på följande sätt:
Använd datum och tid (klassisk): byPrereleaseNumber (YAML). Paketversionen är i formatet: Major.Minor.Patch-ci-datetime där du har flexibiliteten att välja värdena för huvud-, del- och korrigeringsfilen.
Använd en miljövariabel (klassisk): byEnvVar (YAML). Paketversionen är inställd på värdet för den miljövariabel som du anger.
Använd versionsnumret (klassisk): byBuildNumber (YAML). Paketversionen är inställd på versionsnumret. Se till att du anger versionsnummerformatet under pipelinealternativen till
$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
. Om du vill ange formatet i YAML lägger du till en egenskapname:
i roten av pipelinen och lägger till formatet.
I följande exempel visas hur du använder versionsalternativet datum och tid för att generera en SemVer-kompatibel version formaterad som: 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)'
Kommentar
DotNetCore
och DotNetStandard
paket bör paketeras med uppgiften DotNetCoreCLI@2
för att undvika System.InvalidCastExceptions. Mer information finns i .NET Core CLI-uppgift.
task: DotNetCoreCLI@2
inputs:
command: pack
versioningScheme: byPrereleaseNumber
majorVersion: '$(Major)'
minorVersion: '$(Minor)'
patchVersion: '$(Patch)'
Publicera NuGet-paket
Om du vill publicera paket till en Azure Artifacts-feed från din pipeline måste pipelineidentiteten ha rollen Feed Publisher (deltagare) i flödet. Mer information finns i Pipelines-behörigheter.
steps:
- task: NuGetAuthenticate@1
displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
publishVstsFeed: '<projectName>/<feed>'
allowPackageConflicts: true
Om du vill publicera ett paket till en extern NuGet-feed måste du först skapa en tjänstanslutning för att ansluta till feeden. Så här skapar du en tjänstanslutning:
- Gå till Projektinställningar>Tjänstanslutningar>Ny tjänstanslutning.
- Välj NuGet och välj sedan Nästa.
- Fyll i formuläret och välj sedan Spara när du är klar.
Mer information finns i Hantera tjänstanslutningar.
Kommentar
Uppgiften NuGetAuthenticate@1 stöder en tjänstanslutning med grundläggande autentisering. Uppgiften stöder inte NuGet API-nyckelautentisering. Om din tjänstanslutning använder ApiKey måste du använda uppgiften NuGetCommand@2 och ange NuGet API-nyckeln i fältet argument . Mer information finns i NuGet-uppgift.
Om du vill publicera ett paket i en extern NuGet-feed lägger du till följande kodfragment i YAML-pipelinen.
Använda kommandoradsaktiviteten (med 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"
Använda kommandoradsaktiviteten (med 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"
Kommentar
ApiKey
Krävs, men du kan använda valfritt godtyckligt värde vid push-överföring till Azure Artifacts-feeds.
Publicera till NuGet.org
Gå till ditt Azure DevOps-projekt och välj sedan Projektinställningar.
Välj Tjänst Anslut ions och välj sedan Ny tjänstanslutning.
Välj NuGet och välj sedan Nästa.
Välj ApiKey som autentiseringsmetod. Använd följande URL för din feed-URL: https://api.nuget.org/v3/index.json.
Ange den ApiKey som du genererade tidigare och ange sedan ett tjänstanslutningsnamn.
Välj Bevilja åtkomstbehörighet till alla pipelines och välj sedan Spara när du är klar. Om du vill välja det här alternativet behöver du rollen Administratör för tjänstanslutning.
Lägg till följande YAML-kodfragment i pipelinedefinitionen:
steps:
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: nuget.org
Relaterade artiklar
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för