Yazılımınızın korunduğundan emin olmak için bunlarla güncel kalmak önemlidir. Sorun şu ki, güncel kalmak manuel ve sıkıcı bir süreçtir, ancak ya bunu otomatikleştirebilseydiniz?
Bu yazıda, biraz yardımınızı gerektiren son engelle birlikte tam otomatik bir çözüme giden yolun çoğunu nasıl elde edebileceğinizden bahsedeceğim.
Single Source of Truth
Çözmemiz gereken ilk sorun, kodumuzu oluşturmak için kullanılacak .NET SDK'nın belirli bir sürümünü zorunlu kılmaktır. Bunu global.json
depomuzun kök dizinine bir dosya ekleyerek yapabiliriz . İçinde .NET SDK sürümünü şu şekilde ayarlayabiliriz:
{
"sdk": {
"version": "3.1.402"
}
}
Hatırlatma : Bir geliştirici, global.json
dosyanızda belirttiğinizde .NET SDK sürümüne sahip değilse, Visual Studio projeleri yükleyemez ve çıktı penceresinde SDK'yı güncellemenizi söyleyen oldukça iyi bir hata gösterir.
Continuous Integration
GitHub Actions, Azure Pipelines veya AppVeyor gibi sürekli tümleştirme sunucularının tümü, rahatınız için önceden yüklenmiş bir .NET SDK sürümüne sahiptir. Ancak, yeni bir sürüm yayınlandığında en son sürüme güncelleme yapmak günler alır.
Bence .NET SDK'yı kendiniz yüklemek daha iyidir, ki bu oldukça kolaydır. İşin püf noktası, global.json
dosyadan .NET SDK sürüm numarasını okumaktır , böylece sürüm numarası için tek bir doğruluk kaynağı olur ve güncellenmesi daha kolaydır.
Bunun yapım sürenize birkaç saniye eklediğini belirtmek gerekir. Ancak, derleme sunucusunda sürüm zaten kurulu ise, bu genellikle doğrudur, bu çok hızlıdır.
GitHub Eylemleri
GitHub Eylemleri actions/setup-dotnet
için, .NET SDK'yı yüklemek için birinci taraf GitHub eylemini kullanabiliriz. Buna sabit kodlanmış bir sürüm numarası sağlayabilirsiniz, ancak bunun çıkarılması, global.json
bulduğu herhangi bir dosyadan sürüm numarasını aramasına neden olur.
- name: 'Install .NET Core SDK'
uses: actions/setup-dotnet@v1
Azure Pipelines
Azure Pipelines, UseDotNet
.NET SDK'yı yükleyebilen benzer bir birinci taraf görevine sahiptir. useGlobalJson
Bayrağı ayarlamanız gerektiğinden, biraz daha ayrıntılıdır.
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
packageType: 'sdk'
useGlobalJson: true
PowerShell
.NET, .NET SDK'yı yüklemek için bir PowerShell ve Bash komut dosyasıyla birlikte gelir. Her ikisi de global.json
, sürüm numarasını okumak için dosyayı kullanmalarını söylemek için iletebileceğiniz bir bağımsız değişkenle birlikte gönderilir . İşte kullanabileceğiniz kısa bir çapraz platform PowerShell 7 (daha önce PowerShell Core olarak biliniyordu) komut dosyası :
if ($isWindows) {
Invoke-WebRequest "https://dot.net/v1/dotnet-install.ps1" -OutFile "./dotnet-install.ps1"
./dotnet-install.ps1 -JSonFile global.json
}
else {
Invoke-WebRequest "https://dot.net/v1/dotnet-install.sh" -OutFile "./dotnet-install.sh"
sudo chmod u+x dotnet-install.sh
sudo ./dotnet-install.sh --jsonfile global.json
}
AppVeyor
AppVeyor, PowerShell ve Bash betiklerini kullanarak .NET SDK'yı yüklemeyle ilgili bazı sorunlar yaşıyor. Çok açık olmadığım nedenlerden dolayı, kurulum dizinini ayarlamanız gerekiyor. İşte bunun için kullandığım güncellenmiş komut dosyası:
if ($isWindows) {
Invoke-WebRequest "https://dot.net/v1/dotnet-install.ps1" -OutFile "./dotnet-install.ps1"
./dotnet-install.ps1 -JSonFile global.json -InstallDir 'C:Program Filesdotnet'
}
else {
Invoke-WebRequest "https://dot.net/v1/dotnet-install.sh" -OutFile "./dotnet-install.sh"
sudo chmod u+x dotnet-install.sh
if ($isMacOS) {
sudo ./dotnet-install.sh --jsonfile global.json --install-dir '/Users/appveyor/.dotnet'
} else {
sudo ./dotnet-install.sh --jsonfile global.json --install-dir '/usr/share/dotnet'
}
}
Umarım faydalı olmuştur. Sağlıkla kalın...