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ágot name: 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:

  1. Nyissa meg a Project settings>Service connections New service connections>(Új szolgáltatáskapcsolat) lehetőséget.
  2. Válassza a NuGet, majd a Tovább lehetőséget.
  3. 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

  1. API-kulcs létrehozása.

  2. Lépjen az Azure DevOps-projektre, és válassza a fogaskerék ikonProjektbeállítások lehetőséget.

  3. Válassza a Szolgáltatás Csatlakozás, majd az Új szolgáltatáskapcsolat lehetőséget.

  4. Válassza a NuGet, majd a Tovább lehetőséget.

  5. 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.

  6. Adja meg a korábban létrehozott ApiKey-et , majd adjon meg egy szolgáltatáskapcsolatnevet.

  7. 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