Sestavování, testování a nasazování aplikací .NET Core

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Pomocí kanálu Azure můžete automaticky sestavovat, testovat a nasazovat projekty .NET Core. V tomto článku se dozvíte, jak provádět následující úlohy:

Poznámka:

Nápovědu k projektům rozhraní .NET Framework najdete v tématu Vytváření ASP.NET aplikací pomocí rozhraní .NET Framework.

Požadavky

  • Účet GitHubu, kde můžete vytvořit úložiště. Vytvořte si ho zdarma.
  • Kolekce Azure DevOps.
  • Možnost spouštět kanály v místním agentovi s nainstalovaným a spuštěným Dockerem na hostiteli agenta.

Vytvoření prvního kanálu

Začínáte se službou Azure Pipelines? Pokud ano, doporučujeme nejprve vyzkoušet následující část.

Vytvoření projektu .NET

Pokud nemáte projekt .NET pro práci, vytvořte v místním systému nový projekt. Začněte instalací nejnovější sady .NET 8.0 SDK .

  1. Otevřete okno terminálu.

  2. Vytvořte adresář projektu a přejděte na něj.

  3. Vytvořte novou webovou aplikaci .NET 8.

    dotnet new webapp -f net8.0
    
  4. Ve stejné relaci terminálu spusťte aplikaci místně pomocí dotnet run příkazu z adresáře projektu.

    dotnet run
    
  5. Po spuštění aplikace ji stisknutím kláves Ctrl+C vypněte.

Vytvoření úložiště Git a jeho připojení k GitHubu

  1. V adresáři projektu vytvořte místní úložiště Git a potvrďte kód aplikace do hlavní větve.

  2. Připojení místní úložiště Git do úložiště GitHub.

Vytvoření projektu DevOps

Přihlaste se ke službě Azure Pipelines. Po přihlášení přejde váš prohlížeč na https://dev.azure.com/my-organization-name řídicí panel Azure DevOps a zobrazí ho.

  1. V prohlížeči přejděte na dev.azure.com a přihlaste se.
  2. Vyberte svoji organizaci.
  3. Pokud vytváříte první projekt v organizaci, vytvořte nový projekt výběrem možnosti Nový projekt nebo Vytvořit projekt .
  4. Zadejte název projektu.
  5. Vyberte viditelnost projektu.
  6. Vyberte Vytvořit.
  1. V prohlížeči přejděte na Azure DevOps Server.
  2. Vyberte kolekci.
  3. Vytvořte nový projekt výběrem možnosti Nový projekt nebo Vytvořit projekt , pokud vytváříte první projekt v kolekci.
  4. Zadejte název projektu.
  5. Vyberte viditelnost projektu.
  6. Vyberte Vytvořit.
  1. V okně prohlížeče se přihlaste k Azure DevOps Serveru a vyberte kolekci.
  2. Vyberte Nový projekt.
  3. Zadejte název projektu.
  4. Volitelně můžete zadat popis.
  5. Vyberte Vytvořit.

Nastavení prostředí sestavení

Vaše sestavení běží na agentech v místním prostředí. Ujistěte se, že na agentech máte nainstalovanou potřebnou verzi sady .NET Core SDK a modulu runtime. Projekty .NET Core můžete sestavit pomocí sady .NET Core SDK a modulu runtime ve Windows, Linuxu, macOS a Dockeru.

Konkrétní verzi sady .NET SDK můžete nainstalovat přidáním úlohy UseDotNet@2 do souboru YAML kanálu nebo přidáním úlohy do kanálu pomocí klasického editoru.

Příklad fragmentu kódu YAML:

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

Vaše buildy běží na agentech hostovaných Microsoftem. Projekty .NET Core můžete sestavit pomocí sady .NET Core SDK a modulu runtime ve Windows, Linuxu a macOS.

Alternativně můžete použít agenta v místním prostředí. S agentem v místním prostředí můžete používat sady Preview nebo privátní sady SDK, které Azure DevOps Services oficiálně nepodporuje, a spouštět přírůstkové buildy.

