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


.NET Core-projektek létrehozása, tesztelése és üzembe helyezése

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Ez a cikk azt ismerteti, hogyan használható az Azure Pipelines a .NET Core-projektek használatára. A cikk a következő feladatokat ismerteti:

  • Hozzon létre egy .NET Core-webalkalmazást, és töltse fel egy GitHub-adattárba.
  • Hozzon létre egy Azure DevOps-projektet és egy Azure Pipelines-folyamatot a projekt létrehozásához.
  • Saját üzemeltetésű ügynökökkel állítsa be a buildkörnyezetet.
  • Állítsa vissza a függőségeket, hozza létre a projektet, és tesztelje a .NET Core (DotNetCoreCLI@2) feladattal vagy egy szkripttel.
  • A .NET Core (DotNetCoreCLI@2) feladat használatával további .NET SDK-parancsokat adhat hozzá a folyamathoz.
  • A Kódlefedettségi eredmények közzététele (Publish code coverage results v2) tevékenységgel közzéteheti a kódlefedettségi eredményeket.
  • Csomagolja és kézbesítse a buildkimenetet a folyamatnak, a NuGet-hírcsatornának, a ZIP-archívumnak vagy más céloknak.
  • Hozzon létre egy .NET Core-webalkalmazást, és töltse fel egy GitHub-adattárba.
  • Hozzon létre egy Azure DevOps-projektet és egy Azure Pipelines-folyamatot a projekt létrehozásához.
  • Állítsa be a buildkörnyezetet a Microsoft által üzemeltetett vagy saját üzemeltetésű ügynökökkel.
  • Állítsa vissza a függőségeket, hozza létre a projektet, és tesztelje a .NET Core (DotNetCoreCLI@2) feladattal vagy egy szkripttel.
  • A .NET Core (DotNetCoreCLI@2) feladat használatával további .NET SDK-parancsokat adhat hozzá a folyamathoz.
  • A Kódlefedettségi eredmények közzététele (Publish code coverage results v2) tevékenységgel közzéteheti a kódlefedettségi eredményeket.
  • Csomagolja és kézbesítse a buildkimenetet a folyamatnak, a NuGet-hírcsatornának, a ZIP-archívumnak vagy más céloknak.

Note

A .NET-keretrendszer-projektek használatához lásd: ASP.NET-alkalmazások létrehozása a .NET-keretrendszerrel.

Előfeltételek

A cikkben szereplő összes eljárás elvégzéséhez a következő előfeltételekre van szükség:

  • Egy Azure DevOps-szervezet. Ingyenesen létrehozhat egyet.
  • Tagság a szervezet Projektgazdák csoportjában, így Azure DevOps-projekteket hozhat létre, és hozzáférést adhat a projekteknek a folyamatokhoz. Az Azure DevOps-szervezet tulajdonosai automatikusan rendelkeznek ezzel a tagsággal.
  • Egy Azure DevOps-projekt a szervezetben. Projekt létrehozása az Azure DevOps.
  • Folyamatok futtatása a Microsoft által üzemeltetett ügynökökön a párhuzamos feladatok ingyenes rétegének kérésével. A kérés feldolgozása több munkanapot is igénybe vehet. További információ: Párhuzamos feladatok konfigurálása és fizetése.
  • A szolgáltatáskapcsolatokrendszergazdai vagy létrehozói szerepköre, amelyet projektadminisztrátorként rendelhet hozzá.
  • Egy GitHub-fiók és -adattár.

A cikkben szereplő összes eljárás elvégzéséhez a következő előfeltételekre van szükség:

  • Egy Azure DevOps-gyűjtemény.
  • A szervezetben létrehozott Azure DevOps-projekt. Útmutatásért lásd: Projekt létrehozása az Azure DevOpsban.
  • Tagság a Projektgazdák csoportban, így Azure DevOps-projekteket hozhat létre, és hozzáférést adhat a projekteknek a folyamatokhoz. Az Azure DevOps Organization tulajdonosai automatikusan rendelkeznek ezzel a tagsággal.
  • A szolgáltatáskapcsolatokrendszergazdai vagy létrehozói szerepköre, amelyet projektadminisztrátorként rendelhet hozzá.
  • Egy GitHub-fiók és -adattár.

.NET-projekt létrehozása és feltöltése a GitHubra

Ha már a GitHub-adattárban szeretne .NET-projektet használni, kihagyhatja ezt a szakaszt.

Ha nem rendelkezik .NET-projekttel, hozzon létre egy újat a helyi gépen az alábbiak szerint:

  1. Telepítse a .NET 8.0 SDK-t, vagy győződjön meg arról, hogy telepítve van.
  2. Nyisson meg egy terminálablakot a helyi gépen.
  3. Hozzon létre egy projektkönyvtárat, és navigáljon hozzá.
  4. Hozzon létre egy új .NET 8-webalkalmazást a futtatással dotnet new webapp -f net8.0.
  5. Az alkalmazást helyileg hozhatja létre és futtathatja a használatával dotnet run.
  6. Az alkalmazás indításakor nyomja le a Ctrl+C billentyűkombinációt.
  7. Töltse fel vagy csatlakoztassa a helyi projektet a GitHub-adattárhoz.

Folyamat létrehozása

Ha van egy használni kívánt folyamat, kihagyhatja ezt a szakaszt. Ellenkező esetben a YAML-folyamatszerkesztővel vagy a klasszikus szerkesztővel az alábbiak szerint hozhat létre folyamatot:

  1. Az Azure DevOps-projektben válassza a Folyamatok lehetőséget a bal oldali navigációs menüben.

  2. Válassza az Új vagy a Folyamat létrehozása lehetőséget, ha ez a folyamat az első a projektben.

  3. A Hol van a kód képernyőjén válassza a GitHubot.

  4. Előfordulhat, hogy a rendszer átirányítja a GitHubra a bejelentkezéshez. Ha igen, adja meg a GitHub hitelesítő adatait.

  5. Az Adattár kiválasztása képernyőn válassza ki azt az adattárat, amelyben a .NET-alkalmazás található.

  6. Előfordulhat, hogy a Rendszer átirányítja a GitHubra az Azure Pipelines alkalmazás telepítéséhez. Ha igen, válassza a Jóváhagyás > telepítés lehetőséget.

  1. A Konfigurálás lapon válassza a Továbbiak megjelenítése lehetőséget, majd válassza ki a ASP.NET Core-folyamatsablont a listából. Ez a sablon számos lépést és beállítást tartalmaz, amelyeket ez a cikk ír le.

    A Starter-folyamatot a Konfigurálás lapon is kiválaszthatja , hogy minimális folyamattal kezdje, és saját maga adja hozzá a lépéseket és a beállításokat.

  2. A Véleményezés lapon vizsgálja meg a YAML-kódot. Testre szabhatja a fájlt a követelményeknek megfelelően. Megadhat például egy másik ügynökkészletet, vagy hozzáadhat egy feladatot egy másik .NET SDK telepítéséhez.

  1. Az Azure DevOps-projektben válassza a Folyamatok lehetőséget a bal oldali navigációs menüben.

  2. Válassza az Új vagy a Folyamat létrehozása lehetőséget, ha ez a folyamat az első a projektben.

  3. Válassza ki a forrásadattár típusát. Ebben a példában használja a GitHub Enterprise Servert.

  4. A következő képernyőn adja meg a következő információkat:

    • Például https://github.com/mynamea GitHub-fiók URL-címe.
    • A GitHub személyes hozzáférési jogkivonata (PAT).
    • Egy szolgáltatáskapcsolat neve, például my-github.
  5. Válassza a Létrehozás lehetőséget.

  6. Válassza ki a GitHub-adattárat.

  7. A Konfigurálás lapon válassza a Továbbiak megjelenítése lehetőséget, és válassza ki a ASP.NET Core-folyamatsablont a listából. Ez a sablon számos lépést és beállítást tartalmaz, amelyeket ez a cikk ír le.

  8. Vizsgálja meg az új YAML-folyamatkódot. A YAML-fájlt testreszabhatja a követelményeknek megfelelően. Hozzáadhat például egy feladatot egy másik .NET SDK telepítéséhez vagy a projekt teszteléséhez és közzétételéhez.

  1. Ha elkészült, válassza a Mentés és futtatás lehetőséget.

    Képernyőkép egy új YAML-folyamat Mentés és futtatás gombjáról.

  2. Igény szerint szerkessze a véglegesítési üzenetet, majd válassza a Mentés és futtatás lehetőséget.

  3. Az Összegzés lapon válassza ki a feladatokat a Feladatok szakaszban, és figyelje meg a folyamatot működés közben.

Most már rendelkezik egy testre szabható munkafolyamatpal.

A buildkörnyezet beállítása

Az Azure Pipelines saját üzemeltetésű ügynökökkel hozza létre a .NET Core-projektet. A .NET Core SDK-t és futtatókörnyezetet Windows, Linux, macOS vagy Docker-ügynökökön is használhatja. Győződjön meg arról, hogy az ügynökökre telepítve van a .NET Core SDK és a futtatókörnyezet szükséges verziója.

A .NET SDK egy adott verziójának telepítéséhez adja hozzá a UseDotNet@2 feladatot egy YAML-folyamatfájlhoz vagy a .NET Core használata feladathoz a klasszikus szerkesztőben.

Note

A fizikai rendszereken futó ügynökök esetében az SDK-k és az eszközök folyamaton keresztüli telepítése megváltoztatja az ügynök gazdagépének buildkörnyezetét.

Az alábbi YAML-kódrészlet telepíti a .NET SDK 8.0.x-et:

steps:
- task: UseDotNet@2
  inputs:
    version: '8.x'

Egy újabb SDK telepítéséhez állítsa a következőre performMultiLevelLookuptrue: .

steps:
- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 8.x
    performMultiLevelLookup: true
    includePreviewVersions: true # Required for preview versions

A build-feladathoz kiválaszthatja az ügynökkészletet és az ügynököt. Az ügynököket a képességeik alapján is megadhatja. Az alábbi YAML-folyamatrészlet például kiválasztja a készlet és az ügynök képességeit.

pool:
  name: myPrivateAgents
  demands:
  - agent.os -equals Darwin
  - anotherCapability -equals somethingElse

A .NET Core-projekteket a .NET Core SDK és a futtatókörnyezet használatával hozhatja létre Windows, Linux vagy macOS rendszeren. Alapértelmezés szerint a buildek a Microsoft által üzemeltetett ügynökökön futnak, így nem kell infrastruktúrát beállítania.

Az Azure Pipelines Microsoft által üzemeltetett ügynökei a támogatott .NET Core SDK-k számos előre telepített verzióját tartalmazzák. Az elérhető rendszerképek és konfigurációs példák teljes listáját a Microsoft által üzemeltetett ügynökökben találja.

Az alábbi YAML-folyamatrészlet az Ubuntu operációs rendszert állítja be az ügynökkészlethez.

pool:
  vmImage: 'ubuntu-latest' 

A Microsoft által üzemeltetett ügynökök nem tartalmazzák a .NET Core SDK néhány régebbi verzióját, és általában nem tartalmaznak előzetes verziókat. Ha az SDK ezen verzióira van szüksége a Microsoft által üzemeltetett ügynökökön, a DotNet használata (UseDotNet@2) feladattal telepítheti őket.

A következő kód például telepíti a .NET 5.0.x SDK-t:

steps:
- task: UseDotNet@2
  inputs:
    version: '5.x'

A Windows-ügynökök már tartalmaznak .NET Core-futtatókörnyezetet. Újabb SDK telepítéséhez állítsa be performMultiLevelLookup az alábbi kódrészletet true :

steps:
- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 8.x
    performMultiLevelLookup: true
    includePreviewVersions: true # Required for preview versions

Saját üzemeltetésű ügynökök

Másik lehetőségként használhat saját üzemeltetésű ügynököket a .NET Core-projektek létrehozásához. Linux ,macOS vagy Windows önkiszolgáló ügynököket is beállíthat.

A saját üzemeltetésű ügynökök lehetővé teszik a következőt:

  • Kerülje az eszköztelepítő futtatásának UseDotNet@2 költségeit.
  • Ha nagy tárházzal rendelkezik, csökkentse a buildelési időt.
  • Növekményes buildek futtatása.
  • Olyan előzetes verziójú vagy privát SDK-k használata, amelyeket a Microsoft hivatalosan nem támogat.
  • Csak vállalati vagy helyszíni környezetekben elérhető SDK-k használata.

További információ: Saját üzemeltetésű ügynökök.

Függőségek helyreállítása

A NuGet-csomagok segítségével a projekt a nem buildelt kódtól függ. A NuGet-csomagokat és a projektspecifikus eszközöket a dotnet restore parancs futtatásával töltheti le a .NET Core (DotNetCoreCLI@2) feladaton keresztül vagy a folyamat szkriptjeként. A dotnet restore parancs a .NET Core SDK-val csomagolt NuGet.exe használja, és csak a .NET Core-projekt *.csproj fájljaiban megadott csomagokat tudja visszaállítani.

A .NET Core (DotNetCoreCLI@2) feladat használatával nuGet-csomagokat tölthet le és állíthat vissza az Azure Artifactsből, NuGet.org vagy más hitelesített külső vagy belső NuGet-adattárból. Ha a NuGet-hírcsatorna ugyanabban a projektben van, mint a folyamat, akkor nem kell hitelesítenie. További információ: .NET Core-feladat (DotNetCoreCLI@2).

A Microsoft által üzemeltetett ügynökök használatakor minden egyes build futtatásakor új gépet kap, amely minden futtatáskor visszaállítja a csomagokat. A helyreállítás jelentős időt vehet igénybe. A probléma megoldásához használja az Azure Artifactst vagy egy saját üzemeltetésű ügynököt a csomaggyorsítótár előnyeinek kihasználásához.

Az alábbi folyamat a DotNetCoreCLI@2 feladat használatával állítja vissza az Azure Artifact-hírcsatornát.

trigger:
- main

pool:
  vmImage: 'windows-latest'

steps:
- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 8.x
    performMultiLevelLookup: true
    includePreviewVersions: true # Required for preview versions

variables:
  buildConfiguration: 'Release'

steps:
- task: DotNetCoreCLI@2
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    vstsFeed: 'my-vsts-feed' # A series of numbers and letters

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    arguments: '--configuration $(buildConfiguration)'
  displayName: 'dotnet build $(buildConfiguration)'

A .NET Core SDK 2.0-s és újabb verzióiban a csomagok automatikusan visszaállnak, amikor parancsokat futtat, például dotnet build. Hitelesített hírcsatorna használata esetén továbbra is a .NET Core (DotNetCoreCLI@2) feladatot kell használnia a csomagok visszaállításához.

A hitelesített hírcsatornák hitelesítő adatainak kezelése NuGet-szolgáltatáskapcsolat létrehozásával a Project Settings>Pipelines>Service-kapcsolatokban. További információ a NuGet-szolgáltatáskapcsolatokról: NuGet-csomagok közzététele az Azure Pipelines használatával.

Csomagok visszaállítása NuGet.org

A csomagok NuGet.org való visszaállításához frissítse a folyamatot az alábbiak szerint.

A visszaállítási parancsot hozzáadhatja a folyamathoz a YAML-kód közvetlen szerkesztésével vagy a feladat-asszisztens használatával.

Adja hozzá közvetlenül a .NET Core-feladatotDotNetCoreCLI@2 úgy, hogy beszúrja a következő kódrészletet a azure-pipelines.yml fájlba a buildelési feladatok előtt.

steps:
- task: DotNetCoreCLI@2
  displayName: Restore
  inputs:
    command: restore
    projects: '**/*.csproj'
    feedsToUse: select

A feladat-asszisztens használata:

  1. Lépjen arra a pozícióra a YAML-fájlban, ahová be szeretné szúrni a feladatot.
  2. Válassza ki a .NET Core-t a feladatkatalógusból.
  3. A konfigurációs képernyőn válassza a Visszaállítás lehetőséget a Parancs legördülő listából.
  4. A Projekt(ek) vagy megoldás(ok) elérési útja mezőben adja meg a *.csproj fájlok elérési útját. A **/*.csproj helyettesítő karaktert az összes *.csproj fájlhoz használhatja az összes almappában.
  5. A hírcsatornák hozzáadásához győződjön meg arról, hogy az itt kiválasztott hírcsatorna(ok) és a NuGet.org csomagjainak használata lehetőség van kiválasztva.
  6. Válassza a Hozzáadás lehetőséget.
  7. Válassza az Ellenőrzés és mentés lehetőséget, majd a Módosítás véglegesítéséhez válassza a Mentés lehetőséget.

Csomagok visszaállítása külső forrásból

Külső NuGet-adattár megadásához helyezze az URL-címet egy NuGet.config fájlba az adattárban. Győződjön meg arról, hogy minden egyéni hírcsatorna meg van adva a NuGet.config fájlban, és hogy a hitelesítő adatok egy NuGet-szolgáltatáskapcsolatban vannak megadva.

Ha külső hírcsatornából szeretne csomagokat visszaállítani, adja hozzá a feladatot az restore előző szakaszban leírtak szerint, de módosítsa a konfigurációs beállításokat az alábbiak szerint:

Adja hozzá közvetlenül a .NET Core-feladatotDotNetCoreCLI@2 úgy, hogy beszúrja a következő kódrészletet a azure-pipelines.yml fájlba a buildelési feladatok előtt. Cserélje le <NuGet service connection> a szolgáltatáskapcsolat nevére.

steps:
- task: DotNetCoreCLI@2
  displayName: Restore
  inputs:
    command: restore
    projects: '**/*.csproj'
    feedsToUse: config
    nugetConfigPath: NuGet.config    # Relative to root of the repository
    externalFeedCredentials: <NuGet service connection>

A feladat-asszisztens használata:

  1. Adja hozzá a .NET Core-feladatot , és válassza a visszaállítást a konfigurációs képernyőn az előző eljáráshoz hasonlóan.
  2. Ha hírcsatornákat szeretne hozzáadni, válassza a Hírcsatornák lehetőséget a NuGet.config.
  3. A NuGet.configelérési útja területen adja meg a NuGet.config fájl elérési útját az adattár gyökeréhez viszonyítva. Válassza ki a három pontot ... a mező mellett a tallózáshoz és a hely kiválasztásához.
  4. A szervezeten/gyűjteményen kívüli hírcsatornák hitelesítő adatai területén válassza ki a külső adatbázishoz használandó hitelesítő adatokat a kijelölt NuGet.config fájlban. Az ugyanabban a szervezetben lévő hírcsatornák esetében ezt a mezőt üresen hagyhatja. A rendszer automatikusan használja a build hitelesítő adatait.

Csomagok visszaállítása .NET-keretrendszer-projektekhez

Ha a megoldásban Microsoft .NET-keretrendszerprojekt is szerepel, vagy package.json használatával adja meg a függőségeket, a NuGetCommand@2 feladat használatával állítsa vissza ezeket a függőségeket.

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '**/*.sln'
    feedsToUse: 'select'

Note

Az Ubuntu 24.04-es vagy újabb verziójához a NuGetAuthenticate feladatot kell használnia a .NET parancssori felülettel rendelkező NuGetCommand@2 tevékenység helyett. További információ: Újabb Ubuntu által üzemeltetett rendszerképek támogatása.

A projekt felépítése

Hozza létre a .NET Core-projektet a dotnet build parancs futtatásával. A parancsot a folyamathoz a .NET Core (DotNetCoreCLI@2) feladattal vagy parancssori szkriptként is hozzáadhatja.

A .NET Core-feladat használata

A YAML-folyamatszerkesztővel a buildelési feladatokat közvetlenül a fájl szerkesztésével vagy a feladat-segéd használatával adhatja hozzá.

Adja hozzá közvetlenül a .NET Core (DotNetCoreCLI@2) feladatot az alábbi kódrészlet beszúrásával. Frissítse az arguments igényeinek megfelelőt.

steps:
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

A feladat-asszisztens használata:

  1. Lépjen arra a pozícióra a YAML-fájlban, ahová be szeretné szúrni a feladatot.
  2. Válassza ki a .NET Core (DotNetCoreCLI@2) feladatot.
  3. Válassza ki a buildet a Command legördülő listából.
  4. A Projekt(ek) vagy megoldás(ok) elérési útja mezőben adja meg a *.csproj fájlok elérési útját. A **/*.csproj helyettesítő karaktert az összes *.csproj fájlhoz használhatja az összes almappában.
  5. Válassza a Hozzáadás lehetőséget.
  6. A módosítás véglegesítéséhez válassza a Mentés lehetőséget.

.NET Core létrehozása parancssori szkripttel

Parancssori szkripttel is létrehozható.

Ha közvetlenül a YAML-fájl szerkesztésével szeretne hozzáadni egy buildelési parancssort, adja hozzá a következő kódot:

steps:
- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'dotnet build $(buildConfiguration)'

A parancssori feladat hozzáadásához a feladatsegédet is használhatja.

  1. Lépjen arra a pozícióra a YAML-fájlban, ahová be szeretné szúrni a feladatot.
  2. Válassza ki a parancssori (CmdLine@2) feladatot a listából.
  3. A Szkript mezőbe írja be a dotnet build parancsot paraméterekkel. Például: dotnet build --configuration $(buildConfiguration).
  4. A Speciális>munkakönyvtár területen adja meg a *.csproj fájl elérési útját munkakönyvtárként. Ha üresen hagyja, a munkakönyvtár alapértelmezés szerint a következő lesz $(Build.SourcesDirectory): .
  5. Válassza a Hozzáadás lehetőséget.
  6. A módosítás véglegesítéséhez válassza a Mentés lehetőséget.

További .NET SDK-parancsok hozzáadása a folyamathoz

Más .NET SDK-parancsokat is hozzáadhat a folyamathoz a .NET Core (DotNetCoreCLI@2) feladattal vagy szkriptekként.

.NET CLI-parancs hozzáadása a .NET Core-feladattal

A .NET Core (DotNetCoreCLI@2) feladat lehetővé teszi a .NET CLI-parancsok egyszerű hozzáadását a folyamathoz. A .NET Core-feladatokatDotNetCoreCLI@2 a YAML-fájl szerkesztésével vagy a klasszikus szerkesztő használatával adhat hozzá.

Ha .NET Core-parancsot szeretne hozzáadni a YAML-folyamatszerkesztő feladat-segédjével, hajtsa végre a következő lépéseket:

  1. Lépjen arra a pozícióra a YAML-fájlban, ahová be szeretné szúrni a feladatot.
  2. Válassza ki a .NET Core-t a feladatkatalógusból.
  3. Válassza ki a parancsot , amelyet futtatni szeretne a Parancs mező legördülő listájából.
  4. Konfigurálja a szükséges beállításokat.
  5. Válassza a Hozzáadás lehetőséget.
  6. A módosítás véglegesítéséhez válassza a Mentés lehetőséget.

.NET Core CLI-parancs hozzáadása szkriptben

A .NET Core CLI-parancsokat hozzáadhatja a scriptazure-pipelines.yml fájlhoz. Például:


steps:
# ...
- script: dotnet test <test-project> 

Eszköz telepítése

Ha windowsos buildben szeretne telepíteni egy .NET Core-alapú globális eszközt, például a dotnetsay-t , adjon hozzá egy .NET Core-feladatot , és állítsa be a következő tulajdonságokat a konfigurációban:

  • Parancs: egyéni
  • A projektek elérési útja: üresen hagyva
  • Egyéni parancs: tool
  • argumentumok: install -g dotnetsay

Az eszköz futtatásához adjon hozzá egy parancssori feladatot, és írja be dotnetsay a Szkript mezőbe.

A tesztek futtatása

Ha tesztprojektek vannak az adattárban, a .NET Core (DotNetCoreCLI@2) feladattal egységteszteket futtathat olyan tesztelési keretrendszerek használatával, mint az MSTest, az xUnit és az NUnit. A tesztprojektnek a Microsoft.NET.Test.SDK 15.8.0-s vagy újabb verziójára kell hivatkoznia.

A teszteredmények automatikusan közzétehetők a szolgáltatásban, és elérhetők a build összegzésében. A teszteredményekkel elháríthatja a sikertelen teszteket, és elemezheti a tesztelés időzítését.

Ha tesztfeladatot szeretne hozzáadni a folyamathoz, adja hozzá a következő kódrészletet a azure-pipelines.yml fájlhoz:

steps:
# ...
# do this after other tasks such as build
- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Tests/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

Ha a feladat-asszisztenst használja a .NET Core (DotNetCoreCLI@2) tevékenység hozzáadásához, állítsa be a következő tulajdonságokat:

  • Parancs: teszt
  • A projektek elérési útja: Állítsa be a tesztprojekteket a megoldásban
  • argumentumok: --configuration $(BuildConfiguration)

Másik lehetőségként futtathatja a dotnet test parancsot egy adott naplózóval, majd használhatja a PublishTestResults@2 feladatot:

steps:
# ...
# do this after your tests run
- script: dotnet test <test-project> --logger trx
- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testRunner: VSTest
    testResultsFiles: '**/*.trx'

Kódlefedettség gyűjtése

Amikor a Windows platformra épít, a kódlefedettségi metrikákat a beépített lefedettségi adatgyűjtővel gyűjtheti össze. A tesztprojektnek a Microsoft.NET.Test.SDK 15.8.0-s vagy újabb verziójára kell hivatkoznia.

Amikor a .NET Core (DotNetCoreCLI@2) feladatot használja tesztek futtatására, a lefedettségi adatok automatikusan közzéteendők a kiszolgálón. A *.coverage fájlt letöltheti a buildösszegzésből a Visual Studióban való megtekintéshez.

A kódlefedettség gyűjtéséhez adja hozzá az --collect "Code Coverage" argumentumot, amikor hozzáadja a tesztfeladatot a folyamathoz.

steps:
# ...
# do this after other tasks such as build
- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Tests/*.csproj'
    arguments: '--configuration $(buildConfiguration) --collect "Code Coverage"'

Ha a feladat-asszisztenst használja a .NET Core (DotNetCoreCLI@2) tevékenység hozzáadásához, állítsa be a következő tulajdonságokat:

  • Parancs: teszt
  • A projektek elérési útja: Állítsa be a tesztprojekteket a megoldásban
  • argumentumok: --configuration $(BuildConfiguration) --collect "Code Coverage"

Győződjön meg arról, hogy a Teszteredmények közzététele lehetőség továbbra is be van jelölve.

Másik lehetőségként a kódlefedettségi eredmények gyűjtéséhez használja a dotnet test parancsot egy adott naplózóval, majd futtassa a PublishTestResults@2 feladatot, használja a következő kódot:

steps:
# ...
# do this after your tests run
- script: dotnet test <test-project> --logger trx --collect "Code Coverage"
- task: PublishTestResults@2
  inputs:
    testRunner: VSTest
    testResultsFiles: '**/*.trx'

Kódlefedettségi metrikák gyűjtése a Coverlet használatával

Ha Linuxra vagy macOS-re épít, a Coverlet vagy egy hasonló eszköz használatával kódlefedettségi metrikákat gyűjthet.

A kódlefedettségi eredményeket közzéteheti a kiszolgálón a Kódlefedettségi eredmények közzététele (PublishCodeCoverageResults@2) feladattal. Konfigurálnia kell a lefedettségi eszközt az eredmények Cobertura vagy JaCoCo lefedettségi formátumban történő létrehozásához.

Tesztek futtatása és kódlefedettség közzététele a Coverlettel:

  1. Adjon hozzá egy hivatkozást a coverlet.collector NuGet-csomaghoz.
  2. Adja hozzá a következő kódrészletet a azure-pipelines.yml fájlhoz:
- task: DotNetCoreCLI@2
  displayName: 'dotnet test'
  inputs:
    command: 'test'
    arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura'
    publishTestResults: true
    projects: '<test project directory>'
  
- task: PublishCodeCoverageResults@2
  displayName: 'Publish code coverage report'
  inputs:
    codeCoverageTool: 'Cobertura'
    summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'

A kód csomagolása és kézbesítése

A build kimenetének csomagolásához és kézbesítéséhez a következőket teheti:

  • A buildösszetevők közzététele az Azure Pipelinesban.
  • Hozzon létre egy NuGet-csomagot, és tegye közzé a NuGet-hírcsatornában.
  • NuGet-csomag közzététele az Azure Artifactsben.
  • Zip-archívum létrehozása webalkalmazásban való üzembe helyezéshez.
  • Szimbólumok közzététele Azure Artifacts-szimbólumkiszolgálón vagy fájlmegosztáson.

Létrehozhat egy lemezképet az alkalmazáshoz, és leküldheti egy tárolóregisztrációs adatbázisba.

Artefaktumok közzététele az Azure Pipelinesban

A .NET-build kimenetének a folyamaton való közzétételéhez kövesse az alábbi lépéseket.

  1. Futtassa dotnet publish --output $(Build.ArtifactStagingDirectory) a .NET parancssori felületét, vagy adja hozzá a .NET Core (DotNetCoreCLI@2) feladatot a közzétételi paranccsal.
  2. Tegye közzé az összetevőt a Folyamatösszetevő (PublishPipelineArtifact@1) tevékenységgel. Ez a feladat feltölti az összes fájlt $(Build.ArtifactStagingDirectory) a build összetevőjeként.

Adja hozzá a következő kódot a azure-pipelines.yml fájlhoz:

steps:

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)' 
    artifactName: 'myWebsite'

Ha a közzététel előtt további fájlokat szeretne másolni a buildkönyvtárba, használja a Fájlok másolása (CopyFile@2) feladatot.

Note

A publishWebProjects.NET Core (DotNetCoreCLI@2) feladat bemenete alapértelmezés szerint be van állítva true , és az összes webes projektet közzéteszi az adattárban. További információkért tekintse meg az Azure-Pipelines-Tasks GitHub-adattárat.

A .NET-build kimenetének a folyamaton való közzétételéhez hajtsa végre a következő feladatokat:

  1. Futtassa dotnet publish --output $(Build.ArtifactStagingDirectory) a .NET parancssori felületét, vagy adja hozzá a .NET Core (DotNetCoreCLI@2) feladatot a közzétételi paranccsal.
  2. A Publish build artifact (PublishBuildArtifacts@1) feladat használatával tegye közzé az artefaktumot.

Az alábbi azure-pipelines.yml kód zip-fájlként is közzéteszi a buildösszetevőket. A PublishBuildArtifacts@1 feladat az összes fájlt $(Build.ArtifactStagingDirectory) feltölti a build összetevőjeként.

steps:

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: true
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'

További információért lásd: Build-artefaktumok közzététele és letöltése.

Közzététel NuGet-hírcsatornában

NuGet-csomag létrehozásához és NuGet-hírcsatornában való közzétételéhez adja hozzá a következő kódrészletet a azure-pipelines.yml fájlhoz:

steps:
# ...
# do this near the end of your pipeline
- script: dotnet pack /p:PackageVersion=$(version)  # define the version variable elsewhere in your pipeline
- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: '<NuGet service connection>'
- task: NuGetCommand@2
  inputs:
    command: push
    nuGetFeedType: external
    publishFeedCredentials: '<NuGet service connection>'
    versioningScheme: byEnvVar
    versionEnvVar: version

Note

A NuGetAuthenticate@1 feladat nem támogatja a NuGet API-kulcsok hitelesítését. Ha NuGet API-kulcsot használ, használja a feladatot a NuGetCommand@2command bemeneti beállítással push és az --api-key argumentummal. Például: dotnet nuget push --api-key $(NuGetApiKey).

További információ a NuGet-csomagok verziószámozásáról és közzétételéről: NuGet-csomagok közzététele az Azure Pipelines használatával.

NuGet-csomag közzététele az Azure Artifactsben

A NuGet-csomagokat közzéteheti az Azure Artifacts-csatornán a NuGetCommand@2 feladat használatával. További információ: NuGet-csomagok közzététele az Azure Pipelines használatával.

ZIP-fájlarchívum közzététele webalkalmazásban

Ha olyan ZIP-fájlarchívumot szeretne létrehozni, amely készen áll a webalkalmazásban való közzétételre, adja hozzá a következő kódrészletet a azure-pipelines.yml. Futtassa ezt a feladatot az alkalmazás létrehozása után, a folyamat vége közelében a legtöbb esetben. Futtassa például ezt a feladatot, mielőtt üzembe helyeznénk egy Azure-webalkalmazásban Windows rendszeren.

steps:
# ...
- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

Az archívum webalkalmazásban való közzétételéhez tekintse meg az Azure Web Apps üzembe helyezését.

Szimbólumok közzététele

A feladat segítségével PublishSymbols@2 szimbólumokat tehet közzé egy Azure Artifacts szimbólumkiszolgálón vagy fájlmegosztáson. További információ: Szimbólumok közzététele.

Ha például szimbólumokat szeretne közzétenni egy fájlmegosztásban, adja hozzá a következő kódrészletet a azure-pipelines.yml fájlhoz:

- task: PublishSymbols@2
  inputs:
    SymbolsFolder: '$(Build.SourcesDirectory)'
    SearchPattern: '**/bin/**/*.pdb'
    IndexSources: true
    PublishSymbols: true
    SymbolServerType: 'FileShare' 
    SymbolsPath: '\\<server>\<shareName>'

A klasszikus szerkesztő használatához adja hozzá az indexforrásokat, és tegye közzé a szimbólumok feladatát a folyamaton.

Hibaelhárítás

Ha a projekt sikeresen épül a helyi gépre, de az Azure Pipelinesban nem, vizsgálja meg az alábbi lehetséges okokat és korrekciós műveleteket.

  • A .NET Core SDK előzetes verziói nincsenek telepítve a Microsoft által üzemeltetett ügynökökre, és az SDK új verziójának bevezetése az összes Azure Pipelines-adatközpontban eltarthat néhány hétig. A bevezetés befejezésére való várakozás helyett a .NET Core használata feladat használatával telepítheti a Microsoft által üzemeltetett ügynökökre a kívánt .NET Core SDK-verziót.
  • A .NET Core SDK vagy a Visual Studio új verziója megszakíthatja a buildet, például ha a NuGet eszköz újabb verzióját vagy funkcióját tartalmazza. Győződjön meg arról, hogy a fejlesztőgép .NET Core SDK-verziói és futtatókörnyezete megegyezik a folyamatügynökkel.

    A .NET Core SDK verziójának nyomtatásához parancssori szkriptet is hozzáadhat dotnet --version a folyamathoz. A .NET Core Tool Installer használatával telepítse ugyanazt a verziót az ügynökön, vagy frissítse a projekteket és a fejlesztői gépet a .NET Core SDK folyamatverziójára.

  • Előfordulhat, hogy a buildek időnként meghiúsulnak, mert kapcsolati problémák merülnek fel a csomagok NuGet.org-ból való visszaállításakor. NuGet.org problémákat tapasztalhat, vagy hálózati problémák merülhetnek fel az Azure-adatközpont és a NuGet.org között. Megtudhatja, hogy az Azure Artifacts felsőbb rétegbeli forrásokkal való használata a csomagok gyorsítótárazásához javítja-e a buildek megbízhatóságát.

    A folyamat hitelesítő adatait a rendszer automatikusan használja az Azure Artifactshez való csatlakozáshoz. Ezek a hitelesítő adatok általában a Project Collection Build Service-fiókból származnak. A NuGet-csomagok gyorsítótárazásához az Azure Artifacts használatával kapcsolatos további információkért lásd : Csatlakozás az Azure Artifact-hírcsatornákhoz.

  • Előfordulhat, hogy olyan logikát használ a Visual Studióban, amely nincs kódolva a folyamatban. Az Azure Pipelines az egyes parancsokat egymás után futtatja egy új folyamatban. A buildben futtatott parancsok pontos megtekintéséhez vizsgálja meg a folyamat buildjének naplóit. A probléma megkereséséhez ismételje meg ugyanazokat a parancsokat ugyanabban a sorrendben a fejlesztőgépen.

  • Ha vegyes megoldással rendelkezik, amely tartalmaz néhány .NET Core-projektet és néhány .NET-keretrendszerprojektet, a NuGet-feladat használatával állítsa vissza a packages.config fájlokban megadott csomagokat. Adja hozzá az MSBuild vagy Visual Studio Build feladatot a .NET keretrendszer-projekteket létrehozásához.