Použití sady .NET SDK v prostředích kontinuální integrace (CI)

Tento článek popisuje, jak používat sadu .NET SDK a její nástroje na buildovém serveru. Sada nástrojů .NET funguje interaktivně, kde vývojář zadá příkazy na příkazovém řádku a automaticky, kde server kontinuální integrace (CI) spouští skript sestavení. Příkazy, možnosti, vstupy a výstupy jsou stejné a jediné věci, které zadáte, představují způsob, jak získat nástroje a systém pro sestavení aplikace. Tento článek se zaměřuje na scénáře získávání nástrojů pro CI s doporučeními, jak navrhovat a strukturovat skripty sestavení.

Možnosti instalace pro servery sestavení CI

Pokud používáte GitHub, instalace je jednoduchá. K instalaci sady .NET SDK ve vašem pracovním postupu se můžete spolehnout na GitHub Actions. Doporučený způsob instalace sady .NET SDK v pracovním postupu je s actions/setup-net-core-sdk akcí. Další informace najdete v akci instalační sady .NET Core SDK na marketplace GitHubu. Příklady toho, jak to funguje, najdete v tématu Rychlý start: Vytvoření pracovního postupu gitHubu pro ověření sestavení.

Nativní instalační programy

Nativní instalační programy jsou k dispozici pro macOS, Linux a Windows. Instalační programy vyžadují přístup správce (sudo) k serveru sestavení. Výhodou použití nativního instalačního programu je, že nainstaluje všechny nativní závislosti potřebné ke spuštění nástrojů. Nativní instalační programy také poskytují systémovou instalaci sady SDK.

Uživatelé macOS by měli používat instalační programy PKG. V Linuxu je výběr ze správce balíčků založený na informačním kanálu, jako je apt-get pro Ubuntu nebo yum pro CentOS, nebo použití samotných balíčků, DEB nebo RPM. Ve Windows použijte instalační program MSI.

Nejnovější stabilní binární soubory najdete při stahování .NET. Pokud chcete použít nejnovější (a potenciálně nestabilní) předběžné nástroje, použijte odkazy uvedené v úložišti GitHubu dotnet/installer. V případě linuxových tar.gz distribucí jsou k dispozici archivy (označované také jako tarballs) a k instalaci .NET použijte instalační skripty v archivech.

Instalační skript

Použití instalačního skriptu umožňuje instalaci na buildovém serveru bez správy a snadnou automatizaci pro získání nástrojů. Skript se postará o stažení nástrojů a jeho extrahování do výchozího nebo zadaného umístění pro použití. Můžete také zadat verzi nástrojů, které chcete nainstalovat a zda chcete nainstalovat celou sadu SDK nebo pouze sdílený modul runtime.

Instalační skript se automaticky spustí na začátku sestavení, aby se načítá a nainstalovala požadovaná verze sady SDK. Požadovaná verze je libovolná verze sady SDK, které vaše projekty vyžadují k sestavení. Skript umožňuje nainstalovat sadu SDK do místního adresáře na serveru, spustit nástroje z nainstalovaného umístění a pak po sestavení vyčistit (nebo nechat službu CI vyčistit). To poskytuje zapouzdření a izolaci pro celý proces sestavení. Referenční informace o instalačním skriptu najdete v článku dotnet-install .

Poznámka:

Služby Azure DevOps

Při použití instalačního skriptu se nativní závislosti nenainstaluje automaticky. Pokud je operační systém nemá, musíte nainstalovat nativní závislosti. Další informace najdete v tématu Závislosti a požadavky .NET.

Příklady nastavení CI

Tato část popisuje ruční nastavení pomocí powershellového nebo bash skriptu spolu s popisy řešení CI pro software jako službu (SaaS). Pokrytá řešení CI SaaS jsou Travis CI, AppVeyor a Azure Pipelines. Informace o GitHub Actions najdete v tématu GitHub Actions a .NET.

Ruční nastavení

Každá služba SaaS má své metody pro vytvoření a konfiguraci procesu sestavení. Pokud používáte jiné řešení SaaS, než je uvedené nebo vyžadujete přizpůsobení nad rámec předem zabalené podpory, musíte provést aspoň určitou ruční konfiguraci.

Ruční instalace obecně vyžaduje, abyste získali verzi nástrojů (nebo nejnovější noční sestavení nástrojů) a spustili skript sestavení. K orchestraci příkazů .NET nebo použití souboru projektu, který popisuje proces sestavení, můžete použít skript PowerShellu nebo Bash. V části Orchestrace najdete podrobnější informace o těchto možnostech.

Po vytvoření skriptu, který provede ruční instalaci serveru sestavení CI, ho na vývojovém počítači použijte k místnímu sestavení kódu pro účely testování. Jakmile ověříte, že skript běží dobře místně, nasaďte ho na svůj server sestavení CI. Relativně jednoduchý skript PowerShellu ukazuje, jak získat sadu .NET SDK a nainstalovat ji na buildovací server Windows:

Na konci skriptu zadáte implementaci procesu sestavení. Skript získá nástroje a pak spustí proces sestavení.

$ErrorActionPreference="Stop"
$ProgressPreference="SilentlyContinue"

# $LocalDotnet is the path to the locally-installed SDK to ensure the
#   correct version of the tools are executed.
$LocalDotnet=""
# $InstallDir and $CliVersion variables can come from options to the
#   script.
$InstallDir = "./cli-tools"
$CliVersion = "6.0.7"

# Test the path provided by $InstallDir to confirm it exists. If it
#   does, it's removed. This is not strictly required, but it's a
#   good way to reset the environment.
if (Test-Path $InstallDir)
{
    rm -Recurse $InstallDir
}
New-Item -Type "directory" -Path $InstallDir

Write-Host "Downloading the CLI installer..."

