Sürekli Tümleştirme'de (CI) .NET SDK'sı ve araçlarını kullanma

Bu belgede derleme sunucusunda .NET SDK'sını ve araçlarını kullanma açıklanmıştır. .NET araç kümesi, bir geliştiricinin komut isteminde komutlar yazarak etkileşimli olarak ve otomatik olarak sürekli tümleştirme (CI) sunucusunun bir derleme betiği çalıştırması ile çalışır. Komutlar, seçenekler, girişler ve çıkışlar aynıdır ve yalnızca uygulamayı derlemek için bir araç ve sistem elde etmek için bir yol sağlarsınız. Bu belge, derleme betiklerinizi tasarlama ve oluşturma önerileriyle CI için araç edinme senaryolarına odaklanır.

CI derleme sunucuları için yükleme seçenekleri

Yerel yükleyicileri kullanma

Yerel yükleyiciler macOS, Linux ve Windows. Yükleyiciler, derleme sunucusuna yönetici (sudo) erişimi gerektirir. Yerel yükleyici kullanmanın avantajı, aracın çalışması için gereken tüm yerel bağımlılıkları yüklemesidir. Yerel yükleyiciler, SDK'nın sistem genelinde bir yüklemesini de sağlar.

macOS kullanıcılarının PKG yükleyicilerini kullanmaları gerekir. Linux'ta Ubuntu için apt-get veya CentOS için yum gibi akış tabanlı bir paket yöneticisi ya da paketlerin kendileri, DEB veya RPM gibi bir seçenek vardır. Bu Windows MSI yükleyicisini kullanın.

En son kararlı ikili dosyalar .NET indirmelerinde bulunur. En son (ve kararsız olabilecek) yayın öncesi aracı kullanmak isterseniz, dotnet/core-sdkGitHub deposunda sağlanan bağlantıları kullanın. Linux dağıtımları için tar.gz arşivler (olarak da tarballs bilinir) kullanılabilir; .NET Core'u yüklemek için arşivlerin içindeki yükleme betiklerini kullanın.

Yükleyici betiği kullanma

Yükleyici betiği kullanmak, derleme sunucunuzda yönetim dışı yükleme ve aracı elde etmek için kolay otomasyon sağlar. Betik, aracı indirme ve varsayılan veya belirtilen bir konuma ayıklama işlemiyle ilgilenin. Ayrıca, yüklemek istediğiniz aracın bir sürümünü ve SDK'nın tamamını mı yoksa yalnızca paylaşılan çalışma zamanının mı yüklemek istediğinizi de belirtebilirsiniz.

Yükleyici betiği, SDK'nın istenen sürümünü getirmek ve yüklemek için derlemenin başında çalıştıracak şekilde otomatikleştirilmiştir. İstenen sürüm, projelerinizi derlemek için gereken SDK sürümüdür. Betik, SDK'yı sunucu üzerinde yerel bir dizine yükleme, araçları yüklü konumdan çalıştırma ve derlemeden sonra temizleme (veya CI hizmetinin temizlemesine izin verme) olanak sağlar. Bu, derleme sürecinizin tamamına kapsülleme ve yalıtım sağlar. Yükleme betiği başvurusu dotnet-install makalesinde bulunur.

Not

Azure DevOps Services

Yükleyici betiği kullanırken, yerel bağımlılıklar otomatik olarak yüklenmez. İşletim sisteminde yoksa, yerel bağımlılıkları yüklemeniz gerekir. Daha fazla bilgi için bkz. .NET bağımlılıkları ve gereksinimleri.

CI kurulum örnekleri

Bu bölümde, bir PowerShell veya Bash betiği kullanılarak el ile yapılan kurulum ve hizmet olarak yazılım (SaaS) CI çözümlerinin açıklaması açıkmektedir. Ele alan SaaS CI çözümleri;Sin CI, AppVeyorve Azure Pipelines.

El ile kurulum

Her SaaS hizmetinin bir derleme işlemi oluşturmak ve yapılandırmak için kendi yöntemleri vardır. Listelenenlerden farklı bir SaaS çözümü kullanıyorsanız veya önceden paketlenmiş desteğin ötesinde özelleştirmeye ihtiyaç ediyorsanız, en azından el ile yapılandırma gerçekleştirmeniz gerekir.

Genel olarak, el ile kurulum için araçların bir sürümünü (veya araçların en son gecelik derlemelerini) edinmeniz ve derleme betiğinizi çalıştırmanız gerekir. PowerShell veya bash betiği kullanarak .NET komutlarını veya derleme işlemini ana hatlarıyla özetlenen bir proje dosyasını kullanabilirsiniz. Düzenleme bölümünde bu seçeneklerle ilgili daha fazla ayrıntı sunulmaktadır.

El ile CI derleme sunucusu kurulumu gerçekleştiren bir betik oluşturduk sonra, test amacıyla kodunuzu yerel olarak derlemek için geliştirme makineniz üzerinde bunu kullanın. Betiğin yerel olarak iyi şekilde çalıştırılı olduğunu onaylayın, ci derleme sunucunuza dağıtın. Görece basit bir PowerShell betiği, .NET SDK'nın nasıl alınarak bir derleme sunucusuna Windows gösterir:

$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 = "1.0.1"

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

Betiğin sonunda derleme işleminiz için uygulama sağlar. Betik araçları ediner ve ardından derleme işleminizi yürütür. Makineleri UNIX aşağıdaki bash betiği, PowerShell betiğinde açıklanan eylemleri benzer şekilde gerçekleştirir:

#!/bin/bash
INSTALLDIR="cli-tools"
CLI_VERSION=1.0.1
DOWNLOADER=$(which curl)
if [ -d "$INSTALLDIR" ]
then
    rm -rf "$INSTALLDIR"
fi
mkdir -p "$INSTALLDIR"
echo Downloading the CLI installer.
$DOWNLOADER https://dot.net/v1/dotnet-install.sh > "$INSTALLDIR/dotnet-install.sh"
chmod +x "$INSTALLDIR/dotnet-install.sh"
echo Installing the CLI requested version $CLI_VERSION. Please wait, installation may take a few minutes.
"$INSTALLDIR/dotnet-install.sh" --install-dir "$INSTALLDIR" --version $CLI_VERSION
if [ $? -ne 0 ]
then
    echo Download of $CLI_VERSION version of the CLI failed. Exiting now.
    exit 0
fi
echo The CLI has been installed.
LOCALDOTNET="$INSTALLDIR/dotnet"
# Run the build process now. Implement your build script here.

Neden CI

Dil ve anahtarı kullanarak .NET SDK'yı yüklemek için Varsayılan csharp CI'yi dotnet yapılandırabilirsiniz. Daha fazla bilgi için C#, F#veya Visual Basic Project . Topluluk tarafından bakımı yapılan dil tanımlayıcısının F# ve Mono da dahil olmak üzere tüm .NET dillerinde çalıştığını language: csharp Unutmayın.

Build CI, derleme matrisinde hem macOS hem de Linux işlerini çalıştırır. Burada, çalışma zamanı, ortam ve dışlamaların/eklemelerin bir bileşimini belirterek uygulamanıza uygun derleme birleşimlerinizi kapsıyor olursunuz. Daha fazla bilgi için, Telegram CI belgelerinde Derlemeyi Özelleştirme makalesine bakın. Bu MSBuild araçlar, pakette LTS (1.0.x) ve Geçerli (1.1.x) çalışma zamanlarını içerir; Bu nedenle SDK'yı yükleyerek derlemek için ihtiyacınız olan her şeyi alırsınız.

AppVeyor

AppVeyor, derleme çalışanı görüntüsüyle .NET Core 1.0.1 Visual Studio 2017 SDK'sı yüklüyor. .NET SDK'nın farklı sürümlerine sahip diğer derleme görüntüleri kullanılabilir. Daha fazla bilgi için AppVeyor belgesinde appveyor.yml örneği ve Çalışan görüntüleri oluşturma makalesine bakın.

.NET SDK ikili dosyaları yükleme betiği kullanılarak bir alt dizine indirilir ve sıkıştırması çıkarılır ve ortam PATH değişkenine eklenir. Tümleştirme testlerini .NET SDK'nın birden çok sürümüyle çalıştırmak için derleme matrisi ekleyin:

environment:
  matrix:
    - CLI_VERSION: 1.0.1
    - CLI_VERSION: Latest

install:
  # See appveyor.yml example for install script

Azure DevOps Services

Aşağıdaki Azure DevOps Services birini kullanarak .NET projeleri derlemek için yapılandırmayı yapılandırma:

  1. Komutlarınızı kullanarak el ile kurulum adımını kullanarak betiği çalıştırın.
  2. .NET araçlarını kullanmak üzere Azure DevOps Services yerleşik derleme görevlerden oluşan bir derleme oluşturun.

Her iki çözüm de geçerlidir. El ile kurulum betiği kullanarak, derlemenin bir parçası olarak indiren araçların sürümünü siz kontrol edin. Derleme, oluşturmanız gereken bir betikten çalıştır. Bu makale yalnızca el ile seçeneği kapsar. Derleme görevleriyle derleme oluşturma hakkında daha fazla Azure DevOps Services için Azure Pipelines bakın.

Bir derlemede el ile kurulum betiği Azure DevOps Services yeni bir derleme tanımı oluşturun ve derleme adımı için çalıştıracak betiği belirtin. Bu, kullanıcı arabirimi Azure DevOps Services işler:

  1. Yeni bir derleme tanımı oluşturarak başlayabilirsiniz. Ne tür bir derleme oluşturmak istediğinizi tanımlama seçeneği sağlayan ekrana ulaştıktan sonra Boş seçeneğini belirleyin.

    Boş derleme tanımı seçme

  2. Derlemek için depoyu yapılandırdıktan sonra, derleme tanımları yönlendirildi. Derleme adımı ekle'yi seçin:

    Derleme adımı ekleme

  3. Size Görev kataloğu sunulmuştur. Katalog, derlemede kullanabileceğiniz görevleri içerir. Bir betiğinize sahip olduğunuz için, PowerShell için Ekle düğmesini seçin: PowerShell betiği çalıştırın.

    PowerShell betik adımı ekleme

  4. Derleme adımını yapılandırma. Betiği, inşa etmekte olduğunu depodan ekleyin:

    Çalıştıracak PowerShell betiği belirtme

Derlemeyi düzenleme

Bu belgenin çoğunda kodunuzu .NET Core ile düzenleme veya oluşturma hakkında bilgi vermeden .NET araçlarının nasıl alınarak çeşitli CI hizmetlerinin yapılandırıldığından emin olmak açıklandı. Derleme işleminin nasıl yapılandırı tercihleri burada genel bir şekilde ele alamay birçok faktöre bağlıdır. Derlemelerinizi her teknolojiyle düzenleme hakkında daha fazla bilgi için, Aşağıdaki CI, AppVeyorve Azure Pipelines belge kümelerinde sağlanan kaynakları ve örnekleri Azure Pipelines.

.NET araçlarını kullanarak .NET kodu için derleme işlemini yapılandıran iki genel yaklaşım, doğrudan MSBuild veya .NET komut satırı komutlarını kullanıyor. Hangi yaklaşımı benimsersiniz? Yaklaşımlar ve karmaşıklıklar ile konfor düzeyiniz tarafından belirlenir. MSBuild, derleme sürecinizi görev ve hedef olarak ifade etme olanağı sağlar, ancak proje dosyası söz dizimini öğrenmenin MSBuild karmaşıklığıyla birlikte gelir. .NET komut satırı araçlarını kullanmak belki de daha basittir, ancak düzenleme mantığını veya PowerShell gibi bir betik dilinde bash yazmanız gerekir.

Ayrıca bkz.