NuGet-csomagok közzététele az Azure Pipelines használatával (YAML/Klasszikus)
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Az Azure Pipelinesban a klasszikus szerkesztő vagy a YAML-feladatok segítségével közzéteheti NuGet-csomagjait a folyamaton belül, az Azure Artifacts-hírcsatornában vagy nyilvános adatbázisokban, például nuget.org.
NuGet-csomag létrehozása
NuGet-csomagjait többféleképpen is létrehozhatja, például a Visual Studióval csomagolhatja a NuGet-csomagokat. Ha már msBuild vagy más feladatot használ a csomagok létrehozásához, hagyja ki ezt a szakaszt, és ugorjon a NuGet-csomagok közzétételének szakaszára.
NuGet-csomag létrehozásához adja hozzá a következő kódrészletet a folyamat YAML-fájljához. További információ: NuGet-feladat.
- task: NuGetCommand@2
inputs:
command: pack
packagesToPack: '**/*.csproj'
packDestination: '$(Build.ArtifactStagingDirectory)'
- packagesToPack: a csomaghoz tartozó csproj-könyvtárak keresésének mintája
- packDestination: könyvtár, ahol a csomagok létrejönnek
Csomag verziószámozása
A NuGet-csomagokat a nevük és a verziószámuk különbözteti meg. A szemantikus verziószámozás alkalmazása ajánlott stratégia a csomagverziók hatékony kezeléséhez. A szemantikai verziók három numerikus összetevőből állnak: Major, Minor és Patch.
A hiba kijavítása után a javítás növekszik. Ha egy új, visszamenőlegesen kompatibilis funkciót ad ki, az alverziót 0-ra kell növelnie, és alaphelyzetbe kell állítania a Patch verziót. Ha visszafelé nem kompatibilis módosítást hoz létre, a főverziót 0-ra kell növelnie, és alaphelyzetbe kell állítania az Alverzió és a Javítás verziót.
A Szemantikus verziószámozással előzetes címkékkel is címkézheti a csomagokat. Ehhez írjon be egy kötőjelet, majd a prerelease címkét: pl. 1.0.0-béta. A szemantikus verziószámozás az Azure Pipelinesban támogatott, és a NuGet-feladatban az alábbiak szerint konfigurálható:
Használja a dátumot és az időt (klasszikus): byPrereleaseNumber (YAML). A csomag verziója a következő formátumban érhető el: Major.Minor.Patch-ci-datetime , ahol rugalmasan választhatja ki a főverzió, alverzió és javítás értékeit.
Használjon környezeti változót (klasszikus): byEnvVar (YAML). A csomag verziója a megadott környezeti változó értékére van állítva.
Használja a buildszámot (klasszikus): byBuildNumber (YAML). A csomag verziója a buildszámra van állítva. Győződjön meg arról, hogy a folyamat beállításai alatt a buildszám formátumát a következőre
$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
állítja be: . Ha meg szeretné adni a formátumot a YAML-ben, adjon hozzá egy tulajdonságotname:
a folyamat gyökerénél, és adja hozzá a formátumot.
Az alábbi példa bemutatja, hogyan használható a dátum- és időverzió-verziószámozási lehetőség egy SemVer-kompatibilis verzió létrehozásához a következő formátumban: 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)'
Feljegyzés
DotNetCore
és DotNetStandard
a csomagokat a feladattal együtt kell csomagolni a DotNetCoreCLI@2
System.InvalidCastExceptions elkerülése érdekében. További információ: .NET Core CLI-feladat.
task: DotNetCoreCLI@2
inputs:
command: pack
versioningScheme: byPrereleaseNumber
majorVersion: '$(Major)'
minorVersion: '$(Minor)'
patchVersion: '$(Patch)'
NuGet-csomagok közzététele
Ha csomagokat szeretne közzétenni egy Azure Artifacts-csatornán a folyamatból, a folyamatidentitásnak rendelkeznie kell a Hírcsatorna-közzétevő (Közreműködő) szerepkörével a hírcsatornán. További információ: Folyamatok engedélyei.
steps:
- task: NuGetAuthenticate@1
displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
publishVstsFeed: '<projectName>/<feed>'
allowPackageConflicts: true
Ha egy csomagot egy külső NuGet-csatornán szeretne közzétenni, először létre kell hoznia egy szolgáltatáskapcsolatot a hírcsatornához való csatlakozáshoz. Szolgáltatáskapcsolat létrehozása:
- Nyissa meg a Project settings>Service connections New service connections>(Új szolgáltatáskapcsolat) lehetőséget.
- Válassza a NuGet, majd a Tovább lehetőséget.
- Töltse ki az űrlapot, majd válassza a Mentés gombot, ha elkészült.
További információ: Szolgáltatáskapcsolatok kezelése.
Feljegyzés
A NuGetAuthenticate@1 feladat alapszintű hitelesítéssel támogatja a szolgáltatáskapcsolatot. A feladat nem támogatja a NuGet API-kulcsok hitelesítését. Ha a szolgáltatáskapcsolat ApiKey-t használ, a NuGetCommand@2 feladatot kell használnia, és meg kell adnia a NuGet API-kulcsot az argumentumok mezőben. További információ: NuGet-feladat.
Ha egy csomagot egy külső NuGet-csatornán szeretne közzétenni, adja hozzá a következő kódrészletet a YAML-folyamathoz.
A parancssorifeladat használata (NuGet.exe esetén):
- 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"
A parancssorifeladat használata (dotnettel):
- 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"
Feljegyzés
Ez ApiKey
kötelező, de tetszőleges értéket használhat az Azure Artifacts-hírcsatornákba való leküldéskor.
Közzététel NuGet.org
API-kulcs létrehozása.
Lépjen az Azure DevOps-projektre, és válassza a Projektbeállítások lehetőséget.
Válassza a Szolgáltatás Csatlakozás, majd az Új szolgáltatáskapcsolat lehetőséget.
Válassza a NuGet, majd a Tovább lehetőséget.
Hitelesítési módszerként válassza az ApiKey lehetőséget. Használja a következő URL-címet a hírcsatorna URL-címéhez: https://api.nuget.org/v3/index.json.
Adja meg a korábban létrehozott ApiKey-et , majd adjon meg egy szolgáltatáskapcsolatnevet.
Válassza a Hozzáférési engedély megadása az összes folyamathoz lehetőséget, majd ha végzett, válassza a Mentés lehetőséget. A beállítás kiválasztásához szüksége van a szolgáltatáskapcsolati Rendszergazda istrator szerepkörre.
Adja hozzá a következő YAML-kódrészletet a folyamatdefinícióhoz:
steps:
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: nuget.org
Kapcsolódó cikkek
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: