Megosztás a következőn keresztül:


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

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

  1. Az Azure DevOps-projektben navigáljon a Project Settings>Service-kapcsolatokhoz>

  2. Válassza az Új szolgáltatáskapcsolat>NuGet>Next lehetőséget.

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

  1. Jelentkezzen be nuget.org fiókjába, és hozzon létre egy API-kulcsot.

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

  6. Adja meg a korábban létrehozott ApiKey-et , majd adja meg a szolgáltatáskapcsolat nevét.

  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. Vegye figyelembe, hogy a beállítás kiválasztásához szüksége van a szolgáltatáskapcsolati Rendszergazda istrator szerepkörre.

steps:
- task: NuGetCommand@2
  displayName: 'NuGet push'
  inputs:
    command: push
    nuGetFeedType: external
    publishFeedCredentials: nuget.org