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 Pipelines használatával klasszikus vagy YAML-folyamatokkal teheti közzé NuGet-csomagjait az Azure Artifacts-hírcsatornában, külső hírcsatornákban vagy nyilvános nyilvántartásokban, például nuget.org. Ebből a cikkből megtudhatja, hogyan:
- NuGet-csomag létrehozása az Azure Pipelinesban
- Csomagok közzététele belső és külső hírcsatornákon
- Csomagok közzététele NuGet.org
Előfeltételek
Egy Azure DevOps-szervezet. Hozzon létre egyet ingyen.
Egy Azure DevOps-projekt. Hozzon létre egy új projektet, ha még nem rendelkezik ilyen projektel .
Azure Artifacts-hírcsatorna. Hozzon létre egyet ingyen.
NuGet-csomag létrehozása
NuGet-csomagjait többféleképpen is létrehozhatja, például a dotnet vagy a nuget.exe CLI használatával csomagolhatja a csomagokat. Ha már msBuild vagy más feladatokat használ a csomagok létrehozásához, kihagyhatja ezt a szakaszt, és továbbléphet a következőre.
NuGet-csomag létrehozásához adja hozzá a következő kódrészletet a YAML-fájlhoz. További részletekért tekintse meg a NuGet-feladatot .
- task: NuGetCommand@2
inputs:
command: pack
packagesToPack: '**/*.csproj'
packDestination: '$(Build.ArtifactStagingDirectory)'
- packagesToPack: az a minta, amelyet a feladat a csproj-könyvtárak csomagolásához használ.
- packDestination: könyvtár, ahol a csomagok létrejönnek. Ha üres, a csomagok a forrásgyökernél jönnek létre.
Csomag verziószámozása
A NuGet-csomagokat a nevük és a verziószámuk határozza meg. A szemantikus verziószámozás használata ajánlott módszer 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 száma növekszik. Ha ú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. Ezzel szemben a visszafelé inkompatibilis módosításkor a főverziót 0-ra kell növelnie, és alaphelyzetbe kell állítania az Alverziót és a Javítás verziót is.
A szemantikus verziószámozás emellett támogatja az előzetes címkék használatát a csomagok címkézéséhez. Egyszerűen fűzze hozzá a kötőjelet, majd a prerelease címkét, például: 1.0.0-béta.
Az Azure Pipelines támogatja a szemantikus verziószámozást, és az alábbi konfigurációs lehetőségeket kínálja a NuGet-feladatokhoz:
A dátum és az idő használata (klasszikus) | byPrereleaseNumber (YAML): A csomag verziója a következő formátumot követi: Major.Minor.Patch-ci-datetime , ahol rugalmasan szabhatja testre a Fő, a Kisebb és a Javítás értéket.
Környezeti változó használata (klasszikus) | byEnvVar (YAML): A csomag verziója a megadott környezeti változó értékére van állítva.
A buildszám használata (klasszikus) | byBuildNumber (YAML): A csomag verziója a buildszámra van állítva. Győződjön meg arról, hogy a buildszám formátumát a folyamat beállításai
$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)
között adja meg. Ha meg szeretné adni a formátumot a YAML-ben, adjon hozzá egy tulajdonságotname:
a folyamat gyökeréhez, és határozza meg a formátumot.
Az alábbiakban egy példa mutatja be, hogyan használható a dátum és az idő verziószámozása egy SemVer-kompatibilis csomag 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 részletekért lásd a .NET Core CLI-feladatot .
task: DotNetCoreCLI@2
inputs:
command: pack
versioningScheme: byPrereleaseNumber
majorVersion: '$(Major)'
minorVersion: '$(Minor)'
patchVersion: '$(Patch)'
Csomagok közzététele belső hírcsatornákban
Feljegyzés
Ha az Azure Pipelines használatával szeretné közzétenni a csomagjait egy hírcsatornában, győződjön meg arról, hogy a Projektgyűjtemény buildelési szolgáltatása és a projekt buildszolgáltatás-identitásai is megkapják a hírcsatorna-beállításokban hozzárendelt Hírcsatorna-közzétevői (közreműködői) szerepkört. További részletekért lásd : Engedélyek kezelése.
steps:
- task: NuGetAuthenticate@1
displayName: 'NuGet Authenticate'
- task: NuGetCommand@2
displayName: 'NuGet push'
inputs:
command: push
publishVstsFeed: '<projectName>/<feed>'
allowPackageConflicts: true
Csomagok közzététele külső hírcsatornákon
Ha a csomagokat külső NuGet-hírcsatornákban vagy nyilvános nyilvántartásokban , például más Azure DevOps-szervezetek hírcsatornáiban vagy nuget.org szeretné közzétenni, először létre kell hoznia egy szolgáltatáskapcsolatot a megfelelő szolgáltatással való hitelesítéshez:
Az Azure DevOps-projektben navigáljon a Project Settings>Service-kapcsolatokhoz>
Válassza az Új szolgáltatáskapcsolat>NuGet>Next lehetőséget.
Töltse ki a szükséges mezőket, majd válassza a Mentés gombot, amikor elkészült. További részletekért lásd : Szolgáltatáskapcsolatok kezelése.
Feljegyzés
A NuGetAuthenticate@1 feladat támogatja az alapszintű hitelesítéssel rendelkező szolgáltatáskapcsolatokat, de nem támogatja az Apikey-hitelesítést. Az ApiKey-hitelesítés használatához inkább a NuGetCommand@2 feladatot kell használnia.
Ha a NuGet-csomagokat egy másik szervezetben lévő hírcsatornában szeretné közzétenni, adja hozzá a következő kódrészletet a YAML-folyamathoz:
A parancssori feladat és a NuGet.exe használata:
- 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 parancssori feladat és a dotnet használata:
- 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 bármilyen sztringet használhat az Azure Artifacts-hírcsatornában való közzétételkor.
Közzététel NuGet.org
Jelentkezzen be nuget.org fiókjába, és hozzon létre egy API-kulcsot.
Lépjen az Azure DevOps-projektre, és válassza a Projektbeállítások lehetőséget.
Válassza a Szolgáltatáskapcsolatok lehetőséget, majd válassza az Új szolgáltatáskapcsolat lehetőséget.
Válassza a NuGet, majd a Tovább lehetőséget.
Válassza az ApiKeyt hitelesítési módszerként, és 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 adja meg a szolgáltatáskapcsolat nevét.
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. Vegye figyelembe, hogy a beállítás kiválasztásához a szolgáltatáskapcsolat-rendszergazdai szerepkörre van szüksége.
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: