Sdílet prostřednictvím


Sestavování, testování a nasazování projektů .NET Core

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

Tento článek popisuje, jak používat Azure Pipelines k práci s projekty .NET Core. Článek vás provede následujícími úlohami:

  • Vytvořte webovou aplikaci .NET Core a nahrajte ji do úložiště GitHub.
  • Vytvořte projekt Azure DevOps a kanál Azure Pipelines pro sestavení projektu.
  • Nastavte prostředí sestavení pomocí agentů v místním prostředí.
  • Obnovte závislosti, sestavte projekt a otestujte pomocí úlohy .NET Core (DotNetCoreCLI@2) nebo skriptu.
  • Pomocí úlohy .NET Core (DotNetCoreCLI@2) přidejte do kanálu další příkazy sady .NET SDK.
  • Pomocí úlohy Publikovat výsledky pokrytí kódu (Publish code coverage results v2) publikujte výsledky pokrytí kódu.
  • Zabalte a doručte výstup sestavení do kanálu, informačního kanálu NuGet, archivu ZIP nebo jiných cílů.
  • Vytvořte webovou aplikaci .NET Core a nahrajte ji do úložiště GitHub.
  • Vytvořte projekt Azure DevOps a kanál Azure Pipelines pro sestavení projektu.
  • Nastavte si prostředí sestavení pomocí agentů hostovaných Microsoftem nebo agenty v místním prostředí.
  • Obnovte závislosti, sestavte projekt a otestujte pomocí úlohy .NET Core (DotNetCoreCLI@2) nebo skriptu.
  • Pomocí úlohy .NET Core (DotNetCoreCLI@2) přidejte do kanálu další příkazy sady .NET SDK.
  • Pomocí úlohy Publikovat výsledky pokrytí kódu (Publish code coverage results v2) publikujte výsledky pokrytí kódu.
  • Zabalte a doručte výstup sestavení do kanálu, informačního kanálu NuGet, archivu ZIP nebo jiných cílů.

Poznámka:

Pokud chcete pracovat s projekty rozhraní .NET Framework, přečtěte si téma Sestavení ASP.NET aplikací pomocí rozhraní .NET Framework.

Požadavky

K dokončení všech postupů v tomto článku potřebujete následující požadavky:

K dokončení všech postupů v tomto článku potřebujete následující požadavky:

Vytvoření projektu .NET a jeho nahrání na GitHub

Pokud chcete použít projekt .NET, který už je v úložišti GitHubu, můžete tuto část přeskočit.

Pokud nemáte projekt .NET pro práci, vytvořte na místním počítači nový projekt následujícím způsobem:

  1. Nainstalujte sadu .NET 8.0 SDK nebo se ujistěte, že je nainstalovaná.
  2. Na místním počítači otevřete okno terminálu.
  3. Vytvořte adresář projektu a přejděte na něj.
  4. Spuštěním příkazu dotnet new webapp -f net8.0vytvořte novou webovou aplikaci .NET 8.
  5. Sestavte a spusťte aplikaci místně pomocí dotnet run.
  6. Po spuštění aplikace ji stisknutím ctrl+C vypněte.
  7. Nahrajte nebo připojte místní projekt k úložišti GitHub.

Vytvořit potrubí

Pokud máte kanál, který chcete použít, můžete tuto část přeskočit. V opačném případě můžete pomocí editoru kanálů YAML nebo klasického editoru vytvořit kanál následujícím způsobem:

  1. V projektu Azure DevOps vyberte kanály z levé navigační nabídky.

  2. Vyberte Nový kanál nebo Vytvořit kanál , pokud je tento kanál první v projektu.

  3. Na obrazovce Kde je váš kód , vyberte GitHub.

  4. Můžete být přesměrováni na GitHub kvůli přihlášení. Pokud ano, zadejte svoje přihlašovací údaje GitHubu.

  5. Na obrazovce Vybrat úložiště vyberte úložiště, ve které je vaše aplikace .NET.

  6. K instalaci aplikace Azure Pipelines můžete být přesměrováni na GitHub. Pokud ano, vyberte Schválit a nainstalovat.

  1. Na kartě Konfigurace vyberte Zobrazit více a pak ze seznamu vyberte šablonu kanálu ASP.NET Core . Tato šablona obsahuje řadu kroků a nastavení, které tento článek popisuje.

    Na kartě Konfigurace můžete také vybrat počáteční kanál, abyste mohli začít s minimálním kanálem a přidat kroky a nastavení sami.

  2. Na kartě Revize prozkoumejte kód YAML. Soubor si můžete přizpůsobit podle svých požadavků. Můžete například zadat jiný fond agentů nebo přidat úlohu pro instalaci jiné sady .NET SDK.

  1. V projektu Azure DevOps vyberte kanály z levé navigační nabídky.

  2. Vyberte Nový kanál nebo Vytvořit kanál , pokud je tento kanál první v projektu.

  3. Vyberte typ zdrojového úložiště. V tomto příkladu použijte GitHub Enterprise Server.

  4. Na další obrazovce zadejte následující informace:

    • Adresa URL vašeho účtu GitHubu, například https://github.com/myname.
    • Váš osobní přístupový token (PAT) GitHubu
    • Název připojení služby, například my-github.
  5. Vyberte Vytvořit.

  6. Vyberte úložiště GitHub.

  7. Na kartě Konfigurace vyberte Zobrazit více a ze seznamu vyberte šablonu kanálu ASP.NET Core. Tato šablona obsahuje řadu kroků a nastavení, které tento článek popisuje.

  8. Prozkoumejte nový kód kanálu YAML. Soubor YAML si můžete přizpůsobit podle svých požadavků. Můžete například přidat úkol pro instalaci jiné sady .NET SDK nebo otestování a publikování projektu.

  1. Až budete připraveni, vyberte Uložit a spustit.

    Snímek obrazovky znázorňující tlačítko Uložit a spustit v novém kanálu YAML

  2. Volitelně upravte zprávu Potvrzení a pak vyberte Uložit a spusťte znovu.

  3. Na kartě Souhrn vyberte úlohu v části Úlohy a sledujte kanál v akci.

Teď máte funkční kanál, který je připravený k přizpůsobení.

Nastavte své prostředí sestavení

Azure Pipelines používá k sestavení projektu .NET Core agenty v místním prostředí . Sadu .NET Core SDK a modul runtime můžete použít v agentech Windows, Linux, macOS nebo Docker . Ujistěte se, že na agentech máte nainstalovanou potřebnou verzi sady .NET Core SDK a modulu runtime.

Pokud chcete nainstalovat konkrétní verzi sady .NET SDK, přidejte UseDotNet@2 úlohu do souboru kanálu YAML nebo do úlohy Použít .NET Core v klasickém editoru.

Poznámka:

U agentů, kteří běží na fyzických systémech, se instalace sad SDK a nástrojů prostřednictvím kanálu změní prostředí sestavení na hostiteli agenta.

Následující příklad fragment kódu YAML nainstaluje sadu .NET SDK 8.0.x:

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

Pokud chcete nainstalovat novější sadu SDK, nastavte performMultiLevelLookup na truehodnotu .

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

Pro úlohu sestavení můžete vybrat fond agentů a agenta. Můžete také určit agenty na základě jejich možností. Například následující fragment kódu kanálu YAML vybere možnosti fondu a agenta.

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

Projekty .NET Core můžete sestavit pomocí sady .NET Core SDK a modulu runtime pro Windows, Linux nebo macOS. Ve výchozím nastavení vaše buildy běží na agentech hostovaných Microsoftem, takže nemusíte nastavovat infrastrukturu.

Agenti hostovaní Microsoftem v Azure Pipelines zahrnují několik předinstalovaných verzí podporovaných sad .NET Core SDK. Úplný seznam dostupných imagí a příkladů konfigurace najdete v agentech hostovaných Microsoftem .

Následující fragment kódu kanálu YAML nastaví operační systém Ubuntu pro fond agentů.

pool:
  vmImage: 'ubuntu-latest' 

Agenti hostovaní Microsoftem nezahrnují některé starší verze sady .NET Core SDK a obvykle nezahrnují předběžné verze. Pokud tyto verze sady SDK potřebujete na agentech hostovaných Microsoftem, můžete je nainstalovat pomocí úlohy Použít dotNet (UseDotNet@2).

Například následující kód nainstaluje sadu .NET 5.0.x SDK:

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

Agenti Windows už obsahují modul runtime .NET Core. Pokud chcete nainstalovat novější sadu SDK, nastavte performMultiLevelLookup ji jako true v následujícím fragmentu kódu:

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

Agenti hostovaní lokálně

Alternativně můžete k sestavení projektů .NET Core použít agenty v místním prostředí . Můžete nastavit agenty v místním prostředí linuxu, macOS nebo Windows .

Agenti v místním prostředí vám umožňují:

  • Vyhněte se nákladům na spuštění instalačního UseDotNet@2 programu nástroje.
  • Zkrachujte dobu sestavení, pokud máte velké úložiště.
  • Spusťte přírůstková sestavení.
  • Používejte sady Preview nebo privátní sady SDK, které Microsoft oficiálně nepodporuje.
  • Používejte sady SDK dostupné jenom v podnikových nebo místních prostředích.

Další informace najdete v tématu Vlastnoručně hostovaní agenti.

Obnovení závislostí

Balíčky NuGet představují způsob, jak může váš projekt záviset na kódu, který nevytvořujete. Balíčky NuGet a nástroje specifické pro projekt si můžete stáhnout spuštěním dotnet restore příkazu, a to buď prostřednictvím úlohy .NET Core (DotNetCoreCLI@2), nebo jako skript ve vašem kanálu. Příkaz dotnet restore používá NuGet.exe zabalené se sadou .NET Core SDK a může obnovit pouze balíčky zadané v souborech .NET Core projektu *.csproj .

Úlohu .NET Core (DotNetCoreCLI@2) můžete použít ke stažení a obnovení balíčků NuGet z Azure Artifacts, NuGet.org nebo jiného ověřeného externího nebo interního úložiště NuGet. Pokud je informační kanál NuGet ve stejném projektu jako kanál, nemusíte se ověřovat. Další informace najdete v tématu úloha .NET Core (DotNetCoreCLI@2).

Když používáte agenty hostované Microsoftem, získáte nový počítač při každém spuštění sestavení, který obnoví balíčky při každém spuštění. Obnovení může trvat značné množství času. Pokud chcete tento problém zmírnit, využijte Azure Artifacts nebo agenta v místním prostředí , abyste využili výhod mezipaměti balíčků.

Následující kanál používá DotNetCoreCLI@2 úlohu k obnovení kanálu Azure Artifact.

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)'

V sadě .NET Core SDK verze 2.0 a novějších se balíčky automaticky obnoví při spouštění příkazů, jako dotnet buildje . Pokud používáte ověřený informační kanál, stále potřebujete k obnovení balíčků úlohu .NET Core (DotNetCoreCLI@2).

Spravujte přihlašovací údaje pro ověřený informační kanál vytvořením připojení služby NuGet vpřipojení služby> Service > projektu. Další informace o připojeních služeb NuGet najdete v tématu Publikování balíčků NuGet pomocí Azure Pipelines.

Obnovení balíčků z NuGet.org

Pokud chcete obnovit balíčky z NuGet.org, aktualizujte kanál následujícím způsobem.

Příkaz pro obnovení můžete do kanálu přidat úpravou kódu YAML přímo nebo pomocí pomocníka pro úlohy.

Přidejte úlohu .NET Core (DotNetCoreCLI@2) přímo vložením následujícího fragmentu kódu do souboru azure-pipelines.yml před úkoly sestavení.

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

Použití pomocníka pro úkoly:

  1. Přejděte na pozici v souboru YAML, kam chcete úkol vložit.
  2. V katalogu úloh vyberte .NET Core .
  3. Na obrazovce konfigurace vyberte v rozevíracím seznamu Příkazobnovit.
  4. Do pole Cesta k projektům nebo řešení zadejte cestu k souborům *.csproj . Zástupný znak **/*.csproj můžete použít pro všechny soubory *.csproj ve všech podsložkách.
  5. Pokud chcete informační kanály přidat, ujistěte se, že jsou vybrané informační kanály, které zde vyberu , a že jsou vybrané balíčky z NuGet.org .
  6. Vyberte Přidat.
  7. Vyberte Ověřit a uložit a pak vyberte Uložit a potvrďte změnu.

Obnovení balíčků z externího zdroje

Pokud chcete zadat externí úložiště NuGet, vložte adresu URL do NuGet.config souboru v úložišti. Ujistěte se, že je v souboru NuGet.config zadaný libovolný vlastní informační kanál a že přihlašovací údaje jsou zadané v připojení služby NuGet.

Pokud chcete obnovit balíčky z externího kanálu, přidejte restore úlohu podle pokynů v předchozí části, ale změňte nastavení konfigurace následujícím způsobem:

Přidejte úlohu .NET Core (DotNetCoreCLI@2) přímo vložením následujícího fragmentu kódu do souboru azure-pipelines.yml před úkoly sestavení. Nahraďte <NuGet service connection> názvem připojení služby.

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>

Použití pomocníka pro úkoly:

  1. Přidejte úlohu .NET Core a na obrazovce konfigurace vyberte obnovení , jak je znázorněno v předchozím postupu.
  2. Chcete-li přidat informační kanály, vyberte Informační kanály v mém NuGet.config.
  3. V části Cesta k NuGet.configzadejte cestu k souboru NuGet.config vzhledem ke kořenovému adresáři úložiště. Můžete vybrat tři tečky ... vedle pole a procházet a vybrat umístění.
  4. V části Přihlašovací údaje pro informační kanály mimo tuto organizaci nebo kolekci vyberte přihlašovací údaje, které se mají použít pro externí registry ve vybraném souboruNuGet.config . U informačních kanálů ve stejné organizaci můžete toto pole ponechat prázdné. Přihlašovací údaje sestavení se použijí automaticky.

Obnovení balíčků pro projekty rozhraní .NET Framework

Pokud máte v řešení také projekt Microsoft .NET Framework nebo k určení závislostí použijete package.json , obnovte tyto závislosti pomocí úlohy NuGetCommand@2 .

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

Poznámka:

Pro Ubuntu 24.04 nebo vyšší je nutné použít úlohu NuGetAuthenticate místo úlohy NuGetCommand@2 pomocí rozhraní příkazového řádku .NET. Další informace najdete v tématu Podpora novějších hostovaných imagí Ubuntu.

Sestavení projektu

Spuštěním dotnet build příkazu sestavte projekt .NET Core. K přidání příkazu do kanálu můžete použít úlohu .NET Core (DotNetCoreCLI@2) nebo jako skript příkazového řádku.

Použití úlohy .NET Core

Úlohu sestavení můžete přidat pomocí editoru kanálů YAML přímo úpravou souboru nebo pomocí pomocníka pro úlohy.

Přidejte úlohu .NET Core (DotNetCoreCLI@2) přímo vložením následujícího fragmentu kódu. Aktualizujte ho arguments tak, aby odpovídaly vašim potřebám.

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

Použití pomocníka pro úkoly:

  1. Přejděte na pozici v souboru YAML, kam chcete úkol vložit.
  2. Vyberte úlohu .NET Core (DotNetCoreCLI@2).
  3. V rozevíracím seznamu Příkaz vyberte build.
  4. Do pole Cesta k projektům nebo řešení zadejte cestu k souborům *.csproj . Zástupný znak **/*.csproj můžete použít pro všechny soubory *.csproj ve všech podsložkách.
  5. Vyberte Přidat.
  6. Výběrem možnosti Uložit změnu potvrďte.

Sestavení .NET Core pomocí skriptu příkazového řádku

Můžete také vytvořit pomocí skriptu příkazového řádku.

Pokud chcete přidat příkazový řádek sestavení přímo úpravou souboru YAML, přidejte následující kód:

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

K přidání úkolu příkazového řádku můžete použít také Pomocníka pro úkoly.

  1. Přejděte na pozici v souboru YAML, kam chcete úkol vložit.
  2. Ze seznamu vyberte úkol příkazového řádku (CmdLine@2).
  3. Do pole Skript zadejte dotnet build příkaz s parametry. Například dotnet build --configuration $(buildConfiguration).
  4. V části Upřesnit>pracovní adresář zadejte cestu k souboru *.csproj jako pracovní adresář. Pokud ho necháte prázdný, pracovní adresář se ve výchozím nastavení nastaví na $(Build.SourcesDirectory).
  5. Vyberte Přidat.
  6. Výběrem možnosti Uložit změnu potvrďte.

Přidání dalších příkazů sady .NET SDK do kanálu

Do kanálu můžete přidat další příkazy sady .NET SDK pomocí úlohy .NET Core (DotNetCoreCLI@2) nebo jako skripty.

Přidání příkazu .NET CLI s úlohou .NET Core

Úloha .NET Core (DotNetCoreCLI@2) umožňuje snadno přidávat do kanálu příkazy .NET CLI. Úlohy .NET Core (DotNetCoreCLI@2) můžete přidat úpravou souboru YAML nebo pomocí klasického editoru.

Pokud chcete přidat příkaz .NET Core pomocí pomocníka pro úlohy v editoru kanálů YAML, postupujte takto:

  1. Přejděte na pozici v souboru YAML, kam chcete úkol vložit.
  2. V katalogu úloh vyberte .NET Core .
  3. V rozevíracím seznamu v poli Příkaz vyberte příkaz, který chcete spustit.
  4. Nakonfigurujte všechny potřebné možnosti.
  5. Vyberte Přidat.
  6. Výběrem možnosti Uložit změnu potvrďte.

Přidání příkazu rozhraní příkazového řádku .NET Core ve skriptu

Do souboru script můžete přidat příkaz .NET Core CLI. Například:


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

Instalace nástroje

Pokud chcete nainstalovat globální nástroj .NET Core, jako je dotnetsay v buildu spuštěném ve Windows, přidejte úlohu .NET Core a v konfiguraci nastavte následující vlastnosti:

  • Příkaz: vlastní
  • Cesta k projektům: Ponechání prázdného
  • Vlastní příkaz: tool
  • argumenty: install -g dotnetsay

Pokud chcete nástroj spustit, přidejte úlohu příkazového řádku a zadejte dotnetsay do pole Skript .

Spuštění testů

Pokud máte v úložišti projekty testů, můžete pomocí úlohy .NET Core (DotNetCoreCLI@2) spouštět testy jednotek pomocí testovacích architektur, jako jsou MSTest, xUnit a NUnit. Testovací projekt musí odkazovat na Microsoft.NET.Test.SDK verze 15.8.0 nebo vyšší.

Výsledky testů se automaticky publikují do služby a jsou dostupné v souhrnu sestavení. Výsledky testů můžete použít k řešení potíží s neúspěšnými testy a analýze časování testů.

Pokud chcete do kanálu přidat testovací úlohu, přidejte do souboru azure-pipelines.yml následující fragment kódu:

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

Pokud k přidání úlohy .NET Core (DotNetCoreCLI@2) použijete pomocníka pro úlohy, nastavte následující vlastnosti:

  • Příkaz: test
  • Cesta k projektům: Nastavení testovacích projektů ve vašem řešení
  • argumenty: --configuration $(BuildConfiguration)

Případně můžete příkaz spustit dotnet test s konkrétním protokolovacím nástrojem a pak použít PublishTestResults@2 úlohu:

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

Sbírat pokrytí kódu

Při sestavování na platformě Windows můžete shromažďovat metriky pokrytí kódu pomocí integrovaného kolektoru dat pokrytí. Testovací projekt musí odkazovat na Microsoft.NET.Test.SDK verze 15.8.0 nebo vyšší.

Při použití úlohy .NET Core (DotNetCoreCLI@2) ke spuštění testů se data pokrytí automaticky publikují na server. Soubor *.coverage si můžete stáhnout ze souhrnu sestavení a zobrazit ho v sadě Visual Studio.

Pokud chcete shromáždit pokrytí kódu, přidejte --collect "Code Coverage" argument při přidání testovací úlohy do kanálu.

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

Pokud k přidání úlohy .NET Core (DotNetCoreCLI@2) použijete pomocníka pro úlohy, nastavte následující vlastnosti:

  • Příkaz: test
  • Cesta k projektům: Nastavení testovacích projektů ve vašem řešení
  • argumenty: --configuration $(BuildConfiguration) --collect "Code Coverage"

Ujistěte se, že je vybraná možnost Publikovat výsledky testu.

Pokud chcete také shromáždit výsledky pokrytí kódu pomocí dotnet test příkazu s konkrétním protokolovacím nástrojem a pak spustit úlohu PublishTestResults@2 , použijte následující kód:

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'

Shromažďování metrik pokrytí kódu pomocí Coverletu

Pokud vytváříte v Linuxu nebo macOS, můžete ke shromažďování metrik pokrytí kódu použít Coverlet nebo podobný nástroj.

Výsledky pokrytí kódu můžete publikovat na serveru pomocí úlohy Publikovat výsledky pokrytí kódu (PublishCodeCoverageResults@2). Nástroj pokrytí musíte nakonfigurovat tak, aby generoval výsledky ve formátu pokrytí Cobertura nebo JaCoCo.

Spuštění testů a publikování pokrytí kódu pomocí Coverletu:

  1. Přidejte odkaz na coverlet.collector balíček NuGet.
  2. Do souboru azure-pipelines.yml přidejte následující fragment kódu:
- 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'

Zabalte a doručte váš kód

Pokud chcete zabalit a doručit výstup sestavení, můžete:

  • Publikujte artefakty sestavení do Azure Pipelines.
  • Vytvořte balíček NuGet a publikujte ho do informačního kanálu NuGet.
  • Publikujte balíček NuGet do Azure Artifacts.
  • Vytvořte archiv ZIP pro nasazení do webové aplikace.
  • Publikujte symboly na server symbolů Azure Artifacts nebo do sdílené složky.

Můžete také vytvořit image pro vaši aplikaci a odeslat ji do registru kontejneru.

Publikování artefaktů do Azure Pipelines

Pokud chcete publikovat výstup sestavení .NET do kanálu, postupujte takto.

  1. Spusťte dotnet publish --output $(Build.ArtifactStagingDirectory) pomocí rozhraní příkazového řádku .NET CLI nebo přidejte úlohu .NET Core (DotNetCoreCLI@2) pomocí příkazu publish .
  2. Publikujte artefakt pomocí úlohy Publikovat artefakt kanálu (PublishPipelineArtifact@1). Tato úloha nahraje všechny soubory jako $(Build.ArtifactStagingDirectory) artefakt sestavení.

Do souboru azure-pipelines.yml přidejte následující kód:

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'

Pokud chcete před publikováním zkopírovat více souborů do adresáře sestavení, použijte úlohu Kopírovat soubory (CopyFile@2).

Poznámka:

Vstup publishWebProjects v úloze .NET Core (DotNetCoreCLI@2) je standardně nastavený true a publikuje všechny webové projekty ve vašem úložišti. Další informace najdete v úložišti GitHubu azure-pipelines-tasks .

Pokud chcete publikovat výstup sestavení .NET do kanálu, proveďte následující úlohy:

  1. Spusťte dotnet publish --output $(Build.ArtifactStagingDirectory) příkazem publish pomocí rozhraní příkazového řádku .NET CLI nebo přidejte úlohu DotNetCoreCLI@2 ().
  2. Publikujte artefakt pomocí úlohy Publish build artifact (PublishBuildArtifacts@1).

Následující azure-pipelines.yml kód také publikuje artefakty sestavení jako soubor ZIP. Úloha PublishBuildArtifacts@1 nahraje všechny soubory jako $(Build.ArtifactStagingDirectory) artefakt sestavení.

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'

Další informace najdete v tématu Publikování a stažení artefaktů sestavení.

Publikování do informačního kanálu NuGet

Pokud chcete vytvořit balíček NuGet a publikovat ho do informačního kanálu NuGet, přidejte do souboru azure-pipelines.yml následující fragment kódu:

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

Poznámka:

Úloha NuGetAuthenticate@1 nepodporuje ověřování pomocí klíče rozhraní NuGet API. Pokud používáte klíč rozhraní API NuGet, použijte NuGetCommand@2 úlohu se command vstupní sadou push a argumentem --api-key . Například dotnet nuget push --api-key $(NuGetApiKey).

Další informace o správě verzí a publikování balíčků NuGet najdete v tématu Publikování balíčků NuGet pomocí Azure Pipelines.

Publikování balíčku NuGet do Azure Artifacts

Balíčky NuGet můžete publikovat do informačního kanálu Azure Artifacts pomocí úlohy NuGetCommand@2 . Další informace najdete v tématu Publikování balíčků NuGet pomocí Azure Pipelines.

Publikování archivu souboru ZIP do webové aplikace

Pokud chcete vytvořit archiv souborů ZIP, který je připravený k publikování do webové aplikace, přidejte do azure-pipelines.yml následující fragment kódu. Tuto úlohu spusťte po sestavení aplikace ve většině případů na konci kanálu. Tuto úlohu například spusťte před nasazením do webové aplikace Azure ve Windows.

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

Pokud chcete tento archiv publikovat do webové aplikace, viz nasazení Azure Web Apps.

Publikování symbolů

Úlohu můžete použít PublishSymbols@2 k publikování symbolů na serveru symbolů Azure Artifacts nebo sdílené složce. Další informace najdete v tématu Publikování symbolů.

Pokud chcete například publikovat symboly do sdílené složky, přidejte do souboru azure-pipelines.yml následující fragment kódu:

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

Pokud chcete použít klasický editor, přidejte do kanálu úlohu zdroje indexu a publikujte symboly .

Řešení problémů

Pokud se projekt úspěšně sestaví na místním počítači, ale ne ve službě Azure Pipelines, prozkoumejte následující možné příčiny a opravné akce.

  • Předběžné verze sady .NET Core SDK nejsou nainstalované na agentech hostovaných Microsoftem a uvedení nové verze sady SDK do všech datových center Azure Pipelines může trvat několik týdnů. Místo čekání na dokončení zavedení můžete pomocí úlohy Použít .NET Core nainstalovat požadovanou verzi sady .NET Core SDK na agenty hostované Microsoftem.
  • Nová verze sady .NET Core SDK nebo sady Visual Studio může přerušit sestavení, například pokud obsahuje novější verzi nebo funkci nástroje NuGet. Ujistěte se, že verze sady .NET Core SDK a modul runtime na vývojovém počítači odpovídají agentu kanálu.

    Do kanálu můžete zahrnout dotnet --version skript příkazového řádku, který vytiskne verzi sady .NET Core SDK. Buď pomocí instalačního programu nástroje .NET Core nasaďte stejnou verzi na agenta, nebo aktualizujte projekty a vývojový počítač na verzi kanálu sady .NET Core SDK.

  • Sestavení můžou občas selhat kvůli problémům s připojením při obnovování balíčků z NuGet.org. NuGet.org můžou mít problémy nebo může docházet k problémům se sítí mezi datovým centrem Azure a NuGet.org. Můžete prozkoumat, jestli použití Azure Artifacts s upstreamovými zdroji k ukládání balíčků do mezipaměti zvyšuje spolehlivost sestavení.

    Přihlašovací údaje kanálu se automaticky použijí pro připojení k Azure Artifacts. Tyto přihlašovací údaje jsou obvykle odvozeny z účtu služby sestavení kolekce projektů. Další informace o použití Azure Artifacts k ukládání balíčků NuGet do mezipaměti najdete v tématu Připojení k informačním kanálům Azure Artifact.

  • V sadě Visual Studio možná používáte logiku, která není v kanálu zakódovaná. Azure Pipelines spouští každý příkaz v úloze postupně v novém procesu. Prozkoumejte protokoly z buildu kanálů a podívejte se na přesné příkazy, které se spustily v sestavení. Pokud chcete problém najít, opakujte stejné příkazy ve stejném pořadí na vývojovém počítači.

  • Pokud máte smíšené řešení, které obsahuje některé projekty .NET Core a některé projekty rozhraní .NET Framework, použijte úlohu NuGet k obnovení balíčků zadaných v souborechpackages.config . Přidejte úlohu SESTAVENÍ nástroje MSBuild nebo Visual Studio pro sestavení projektů rozhraní .NET Framework.