Publicera NuGet-paket med Azure Pipelines (YAML/klassisk)
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Med Azure Pipelines kan du använda antingen klassiska pipelines eller YAML-pipelines för att publicera dina NuGet-paket till ditt Azure Artifacts-flöde, externa feeds eller offentliga register, till exempel nuget.org. I den här artikeln får du lära dig att:
- Generera ett NuGet-paket i Azure Pipelines
- Publicera paket till interna och externa feeds
- Publicera paket till NuGet.org
Förutsättningar
En Azure DevOps-organisation. Skapa en kostnadsfritt.
Ett Azure DevOps-projekt. Skapa ett nytt projekt om du inte redan har ett.
En Azure Artifacts-feed. Skapa en kostnadsfritt.
Skapa ett NuGet-paket
Det finns flera sätt att skapa dina NuGet-paket, till exempel att använda dotnet eller nuget.exe CLI för att packa dina paket. Om du redan använder MSBuild eller andra uppgifter för att skapa dina paket kan du hoppa över det här avsnittet och gå vidare till nästa.
Om du vill skapa ett NuGet-paket lägger du till följande kodfragment i YAML-filen. Mer information finns i NuGet-uppgift .
- task: NuGetCommand@2
inputs:
command: pack
packagesToPack: '**/*.csproj'
packDestination: '$(Build.ArtifactStagingDirectory)'
- packagesToPack: det mönster som aktiviteten använder för att söka efter csproj-kataloger att paketera.
- packDestination: katalog där paket skapas. Om det är tomt skapas paket i källroten.
Paketversionshantering
NuGet-paket definieras av deras namn och versionsnummer. Att använda semantisk versionshantering är en rekommenderad metod för att effektivt hantera paketversioner. Semantiska versioner består av tre numeriska komponenter: Major, Minor och Patch.
Korrigeringsnumret ö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 däremot huvudversionen och återställer både delversionernaoch korrigeringsversionerna till 0.
Semantisk versionshantering stöder också användning av förhandsversionsetiketter för att tagga paket. Lägg bara till ett bindestreck följt av taggen prerelease, till exempel: 1.0.0-beta.
Azure Pipelines stöder semantisk versionshantering och erbjuder följande konfigurationsalternativ för NuGet-uppgifter:
Använd datum och tid (klassisk) | byPrereleaseNumber (YAML): Paketversionen följer formatet: Major.Minor.Patch-ci-datetime där du har flexibiliteten att anpassa värdena Major, Minor och Patch.
Använda en miljövariabel (klassisk) | byEnvVar (YAML): Paketversionen är inställd på värdet för den angivna miljövariabeln.
Använd versionsnumret (klassisk) | byBuildNumber (YAML): Paketversionen är inställd på versionsnumret. Se till att du definierar versionsnummerformatet i pipelinealternativen som
$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
. Om du vill ange formatet i YAML lägger du till enname:
egenskap i roten av pipelinen och definierar formatet.
Nedan visas ett exempel som visar hur du använder versionshantering för datum och tid för att generera ett SemVer-kompatibelt paket formaterat 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 paket till interna feeds
Kommentar
Om du vill publicera dina paket i ett flöde med Hjälp av Azure Pipelines kontrollerar du att både Project Collection Build Service och projektets Build Service-identiteter har tilldelats rollen Feed Publisher (deltagare) som tilldelats i feedinställningarna. Mer information finns i Hantera behörigheter .
steps:
- task: NuGetAuthenticate@1
displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
publishVstsFeed: '<projectName>/<feed>'
allowPackageConflicts: true
Publicera paket till externa feeds
Om du vill publicera dina paket till externa NuGet-feeds eller offentliga register, till exempel feeds i andra Azure DevOps-organisationer eller nuget.org, måste du först skapa en tjänstanslutning för att autentisera med respektive tjänst:
Från ditt Azure DevOps-projekt navigerar du till Project Settings>Service-anslutningar>
Välj Ny tjänstanslutning>NuGet>Nästa.
Fyll i de obligatoriska fälten och välj sedan Spara när du är klar. Mer information finns i Hantera tjänstanslutningar .
Kommentar
Uppgiften NuGetAuthenticate@1 stöder tjänstanslutningar med grundläggande autentisering men stöder inte Apikey-autentisering. Om du vill använda ApiKey-autentisering måste du använda uppgiften NuGetCommand@2 i stället.
Om du vill publicera dina NuGet-paket i en feed i en annan organisation lägger du till följande kodfragment i YAML-pipelinen:
Använda kommandoradsaktiviteten och 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 och 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 valfri sträng när du publicerar till en Azure Artifacts-feed.
Publicera till NuGet.org
Logga in på ditt nuget.org-konto och generera en API-nyckel.
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 och använd följande URL för feed-URL :en: 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. Observera att du behöver rollen Administratör för tjänstanslutning för att välja det här alternativet.
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