# Use the Invoke-WebRequest PowerShell cmdlet to obtain the
#   installation script and save it into the installation directory.
Invoke-WebRequest `
    -Uri "https://dot.net/v1/dotnet-install.ps1" `
    -OutFile "$InstallDir/dotnet-install.ps1"

Write-Host "Installing the CLI requested version ($CliVersion) ..."

# Install the SDK of the version specified in $CliVersion into the
#   specified location ($InstallDir).
& $InstallDir/dotnet-install.ps1 -Version $CliVersion `
    -InstallDir $InstallDir

Write-Host "Downloading and installation of the SDK is complete."

# $LocalDotnet holds the path to dotnet.exe for future use by the
#   script.
$LocalDotnet = "$InstallDir/dotnet"

# Run the build process now. Implement your build script here.

Travis CI

Travis CI můžete nakonfigurovat tak, aby nainstaloval sadu .NET SDK pomocí csharp jazyka dotnet a klíče. Další informace najdete v oficiální dokumentaci k jazyku Travis CI při vytváření projektu jazyka C#, F# nebo Visual Basic. Všimněte si, že při přístupu k informacím o ci travisu funguje identifikátor jazyka spravované language: csharp komunitou pro všechny jazyky .NET, včetně F# a Mono.

Travis CI spouští úlohy macOS i Linuxu v matici sestavení, kde zadáte kombinaci modulů runtime, prostředí a vyloučení a zahrnutí, které pokrývají kombinace sestavení pro vaši aplikaci. Další informace najdete v článku o přizpůsobení sestavení v dokumentaci k ci travis. Nástroje založené na MSBuildu zahrnují do balíčku dlouhodobé podpory (LTS) a moduly runtime standardní podpory (STS). takže instalací sady SDK získáte vše, co potřebujete k sestavení.

AppVeyor

AppVeyor nainstaluje sadu .NET 6 SDK s imagí Visual Studio 2022 pracovního procesu sestavení. K dispozici jsou další image sestavení s různými verzemi sady .NET SDK. Další informace najdete v článku o vytváření imagí pracovních procesů v dokumentaci appVeyoru.

Binární soubory sady .NET SDK se stáhnou a rozbalí v podadresáři pomocí instalačního skriptu a pak se přidají do PATH proměnné prostředí. Přidejte matici sestavení pro spouštění integračních testů s více verzemi sady .NET SDK:

environment:
  matrix:
    - CLI_VERSION: 6.0.7
    - CLI_VERSION: Latest

Služby Azure DevOps

Nakonfigurujte Službu Azure DevOps Services pro sestavování projektů .NET pomocí jednoho z těchto přístupů:

  • Pomocí příkazů spusťte skript z kroku ruční instalace.
  • Vytvořte sestavení složené z několika předdefinovaných úloh sestavení Azure DevOps Services, které jsou nakonfigurované pro použití nástrojů .NET.

Obě řešení jsou platná. Pomocí ručního instalačního skriptu řídíte verzi nástrojů, které obdržíte, protože je stáhnete jako součást sestavení. Sestavení se spouští ze skriptu, který musíte vytvořit. Tento článek se zabývá pouze ruční možností. Další informace o vytváření sestavení pomocí úloh sestavení Azure DevOps Services najdete v dokumentaci ke službě Azure Pipelines .

Pokud chcete použít skript ručního nastavení ve službě Azure DevOps Services, vytvořte novou definici sestavení a zadejte skript, který se má spustit pro krok sestavení. Toho se dosahuje pomocí uživatelského rozhraní Azure DevOps Services:

  1. Začněte vytvořením nové definice sestavení. Jakmile se dostanete na obrazovku, která vám poskytne možnost definovat, jaký druh sestavení chcete vytvořit, vyberte možnost Prázdné .

    Selecting an empty build definition

  2. Po konfiguraci úložiště pro sestavení budete přesměrováni na definice sestavení. Vyberte Přidat krok sestavení:

    Adding a build step

  3. Zobrazí se katalog úloh. Katalog obsahuje úlohy, které používáte v sestavení. Vzhledem k tomu, že máte skript, vyberte tlačítko Přidat pro PowerShell: Spusťte skript PowerShellu.

    Adding a PowerShell script step

  4. Nakonfigurujte krok sestavení. Přidejte skript z úložiště, které vytváříte:

    Specifying the PowerShell script to run

Orchestrace sestavení

Většina tohoto dokumentu popisuje, jak získat nástroje .NET a nakonfigurovat různé služby CI bez poskytnutí informací o orchestraci nebo skutečném sestavení kódu pomocí .NET. Možnosti strukturování procesu sestavení závisí na mnoha faktorech, které zde nelze obecně probít. Další informace o orchestraci sestavení pomocí jednotlivých technologií najdete v dokumentačních sadách ci, AppVeyoru a Azure Pipelines.

Dva obecné přístupy, které při strukturování procesu sestavení pro kód .NET pomocí nástrojů .NET používají msBuild přímo nebo pomocí příkazů příkazového řádku .NET. Jaký přístup byste měli vzít, je určen úrovní pohodlí s přístupy a kompromisy v složitosti. NÁSTROJ MSBuild umožňuje vyjádřit proces sestavení jako úkoly a cíle, ale přináší větší složitost učení syntaxe souborů projektu MSBuild. Použití nástrojů příkazového řádku .NET je možná jednodušší, ale vyžaduje zápis logiky orchestrace ve skriptovacím jazyce, jako bash je powershell.

Tip

Jedna vlastnost NÁSTROJE MSBuild, kterou chcete nastavit, true je ContinuousIntegrationBuild. Tato vlastnost umožňuje nastavení, která se vztahují pouze na oficiální buildy, na rozdíl od sestavení místního vývoje.

Viz také