.NET SDK'sını sürekli tümleştirme (CI) ortamlarında kullanma

Bu makalede bir derleme sunucusunda .NET SDK'sının ve araçlarının nasıl kullanılacağı özetlenmiştir. .NET araç takımı, bir geliştiricinin komut isteminde komutlar yazdığı ve sürekli tümleştirme (CI) sunucusunun derleme betiği çalıştırdığı otomatik olarak etkileşimli olarak çalışır. Komutlar, seçenekler, girişler ve çıkışlar aynıdır ve sağladığınız tek şey aracı edinmenin bir yolu ve uygulamanızı derlemek için bir sistemdir. Bu makalede, derleme betiklerinizi tasarlama ve yapılandırma önerileriyle CI için araç edinme senaryolarına odaklanmaktadır.

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

GitHub kullanıyorsanız yükleme basittir. .NET SDK'sını iş akışınıza yüklemek için GitHub Actions'a güvenebilirsiniz. .NET SDK'sını bir iş akışına yüklemenin önerilen yolu eylemi kullanmaktır actions/setup-net-core-sdk . Daha fazla bilgi için GitHub marketindeki .NET Core SDK'sını ayarlama eylemine bakın. Bunun nasıl çalıştığına ilişkin örnekler için bkz . Hızlı Başlangıç: Derleme doğrulama GitHub iş akışı oluşturma.

Yerel yükleyiciler

Yerel yükleyiciler macOS, Linux ve Windows için kullanılabilir. 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ı PKG yükleyicilerini kullanmalıdır. Linux'ta, Ubuntu için apt-get veya CentOS için yum gibi akış tabanlı paket yöneticisi kullanma ya da paketlerin kendileri, DEB veya RPM gibi bir seçenek vardır. Windows'da MSI yükleyicisini kullanın.

En son kararlı ikili dosyalar .NET indirmeleri sayfasında bulunur. En son (ve potansiyel olarak kararsız) yayın öncesi araçları kullanmak istiyorsanız dotnet/installer GitHub deposunda sağlanan bağlantıları kullanın. Linux dağıtımları tar.gz için arşivler (olarak tarballsda bilinir) kullanılabilir; .NET'i yüklemek için arşivlerdeki yükleme betiklerini kullanın.

Yükleyici betiği

Yükleyici betiğinin kullanılması, derleme sunucunuzda yönetim dışı yükleme ve araçları elde etmek için kolay otomasyon sağlar. Betik, araçları indirmeyi ve kullanmak üzere varsayılan veya belirtilen bir konuma ayıklamayı üstlenir. 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ı mı yüklemek istediğinizi belirtebilirsiniz.

Yükleyici betiği, SDK'nın istenen sürümünü getirmek ve yüklemek için derlemenin başlangıcında çalışacak şekilde otomatikleştirilmiştir. İstenen sürüm , projelerinizin derlemesi için gereken SDK sürümüdür. Betik, SDK'yı sunucudaki yerel bir dizine yüklemenize, yüklü konumdan araçları çalıştırmanıza ve derlemeden sonra temizlemenize (veya CI hizmetinin temizlemesine izin vermenize) olanak tanır. Bu, derleme işleminizin 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ğini 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 PowerShell veya bash betiği kullanılarak yapılan el ile kurulum ve hizmet olarak yazılım (SaaS) CI çözümlerinin açıklamaları açıklanmaktadır. Kapsamındaki SaaS CI çözümleri Travis CI, AppVeyor ve Azure Pipelines'dır. GitHub Actions için bkz . GitHub Actions ve .NET

El ile kurulum

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

Genel olarak, el ile kurulum, araçların bir sürümünü (veya araçların en son gece derlemelerini) edinmenizi ve derleme betiğinizi çalıştırmanızı gerektirir. Bir PowerShell veya bash betiği kullanarak .NET komutlarını düzenleyebilir veya derleme işleminin ana hatlarını oluşturan bir proje dosyası kullanabilirsiniz. Düzenleme bölümünde bu seçenekler hakkında daha fazla ayrıntı sağlanır.

El ile CI derleme sunucusu kurulumu gerçekleştiren bir betik oluşturduktan sonra, test amacıyla kodunuzu yerel olarak derlemek için bu betiği geliştirme makinenizde kullanın. Betiğin yerel olarak iyi çalıştığını onayladıktan sonra CI derleme sunucunuza dağıtın. Nispeten basit bir PowerShell betiği.NET SDK'sının nasıl alınıp bir Windows derleme sunucusuna yükleneceğini gösterir:

Derleme işleminiz için uygulamayı betiğin sonunda sağlarsınız. Betik araçları alır ve ardından derleme işleminizi yürütür.

$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'yi dili ve anahtarı kullanarak .NET SDK'sını csharpdotnet yükleyecek şekilde yapılandırabilirsiniz. Daha fazla bilgi için C#, F# veya Visual Basic Projesi Oluşturma ile ilgili resmi Travis CI belgelerine bakın. Travis CI bilgilerine erişilirken topluluk tarafından korunan language: csharp dil tanımlayıcısının F# ve Mono dahil olmak üzere tüm .NET dillerinde çalıştığını unutmayın.

Travis CI, uygulamanızın derleme birleşimlerini kapsayacak çalışma zamanı, ortam ve dışlamalar/eklemeler birleşimini belirttiğiniz derleme matrisinde hem macOS hem de Linux işlerini çalıştırır. Daha fazla bilgi için Travis CI belgelerindeki Derlemeyi Özelleştirme makalesine bakın. MSBuild tabanlı araçlar, paketteki uzun vadeli destek (LTS) ve standart vadeli destek (STS) çalışma zamanlarını içerir; bu nedenle SDK'yı yükleyerek derlemeniz gereken her şeyi alırsınız.

AppVeyor

AppVeyor , derleme çalışanı görüntüsüyle .NET 6 SDK'sını Visual Studio 2022 yükler. .NET SDK'sının farklı sürümlerine sahip diğer derleme görüntüleri kullanılabilir. Daha fazla bilgi için AppVeyor belgelerindeki Ç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 ardından ortam değişkenine PATH eklenir. .NET SDK'sının birden çok sürümüyle tümleştirme testleri çalıştırmak için bir derleme matrisi ekleyin:

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

Azure DevOps Services

Azure DevOps Services'i şu yaklaşımlardan birini kullanarak .NET projeleri oluşturacak şekilde yapılandırın:

  • Komutlarınızı kullanarak el ile kurulum adımından betiği çalıştırın.
  • .NET araçlarını kullanacak şekilde yapılandırılmış birkaç Azure DevOps Services yerleşik derleme görevinden oluşan bir derleme oluşturun.

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

Azure DevOps Services'da el ile kurulum betiği kullanmak için yeni bir derleme tanımı oluşturun ve derleme adımı için çalıştırılacak betiği belirtin. Bu, Azure DevOps Services kullanıcı arabirimi kullanılarak gerçekleştirilir:

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

    Selecting an empty build definition

  2. Depoyu derlemek üzere yapılandırdıktan sonra derleme tanımlarına yönlendirilirsiniz. Derleme adımı ekle'yi seçin:

    Adding a build step

  3. Size Görev kataloğu sunulur. Katalog, derlemede kullandığınız görevleri içerir. Betiğiniz olduğundan, PowerShell için Ekle düğmesini seçin: PowerShell betiği çalıştırma.

    Adding a PowerShell script step

  4. Derleme adımını yapılandırın. Oluşturmakta olduğunuz depodan betiği ekleyin:

    Specifying the PowerShell script to run

Derlemeyi düzenleme

Bu belgenin çoğu, .NET araçlarının nasıl alındığını ve kodunuzun .NET ile nasıl düzenlenip gerçekten derlenmesi gerektiği hakkında bilgi vermeden çeşitli CI hizmetlerini yapılandırmayı açıklar. Derleme işleminin nasıl yapılandırılacağına ilişkin seçenekler, burada genel olarak ele alınamaz birçok faktöre bağlıdır. Derlemelerinizi her teknolojiyle düzenleme hakkında daha fazla bilgi için Travis CI, AppVeyor ve Azure Pipelines belge kümelerinde sağlanan kaynakları ve örnekleri keşfedin.

.NET araçlarını kullanarak .NET kodu için derleme işlemini yapılandırırken kullandığınız iki genel yaklaşım, MSBuild'i doğrudan veya .NET komut satırı komutlarını kullanır. Hangi yaklaşımı benimsemeniz gerektiği, karmaşıklıktaki yaklaşımlar ve dengeler ile konfor düzeyinize göre belirlenir. MSBuild, derleme işleminizi görevler ve hedefler olarak ifade edebilmenizi sağlar, ancak MSBuild proje dosyası söz dizimini öğrenmenin karmaşıklığıyla birlikte gelir. .NET komut satırı araçlarını kullanmak belki daha kolaydır, ancak düzenleme mantığını veya PowerShell gibi bash bir betik dilinde yazmanızı gerektirir.

İpucu

Ayarlamak true istediğiniz bir MSBuild özelliğidir ContinuousIntegrationBuild. Bu özellik, yerel geliştirme derlemelerinin aksine yalnızca resmi derlemeler için geçerli olan ayarları etkinleştirir.

Ayrıca bkz.