Udostępnij za pośrednictwem


Korzystanie z zestawu .NET SDK w środowiskach ciągłej integracji

W tym artykule opisano sposób używania zestawu .NET SDK i jego narzędzi na serwerze kompilacji. Zestaw narzędzi platformy .NET działa zarówno interaktywnie, gdzie deweloper wpisuje polecenia w wierszu polecenia, i automatycznie, gdzie serwer ciągłej integracji uruchamia skrypt kompilacji. Polecenia, opcje, dane wejściowe i wyjściowe są takie same, a jedynymi elementami, które podajesz, jest sposób na uzyskanie narzędzi i systemu do kompilowania aplikacji. Ten artykuł koncentruje się na scenariuszach pozyskiwania narzędzi dla ciągłej integracji z zaleceniami dotyczącymi projektowania i struktury skryptów kompilacji.

Opcje instalacji serwerów kompilacji ciągłej integracji

Jeśli używasz usługi GitHub, instalacja jest prosta. Możesz polegać na funkcji GitHub Actions, aby zainstalować zestaw .NET SDK w przepływie pracy. Zalecanym sposobem zainstalowania zestawu .NET SDK w przepływie pracy jest actions/setup-net-core-sdk wykonanie akcji . Aby uzyskać więcej informacji, zobacz akcję Konfigurowanie zestawu .NET Core SDK w witrynie GitHub Marketplace. Aby zapoznać się z przykładami tego działania, zobacz Szybki start: tworzenie przepływu pracy weryfikacji kompilacji w usłudze GitHub.

Instalatory natywne

Instalatory natywne są dostępne dla systemów macOS, Linux i Windows. Instalatory wymagają dostępu administratora (sudo) do serwera kompilacji. Zaletą korzystania z natywnego instalatora jest zainstalowanie wszystkich natywnych zależności wymaganych do uruchomienia narzędzi. Instalatory natywne zapewniają również instalację zestawu SDK dla całego systemu.

Użytkownicy systemu macOS powinni używać instalatorów PKG. W systemie Linux istnieje możliwość korzystania z menedżera pakietów opartego na kanale informacyjnym, takiego jak apt-get dla systemu Ubuntu lub yum dla systemu CentOS, lub korzystania z samych pakietów, DEB lub RPM. W systemie Windows użyj instalatora MSI.

Najnowsze stabilne pliki binarne znajdują się w plikach do pobrania platformy .NET. Jeśli chcesz użyć najnowszych (i potencjalnie niestabilnych) narzędzi wstępnych, skorzystaj z linków dostępnych w repozytorium dotnet/installer w witrynie GitHub. W przypadku dystrybucji systemu Linux dostępne są archiwa tar.gz (znane również jako tarballs) . Użyj skryptów instalacyjnych w archiwach, aby zainstalować platformę .NET.

Skrypt instalatora

Użycie skryptu instalatora umożliwia instalację nieadministracyjnych na serwerze kompilacji i łatwą automatyzację w celu uzyskania narzędzi. Skrypt zajmuje się pobieraniem narzędzi i wyodrębnianie go do domyślnej lub określonej lokalizacji do użycia. Można również określić wersję narzędzi, którą chcesz zainstalować, i określić, czy chcesz zainstalować cały zestaw SDK, czy tylko środowisko uruchomieniowe udostępnione.

Skrypt instalatora jest zautomatyzowany do uruchamiania na początku kompilacji w celu pobrania i zainstalowania żądanej wersji zestawu SDK. Wymagana wersja to dowolna wersja zestawu SDK, która wymaga kompilacji projektów. Skrypt umożliwia zainstalowanie zestawu SDK w katalogu lokalnym na serwerze, uruchomienie narzędzi z zainstalowanej lokalizacji, a następnie wyczyszczenie (lub umożliwienie usłudze ciągłej integracji) po kompilacji. Zapewnia to hermetyzację i izolację całego procesu kompilacji. Dokumentacja skryptu instalacji znajduje się w artykule dotnet-install .

Uwaga

Azure DevOps Services

W przypadku korzystania ze skryptu instalatora zależności natywne nie są instalowane automatycznie. Należy zainstalować zależności natywne, jeśli system operacyjny ich nie ma. Aby uzyskać więcej informacji, zobacz .NET dependencies and requirements (Zależności i wymagania dotyczące platformy .NET).

Przykłady konfiguracji ciągłej integracji

W tej sekcji opisano ręczną konfigurację przy użyciu programu PowerShell lub skryptu powłoki bash wraz z opisami rozwiązań ciągłej integracji oprogramowania jako usługi (SaaS). Omówione rozwiązania ci w modelu SaaS to Travis CI, AppVeyor i Azure Pipelines. W przypadku funkcji GitHub Actions zobacz GitHub Actions i .NET

Konfiguracja ręczna

Każda usługa SaaS ma swoje metody tworzenia i konfigurowania procesu kompilacji. Jeśli używasz innego rozwiązania SaaS niż wymienione na liście lub wymagasz dostosowania poza obsługą wstępnie spakowaną, musisz wykonać co najmniej pewną konfigurację ręczną.

Ogólnie rzecz biorąc, ręczna konfiguracja wymaga uzyskania wersji narzędzi (lub najnowszych nocnych kompilacji narzędzi) i uruchomienia skryptu kompilacji. Możesz użyć skryptu programu PowerShell lub powłoki bash, aby zorganizować polecenia platformy .NET lub użyć pliku projektu, który zawiera opis procesu kompilacji. Sekcja aranżacji zawiera więcej szczegółów na temat tych opcji.

Po utworzeniu skryptu, który wykonuje ręczną konfigurację serwera kompilacji ciągłej integracji, użyj go na maszynie dewelopera, aby utworzyć kod lokalnie na potrzeby testowania. Po potwierdzeniu, że skrypt działa prawidłowo lokalnie, wdróż go na serwerze kompilacji ciągłej integracji. Stosunkowo prosty skrypt programu PowerShell pokazuje, jak uzyskać zestaw .NET SDK i zainstalować go na serwerze kompilacji systemu Windows:

Na końcu skryptu należy podać implementację procesu kompilacji. Skrypt uzyskuje narzędzia, a następnie wykonuje proces kompilacji.

$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.

Ciągła integracja usługi Travis

Możesz skonfigurować ciągłą integrację usługi Travis , aby zainstalować zestaw SDK platformy .NET przy użyciu csharp języka i dotnet klucza. Aby uzyskać więcej informacji, zobacz oficjalną dokumentację travis CI dotyczącą tworzenia projektów C#, F# lub Visual Basic. Pamiętaj, że podczas uzyskiwania dostępu do informacji dotyczących ciągłej integracji travis, które są obsługiwane language: csharp przez społeczność, identyfikator języka działa dla wszystkich języków platformy .NET, w tym języków F#, i Mono.

Ciągła integracja usługi Travis uruchamia zadania systemu macOS i Linux w macierzy kompilacji, w której określa się kombinację środowiska uruchomieniowego, środowiska i wykluczeń/dołączań w celu pokrycia kombinacji kompilacji dla aplikacji. Aby uzyskać więcej informacji, zobacz artykuł Dostosowywanie kompilacji w dokumentacji ciągłej integracji travis. Narzędzia oparte na programie MSBuild obejmują środowiska uruchomieniowe wsparcia długoterminowego (LTS) i standardowego wsparcia (STS) w pakiecie; dlatego przez zainstalowanie zestawu SDK otrzymasz wszystko, czego potrzebujesz do skompilowania.

AppVeyor

Aplikacja AppVeyor instaluje zestaw .NET 6 SDK z obrazem procesu roboczego Visual Studio 2022 kompilacji. Dostępne są inne obrazy kompilacji z różnymi wersjami zestawu .NET SDK. Aby uzyskać więcej informacji, zobacz artykuł Build worker images (Tworzenie obrazów procesów roboczych) w dokumentacji usługi AppVeyor.

Pliki binarne zestawu .NET SDK są pobierane i rozpakowywane w podkatalogu przy użyciu skryptu instalacji, a następnie są dodawane do zmiennej środowiskowej PATH . Dodaj macierz kompilacji, aby uruchomić testy integracji z wieloma wersjami zestawu .NET SDK:

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

Azure DevOps Services

Skonfiguruj usługi Azure DevOps Services do kompilowania projektów platformy .NET przy użyciu jednego z następujących podejść:

  • Uruchom skrypt z kroku ręcznej konfiguracji przy użyciu poleceń.
  • Utwórz kompilację składającą się z kilku wbudowanych zadań kompilacji usług Azure DevOps Services skonfigurowanych do korzystania z narzędzi platformy .NET.

Oba rozwiązania są prawidłowe. Za pomocą skryptu instalacji ręcznej kontrolujesz wersję otrzymywanych narzędzi, ponieważ pobierasz je w ramach kompilacji. Kompilacja jest uruchamiana na podstawie skryptu, który należy utworzyć. W tym artykule opisano tylko opcję ręczną. Aby uzyskać więcej informacji na temat tworzenia kompilacji za pomocą zadań kompilacji usługi Azure DevOps Services, zobacz dokumentację usługi Azure Pipelines .

Aby użyć skryptu konfiguracji ręcznej w usłudze Azure DevOps Services, utwórz nową definicję kompilacji i określ skrypt do uruchomienia dla kroku kompilacji. Jest to realizowane przy użyciu interfejsu użytkownika usługi Azure DevOps Services:

  1. Zacznij od utworzenia nowej definicji kompilacji. Po dotarciu do ekranu, który udostępnia opcję zdefiniowania rodzaju kompilacji, którą chcesz utworzyć, wybierz opcję Puste .

    Selecting an empty build definition

  2. Po skonfigurowaniu repozytorium do kompilacji zostanie przekierowane do definicji kompilacji. Wybierz pozycję Dodaj krok kompilacji:

    Adding a build step

  3. Zostanie wyświetlony wykaz zadań. Wykaz zawiera zadania używane w kompilacji. Ponieważ masz skrypt, wybierz przycisk Dodaj dla programu PowerShell: Uruchom skrypt programu PowerShell.

    Adding a PowerShell script step

  4. Skonfiguruj krok kompilacji. Dodaj skrypt z utworzonego repozytorium:

    Specifying the PowerShell script to run

Organizowanie kompilacji

W większości tego dokumentu opisano sposób uzyskiwania narzędzi platformy .NET i konfigurowania różnych usług ciągłej integracji bez podawania informacji na temat organizowania, a w rzeczywistości kompilowania kodu przy użyciu platformy .NET. Opcje dotyczące struktury procesu kompilacji zależą od wielu czynników, które nie mogą być omówione w ogólny sposób w tym miejscu. Aby uzyskać więcej informacji na temat organizowania kompilacji przy użyciu każdej technologii, zapoznaj się z zasobami i przykładami podanymi w zestawach dokumentacji travis CI, AppVeyor i Azure Pipelines.

Dwa ogólne podejścia do tworzenia struktury procesu kompilacji dla kodu platformy .NET przy użyciu narzędzi platformy .NET korzystają bezpośrednio z programu MSBuild lub poleceń wiersza polecenia platformy .NET. To podejście, które należy wziąć, zależy od poziomu komfortu z podejściami i kompromisami w złożoności. Program MSBuild umożliwia wyrażanie procesu kompilacji jako zadań i celów, ale wiąże się z dodatkową złożonością uczenia składni pliku projektu MSBuild. Korzystanie z narzędzi wiersza polecenia platformy .NET jest być może prostsze, ale wymaga pisania logiki aranżacji w języku skryptowym, na przykład bash lub w programie PowerShell.

Napiwek

Jedną z właściwości MSBuild, którą chcesz ustawić true , jest ContinuousIntegrationBuild. Ta właściwość umożliwia ustawienia, które mają zastosowanie tylko do oficjalnych kompilacji, w przeciwieństwie do kompilacji lokalnych.

Zobacz też