A .NET SDK használata folyamatos integrációs (CI) környezetekben

Ez a cikk bemutatja, hogyan használhatja a .NET SDK-t és eszközeit egy buildkiszolgálón. A .NET-eszközkészlet interaktívan működik, ahol a fejlesztő parancsokat ad meg egy parancssorban, és automatikusan, ahol egy folyamatos integrációs (CI) kiszolgáló buildszkriptet futtat. A parancsok, a beállítások, a bemenetek és a kimenetek megegyeznek, és az egyetlen dolog, amit megad, az eszköz és egy rendszer beszerzésének módja az alkalmazás létrehozásához. Ez a cikk a CI eszközbeszerzési forgatókönyveivel foglalkozik, és javaslatokat ad a buildszkriptek tervezésére és szerkezetére.

Telepítési lehetőségek CI buildkiszolgálókhoz

Ha GitHubot használ, a telepítés egyszerű. A GitHub Actionsre támaszkodva telepítheti a .NET SDK-t a munkafolyamatban. A .NET SDK munkafolyamatban való telepítésének ajánlott módja a actions/setup-net-core-sdk művelet. További információ: A .NET Core SDK beállítása művelet a GitHub piactéren. Ennek működésére példákat a gyorsútmutatóban talál : Buildérvényesítési GitHub-munkafolyamat létrehozása.

Natív telepítők

Natív telepítők érhetők el macOS, Linux és Windows rendszeren. A telepítők rendszergazdai (sudo) hozzáférést igényelnek a buildkiszolgálóhoz. A natív telepítők használatának előnye, hogy telepíti az eszköz futtatásához szükséges összes natív függőséget. A natív telepítők az SDK rendszerszintű telepítését is biztosítják.

a macOS-felhasználóknak a PKG-telepítőket kell használniuk. Linuxon választhat egy hírcsatornaalapú csomagkezelőt, például az apt-get for Ubuntu vagy yum for CentOS szolgáltatást, vagy használhatja maguk a csomagokat, a DEB-t vagy az RPM-et. Windows rendszeren használja az MSI-telepítőt.

A legújabb stabil bináris fájlok a .NET-letöltésekben találhatók. Ha a legújabb (és potenciálisan instabil) kiadás előtti eszközt szeretné használni, használja a dotnet/installer GitHub-adattárban található hivatkozásokat. Linux-disztribúciók esetén az archívumok tar.gz (más néven tarballs) elérhetők. A .NET telepítéséhez használja az archívumon belüli telepítési szkripteket.

Telepítőszkript

A telepítőszkript használatával nem rendszergazdai telepítést végezhet a buildkiszolgálón, és könnyen automatizálhatja az eszköz beszerzését. A szkript gondoskodik az eszköz letöltéséről és az alapértelmezett vagy megadott helyre való kinyeréséről. Megadhatja a telepíteni kívánt eszközkészlet egy verzióját is, valamint azt is, hogy a teljes SDK-t vagy csak a megosztott futtatókörnyezetet szeretné-e telepíteni.

A telepítő szkript automatikusan fut a build elején az SDK kívánt verziójának lekéréséhez és telepítéséhez. A kívánt verzió annak az SDK-nak a verziója, amelyet a projekteknek létre kell készítenie. A szkripttel telepítheti az SDK-t egy helyi könyvtárban a kiszolgálón, futtathatja az eszközöket a telepített helyről, majd törölheti (vagy törölheti a CI szolgáltatást) a build után. Ez beágyazást és elkülönítést biztosít a teljes buildelési folyamathoz. A telepítési szkriptre vonatkozó hivatkozás a dotnet-install cikkben található.

Feljegyzés

Azure DevOps Services

A telepítőszkript használatakor a natív függőségek nem lesznek automatikusan telepítve. Ha az operációs rendszer nem rendelkezik velük, telepítenie kell a natív függőségeket. További információ: .NET-függőségek és követelmények.

CI-beállítási példák

Ez a szakasz egy PowerShell- vagy bash-szkripttel végzett manuális beállítást, valamint a szolgáltatott szoftver (SaaS) CI-megoldásainak leírását ismerteti. A tárgyalt SaaS CI-megoldások a Travis CI, az AppVeyor és az Azure Pipelines. A GitHub Actions esetében lásd : GitHub Actions és .NET

Manuális beállítás

Minden SaaS-szolgáltatás rendelkezik a buildelési folyamat létrehozásához és konfigurálásához szükséges módszerekkel. Ha a felsoroltaktól eltérő SaaS-megoldást használ, vagy az előrecsomagolt támogatáson túli testreszabást igényel, legalább néhány manuális konfigurációt végre kell hajtania.

A manuális beállításhoz általában be kell szereznie az eszközök egy verzióját (vagy az eszközök legújabb éjszakai buildjét), és futtatnia kell a buildszkriptet. PowerShell- vagy bash-szkripttel vezényelheti a .NET-parancsokat, vagy használhat egy projektfájlt, amely felvázolja a buildelési folyamatot. A vezénylési szakasz részletesebben ismerteti ezeket a lehetőségeket.

Miután létrehozott egy szkriptet, amely elvégzi a ci buildkiszolgáló manuális beállítását, használja azt a fejlesztői gépen a kód helyi tesztelési célokra történő összeállításához. Ha meggyőződik arról, hogy a szkript helyileg jól működik, telepítse a CI buildkiszolgálón. Egy viszonylag egyszerű PowerShell-szkript bemutatja, hogyan szerezheti be és telepítheti a .NET SDK-t egy Windows buildkiszolgálón:

A szkript végén adja meg a buildelési folyamat implementációját. A szkript beszerzi az eszközöket, majd végrehajtja a buildelési folyamatot.

$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

A Travis CI konfigurálható úgy, hogy a .NET SDK-t a nyelv és a csharpdotnet kulcs használatával telepítse. További információkért tekintse meg a hivatalos Travis CI-dokumentumokat a C#, az F# vagy a Visual Basic Projekt készítéséről. Figyelje meg, hogy a Travis CI-információk elérésekor a közösség által fenntartott language: csharp nyelvazonosító az összes .NET-nyelv esetében működik, beleértve az F#-ot és a Mono-t is.

A Travis CI macOS- és Linux-feladatokat is futtat egy buildmátrixban, ahol a futtatókörnyezet, a környezet és a kizárások/belefoglalások kombinációját adja meg az alkalmazás buildkombinációinak lefedéséhez. További információ: A Build testreszabása című cikk a Travis CI dokumentációjában. Az MSBuild-alapú eszközök közé tartoznak a csomag hosszú távú támogatási (LTS) és standard távú támogatási (STS) futtatókörnyezetei; Így az SDK telepítésével minden szükséges buildet megkapja.

AppVeyor

Az AppVeyor telepíti a .NET 6 SDK-t a Visual Studio 2022 buildfeldolgozó lemezképével. A .NET SDK különböző verzióival rendelkező buildképek is elérhetők. További információkért lásd az AppVeyor dokumentációjában található Feldolgozói képek létrehozása című cikket.

A .NET SDK bináris fájljait a rendszer letölti és kibontja egy alkönyvtárban a telepítési szkript használatával, majd hozzáadja őket a PATH környezeti változóhoz. Adjon hozzá egy buildmátrixot az integrációs tesztek futtatásához a .NET SDK több verziójával:

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

Azure DevOps Services

Az Azure DevOps Services konfigurálása .NET-projektek létrehozásához az alábbi módszerek egyikével:

  • Futtassa a szkriptet a manuális beállítási lépésből a parancsokkal.
  • Hozzon létre egy buildet, amely több beépített Azure DevOps Services-buildfeladatból áll, amelyek .NET-eszközök használatára vannak konfigurálva.

Mindkét megoldás érvényes. Manuális beállítási szkript használatával szabályozhatja a kapott eszközök verzióját, mivel azokat a build részeként tölti le. A build egy olyan szkriptből fut, amelyet létre kell hoznia. Ez a cikk csak a manuális beállítást ismerteti. Az Azure DevOps Services buildelési feladataival való összeállítással kapcsolatos további információkért tekintse meg az Azure Pipelines dokumentációját .

Ha manuális beállítási szkriptet szeretne használni az Azure DevOps Servicesben, hozzon létre egy új builddefiníciót, és adja meg a buildelési lépéshez futtatandó szkriptet. Ez az Azure DevOps Services felhasználói felületén történik:

  1. Először hozzon létre egy új builddefiníciót. Miután elérte azt a képernyőt, amely megadja, hogy milyen típusú buildet szeretne létrehozni, válassza az Üres lehetőséget.

    Selecting an empty build definition

  2. Miután konfigurálta az adattárat a buildeléshez, a builddefiníciókra lesz irányítva. Válassza az Add build step (Build hozzáadása) lehetőséget:

    Adding a build step

  3. Megjelenik a Feladatkatalógus. A katalógus a buildben használt feladatokat tartalmazza. Mivel rendelkezik szkripttel, válassza a PowerShell Hozzáadás gombját : PowerShell-szkript futtatása.

    Adding a PowerShell script step

  4. Konfigurálja a buildelési lépést. Adja hozzá a szkriptet az éppen létrehozott adattárból:

    Specifying the PowerShell script to run

A build vezénylése

A dokumentum nagy része bemutatja, hogyan szerezheti be a .NET-eszközöket, és hogyan konfigurálhat különböző CI-szolgáltatásokat anélkül, hogy információt nyújtanának a kód .NET-lel való vezénylésére vagy tényleges összeállítására vonatkozóan. A buildelési folyamat szerkezetének megválasztása számos olyan tényezőtől függ, amelyek általánosan nem fedhetők le. A buildek egyes technológiákkal való vezénylésével kapcsolatos további információkért tekintse meg a Travis CI, az AppVeyor és az Azure Pipelines dokumentációs készleteiben található erőforrásokat és mintákat.

A .NET-kód buildelési folyamatának .NET-eszközökkel történő strukturálása során két általános módszer az MSBuild közvetlen használata vagy a .NET parancssori parancsok használata. Az, hogy milyen megközelítést kell alkalmaznia, a kényelmi szint határozza meg a megközelítésekkel és a kompromisszumok összetettségével. Az MSBuild lehetővé teszi, hogy feladatként és célként fejezze ki a buildelési folyamatot, de az MSBuild projektfájl szintaxisának elsajátítása összetettebbé teszi. A .NET parancssori eszközök használata talán egyszerűbb, de ehhez vezénylési logikát kell írnia egy szkriptelési nyelven, például bash a PowerShellben.

Tipp.

Az egyik MSBuild tulajdonság, amelyet be szeretne állítanitrue, az .ContinuousIntegrationBuild Ez a tulajdonság olyan beállításokat tesz lehetővé, amelyek csak a hivatalos buildekre vonatkoznak, szemben a helyi fejlesztési buildekkel.

Lásd még