Vytvoření kanálu

K vytvoření kanálu můžete použít editor kanálů YAML nebo klasický editor. Pokud chcete použít klasický editor, vyberte Použít klasický editor.

Vytvoření nového kanálu a výběr zdroje
  1. Přihlaste se ke své organizaci Azure DevOps a přejděte do svého projektu.

  2. Přejděte na Kanály a pak vyberte Nový kanál nebo Vytvořit kanál , pokud vytváříte první kanál.

  3. Kroky průvodce proveďte tak, že nejprve vyberete GitHub jako umístění zdrojového kódu.

  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. Až se zobrazí seznam úložišť, vyberte úložiště.

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

Konfigurace kanálu
  1. Když se zobrazí karta Konfigurovat, vyberte Zobrazit více a ze seznamu vyberte šablonu kanálu ASP.NET Core.

  2. Prozkoumejte nový kanál a podívejte se, co YAML dělá.

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

Uložení a spuštění kanálu
  1. Až budete připraveni, vyberte Uložit a spustit.

    Tlačítko Uložit a spustit v novém kanálu YAML

  2. Volitelně můžete zprávu potvrzení upravit.

  3. Potvrďte nový soubor azure-pipelines.yml do úložiště výběrem možnosti Uložit a spustit.

  4. Pokud chcete sledovat kanál v akci, vyberte úlohu v části Úlohy .

Vytvoření a spuštění kanálu

Kanál můžete vytvořit pomocí editoru kanálů YAML nebo klasického editoru.

  1. Přejděte do projektu a vyberte Kanály.
  2. Vyberte Vytvořit kanál nebo Nový kanál, pokud vytváříte první kanál pro tento projekt.
Výběr zdroje
  1. Vyberte zdrojové úložiště. V tomto příkladu použijte GitHub Enterprise Server.

    1. Zadejte adresu URL svého účtu GitHubu. Například https://github.com/<username>.
    2. Zadejte svůj osobní přístupový token pro váš účet GitHubu.
    3. Zadejte název připojení služby. Například my-github.
    4. Vyberte Vytvořit.
  2. Vyberte úložiště GitHub.

Konfigurace kanálu
  1. Na kartě Konfigurace vyberte Zobrazit více a ze seznamu vyberte šablonu kanálu ASP.NET Core.

  2. Prozkoumejte nový kanál a podívejte se, co YAML dělá.

Soubor YAML si můžete přizpůsobit podle svých požadavků. Můžete například přidat úkoly k instalaci sady .NET SDK nebo k otestování a publikování projektu.

Uložení a spuštění kanálu
  1. Zvolte Uložit.

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

  2. Chcete-li potvrdit soubor YAML kanálu do úložiště, upravte zprávu potvrzení podle potřeby a vyberte Uložit.

  3. Vyberte Spustit a spusťte kanál.

Pokud chcete zobrazit protokoly sestavení při spuštění kanálu, vyberte číslo buildu v horní části stránky.

  1. Zvolte Uložit a Spustit.

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

  2. Pokud chcete nový soubor azure-pipelines.yml potvrdit do úložiště, upravte zprávu potvrzení podle potřeby a vyberte Uložit a spustit.

Pokud chcete sledovat kanál v akci, vyberte úlohu v části Úlohy .

Teď máte funkční kanál, který je připravený k přizpůsobení. Přečtěte si další informace o některých běžných způsobech přizpůsobení kanálu.

Sestavení prostředí

Azure Pipelines používá k sestavení projektů .NET Core agenty v místním prostředí. Ujistěte se, že na agentech máte nainstalovanou potřebnou verzi sady .NET Core SDK a modulu runtime. Projekty .NET Core můžete sestavit pomocí sady .NET Core SDK a modulu runtime ve Windows, Linuxu, macOS a Dockeru.

Pokud například chcete vybrat možnosti fondu a agenta v souboru YAML kanálu:

Pro úlohu sestavení můžete vybrat fond agentů a agenta. Agenti jsou určeni na základě jejich možností.

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

Konkrétní verzi sady .NET SDK můžete nainstalovat přidáním úlohy UseDotNet@2 do kanálu. Mějte na paměti, že pro agenty, 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.

Pokud chcete nainstalovat novější sadu SDK, nastavte performMultiLevelLookup ji v true 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

Azure Pipelines můžete použít k sestavení projektů .NET Core ve Windows, Linuxu nebo macOS bez nutnosti nastavení infrastruktury.

Například Ubuntu je zde nastaven v souboru YAML kanálu.

pool:
  vmImage: 'ubuntu-latest' 

Úplný seznam imagí a dalších příkladů konfigurace najdete v agentech hostovaných Microsoftem.

Agenti hostovaní Microsoftem v Azure Pipelines zahrnují několik předinstalovaných verzí podporovaných sad .NET Core SDK. Agenti hostovaní Microsoftem nezahrnují některé starší verze sady .NET Core SDK. Tyto verze také obvykle nezahrnují předběžné verze. Pokud tyto verze sady SDK potřebujete na agentech hostovaných Microsoftem, nainstalujte je pomocí úlohy UseDotNet@2 .

Pokud chcete například nainstalovat sadu SDK 5.0.x, přidejte následující fragment kódu:

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 v true 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

Tip

Pokud chcete ušetřit náklady na spuštění instalačního programu nástroje, můžete nastavit agenta v místním prostředí s Linuxem, macOS nebo Windows. Pokud máte velké úložiště nebo spouštíte přírůstkové sestavení, můžete také využít agenty v místním prostředí, abyste ušetřili další čas. Agent v místním prostředí vám může také pomoct s používáním sad Preview nebo privátních sad SDK, které Azure DevOps oficiálně nepodporuje nebo které jsou dostupné jenom ve vašich podnikových nebo místních prostředích.

Obnovení závislostí

NuGet je oblíbený způsob, jak záviset na kódu, který nevytvořujete. Balíčky NuGet a nástroje specifické pro projekt, které jsou zadané v souboru projektu, můžete stáhnout spuštěním dotnet restore příkazu buď prostřednictvím úlohy .NET Core , nebo přímo ve skriptu ve vašem kanálu. Další informace najdete v tématu úloha .NET Core (DotNetCoreCLI@2).

Balíčky NuGet si můžete stáhnout z Azure Artifacts, NuGet.org nebo z jiného externího nebo interního úložiště NuGet. Úloha .NET Core je zvláště užitečná k obnovení balíčků z ověřených informačních kanálů NuGet. Pokud je váš informační kanál ve stejném projektu jako kanál, nemusíte se ověřovat.

Tento kanál používá v úloze DotNetCoreCLI@2 informační kanál dotnet restoreAzure 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)'

Tento dotnet restore příkaz používá NuGet.exe balíček se sadou .NET Core SDK a může obnovit pouze balíčky zadané v souborech projektu .csproj .NET Core.

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

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

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 ale použijete ověřený informační kanál, budete muset k obnovení balíčků použít úlohu .NET Core .

Sestavení můžou selhat kvůli problémům s připojením při obnovování balíčků z NuGet.org. K ukládání balíčků do mezipaměti můžete použít Azure Artifacts s upstreamovými zdroji . Přihlašovací údaje kanálu se automaticky použijí při 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í do informačních kanálů Azure Artifact.

Pokud chcete zadat úložiště NuGet, vložte adresu URL do NuGet.config souboru v úložišti. Pokud je váš informační kanál ověřený, spravujte jeho přihlašovací údaje vytvořením připojení služby NuGet na kartě Služby v části Project Nastavení.

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 zmírnit omezení, můžete použít Azure Artifacts nebo agenta v místním prostředí s výhodou použití mezipaměti balíčků.

Další informace o připojeních služeb NuGet najdete v tématu publikování do informačních kanálů NuGet.

Obnovení balíčků z externího informačního kanálu

Pomocí následujícího příkazu obnovte balíčky z externího informačního kanálu.

Příkaz pro obnovení můžete do kanálu přidat pomocí editoru kanálů YAML tak, že do souboru vložíte přímo následující fragment kódu azure-pipelines.yml nebo pomocí pomocníka pro úlohy přidáte úlohu .NET Core .

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

<Zástupný text> nahraďte názvem připojení služby.

Použití pomocníka pro úkoly:

Pokud chcete přidat úlohu sestavení pomocí pomocníka pro úlohy, 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 Příkaz vyberte příkaz pro obnovení.

  4. Do pole Cesta k projektům zadejte cestu k souborům.csproj.

  5. Vyberte Přidat.

  6. Výběrem možnosti Uložit změnu potvrďte.

Poznámka:

Ujistěte se, že je v NuGet.config souboru zadaný vlastní informační kanál a že přihlašovací údaje jsou zadané v připojení služby NuGet.

Sestavení projektu

Sestavte projekty .NET Core spuštěním dotnet build příkazu. Tento příkaz můžete do kanálu přidat jako skript příkazového řádku nebo pomocí úlohy .NET Core.

Sestavení .NET Core pomocí úlohy .NET Core

Příklad YAML pro sestavení pomocí úlohy DotNetCoreCLI@2:

steps:
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)' # Update this to match your needs

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

Pokud chcete přidat úlohu sestavení pomocí pomocníka pro úlohy, 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 Příkaz vyberte příkaz sestavení.

  4. Do pole Cesta k projektům zadejte cestu k souborům.csproj.

  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

Příklad YAML pro sestavení pomocí dotnet build skriptu:

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

Úlohu sestavení můžete přidat pomocí editoru kanálů YAML přímo úpravou souboru nebo přidáním úlohy příkazového řádku .

Pomocí následujících kroků přidejte úlohu příkazového řádku :

  1. Přejděte na pozici v souboru YAML, kam chcete úkol vložit.

  2. Vyberte příkazový řádek z katalogu úloh.

  3. Volitelně můžete přidat zobrazovaný název.

  4. dotnet build Zadejte příkaz s parametry. Například dotnet build --configuration $(buildConfiguration).

  5. Jako pracovní adresář zadejte cestu k .csproj souboru.

  6. Vyberte Přidat.

  7. Výběrem možnosti Uložit změnu potvrďte.

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

Do projektu můžete přidat příkazy sady .NET SDK jako skript nebo pomocí úlohy .NET Core. Úloha .NET Core (DotNetCoreCLI@2) umožňuje do kanálu snadno přidávat příkazy rozhraní příkazového řádku dotnet. Úlohy .NET Core můžete přidat úpravou souboru YAML nebo pomocí klasického editoru.

Přidání příkazu .NET CLI pomocí úlohy .NET Core

Pokud chcete přidat příkaz rozhraní příkazového řádku .NET Core pomocí editoru kanálů YAML, postupujte následovně:

  1. Přejděte na pozici v souboru YAML, kam chcete úkol vložit.

  2. V katalogu úloh vyberte .NET Core .

  3. 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 pomocí skriptu

Do souboru můžete přidat příkazy rozhraní příkazového scriptazure-pipelines.yml řádku .NET Core.

Pří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, postupujte takto:

  1. Přidejte úlohu .NET Core a nastavte následující vlastnosti:
    • Příkaz: vlastní.
      • Cesta k projektům: ponechejte prázdné.
    • Vlastní příkaz: nástroj.
    • Argumenty: install -g dotnetsay.
  2. Pokud chcete nástroj spustit, přidejte příkazový řádek a nastavte následující vlastnosti:
    • Skript:dotnetsay.

Spuštění testů

Pokud máte v úložišti projekty testů, můžete pomocí úlohy .NET Core 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. Tyto výsledky jsou k dispozici v souhrnu sestavení a lze je použít k řešení potíží s neúspěšnými testy a analýzou časování testů.

Testovací úlohu můžete do kanálu přidat pomocí úlohy DotNetCoreCLI@2 nebo do azure-pipelines.yml souboru přidat následující fragment kódu:

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

Při použití editoru úloh .NET Core by příkaz pro testování a cestu k projektům měl odkazovat na testovací projekty ve vašem řešení.

Případně můžete příkaz spustit dotnet test s konkrétním protokolovacím nástrojem a pak použít úlohu Publikovat výsledky testu:

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

Shromažďování pokrytí kódu

Při sestavování na platformě Windows je možné 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 ke spuštění testů se data pokrytí automaticky publikují na server. Soubor .coverage lze stáhnout ze souhrnu sestavení pro zobrazení v sadě Visual Studio.

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

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

Přidání úlohy .NET Core prostřednictvím editoru úloh:

  1. Přidejte úlohu .NET Core do úlohy sestavení a nastavte následující vlastnosti:

    1. Příkaz: test.
    2. Cesta k projektům: Měl by odkazovat na testovací projekty ve vašem řešení.
    3. Argumenty: --configuration $(BuildConfiguration) --collect "Code coverage".
  2. Ujistěte se, že je vybraná možnost Publikovat výsledky testu.

Pokud se rozhodnete příkaz spustit dotnet test , zadejte protokolovací nástroj výsledků testů a možnosti pokrytí. Pak použijte úlohu Publikovat výsledky testu:

steps:
# ...
# do this after your tests have 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@1). Nástroj pokrytí musí být nakonfigurovaný tak, aby vygeneroval výsledky ve formátu pokrytí Cobertura nebo JaCoCo.

Pokud chcete spustit testy a publikovat pokrytí kódu pomocí Coverletu, proveďte následující úlohy:

  • Přidejte odkaz na coverlet.collector balíček NuGet.

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

    - task: UseDotNet@2
      inputs:
        version: '8.x'
        includePreviewVersions: true # Required for preview versions
    
    - task: DotNetCoreCLI@2
      displayName: 'dotnet build'
      inputs:
        command: 'build'
        configuration: $(buildConfiguration)
    
    - 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: 'MyTestLibrary' # update with your test project directory
    
    - task: PublishCodeCoverageResults@1
      displayName: 'Publish code coverage report'
      inputs:
        codeCoverageTool: 'Cobertura'
        summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
    

Zabalení a doručení kódu

Artefakty sestavení můžete publikovat pomocí:

  • Publikování do Azure Pipelines
  • Publikování balíčků do Azure Artifacts
  • Vytvoření balíčku NuGet a publikování do informačního kanálu NuGet
  • Vytvoření .zip archivu pro nasazení webové aplikace

Publikování artefaktů do Azure Pipelines

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

  • Spusťte dotnet publish --output $(Build.ArtifactStagingDirectory) rozhraní příkazového řádku .NET nebo pomocí příkazu publish přidejte úlohu DotNetCoreCLI@2 .
  • Publikujte artefakt pomocí úlohy Publikovat artefakt kanálu.

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

steps:

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

# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)' 
    artifactName: 'myWebsite'

Poznámka:

Úloha DotNetCoreCLI@2publishWebProjects vstup, který je ve výchozím nastavení nastaven na true . Tento úkol ve výchozím nastavení publikuje všechny webové projekty v úložišti. Další nápovědu a informace najdete v opensourcové úloze na GitHubu.

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

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

Přidáním následujícího fragmentu kódu do azure-pipelines.yml souboru publikujte artefakty sestavení jako soubor .zip:

steps:

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

# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- 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 následující fragment kódu:

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

Poznámka:

Úloha NuGetAuthenticate@1 nepodporuje ověřování klíčů rozhraní NUGet API. Pokud používáte klíč rozhraní API NuGet, použijte úlohu NuGetCommand@2 se vstupem command nastaveným na pushargument --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í v informačních kanálech NuGet.

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

Balíčky NuGet můžete publikovat do informačního kanálu Azure Artifacts pomocí NuGetCommand@2 k nasdílení změn do informačního kanálu Azure Artifacts. Podívejte se například na téma Publikování balíčků NuGet pomocí Azure Pipelines.

Nasazení webové aplikace

Pokud chcete vytvořit archiv souborů .zip, který je připravený k publikování do webové aplikace, přidejte následující fragment kódu:

steps:
# ...
# do this after you've built your app, near the end of your pipeline in most cases
# for example, you do this before you deploy to an Azure web app on Windows
- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

Pokud chcete tento archiv publikovat do webové aplikace, podívejte se na nasazení Azure Web Apps.

Sestavení image a nasdílení změn do registru kontejneru

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

Publikování symbolů

Pomocí úlohy PublishSymbols@2 můžete publikovat symboly na serveru symbolů Azure Artifacts nebo ve sdílené složce.

Pokud chcete například publikovat symboly do sdílené složky, přidejte do azure-pipelines.yml souboru 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'

Při použití klasického editoru vyberte zdroje indexu publikovat symboly z katalogu úloh, které chcete přidat do kanálu.

Další informace najdete v tématu Publikování symbolů.

Odstraňování potíží

Pokud můžete projekt sestavit na vývojovém počítači, ale máte potíže s jeho sestavením v Azure Pipelines, prozkoumejte následující možné příčiny a nápravné akce:

  • Předběžné verze sady .NET Core SDK nejsou nainstalované na agentech hostovaných Microsoftem. Po vydání nové verze sady .NET Core SDK může trvat několik týdnů, než se zavede do všech datových center Azure Pipelines. Nemusíte čekat na dokončení tohoto uvedení. Pomocí úlohy Použít .NET Core můžete nainstalovat požadovanou verzi sady .NET Core SDK na agenty hostované Microsoftem.
  • Zkontrolujte verze sady .NET Core SDK a modul runtime na vývojovém počítači a ujistěte se, že odpovídají agentu. Do kanálu můžete zahrnout skript dotnet --version 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 novější verzi sady .NET Core SDK.

  • V integrovaném vývojovém prostředí sady Visual Studio možná používáte logiku, která není v kanálu zakódovaná. Azure Pipelines spouští všechny příkazy, které zadáte v úlohách po druhém v novém procesu. Prozkoumejte protokoly z buildu kanálů a podívejte se na přesné příkazy, které se spustily jako součást 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, měli byste také použít úlohu NuGet k obnovení balíčků zadaných v packages.config souborech. Přidejte úlohu SESTAVENÍ nástroje MSBuild nebo Visual Studio pro sestavení projektů rozhraní .NET Framework.

  • Sestavení může při obnovování balíčků občas selhat: dochází k problémům NuGet.org nebo dochází k problémům se sítí mezi datovým centrem Azure a NuGet.org. Můžete prozkoumat, jestli použití Azure Artifacts s NuGet.org jako nadřazený zdroj zlepšuje spolehlivost sestavení, protože není v naší kontrole.

  • Někdy se může stát, že se spustí nová verze sady .NET Core SDK nebo sady Visual Studio, může dojít k přerušení sestavení. Například novější verze nebo funkce nástroje NuGet se dodává se sadou SDK, která může narušit sestavení. Pokud chcete tento problém izolovat, použijte úlohu instalačního programu nástroje .NET Core k určení verze sady .NET Core SDK, která se používá v sestavení.

Často kladené dotazy

Otázka: Kde se dozvím další informace o Azure Artifacts?

A: Správa balíčků v Azure Artifacts

Otázka: Kde se dozvím další informace o příkazech .NET Core?

A: Nástroje rozhraní příkazového řádku .NET Core

Otázka: Kde najdu další informace o spouštění testů v řešení?

A: Testování jednotek v projektech .NET Core

Otázka: Kde najdu další informace o úkolech?

A: Úlohy sestavení a vydání