Derleme görevlerinizi planlama
Mara artık Space Game kodunun bir kopyasına sahip. Mevcut Ubuntu 22.04 derleme sunucusu yerine Microsoft Azure Pipelines'ı kullanarak derleyecek. Bunu yapabilmesi için önce mevcut derleme betiklerini düşünmesi gerekir. Mevcut betikleri Azure Pipelines görevleriyle eşlerken takip edin. Kendi derleme sürecinizle aynı işlemi nasıl yapabileceğinizi düşünün.
Mara'nın geliştirme lideri Andy ile konuştuğunda topladığı bazı notlar şunlardır:
- Derleme makinesi Ubuntu 22.04 çalıştırıyor.
- Derleme makinesi aşağıdakiler gibi derleme araçlarını içerir:
- npm, Node.js için paket yöneticisi
- .NET için paket yöneticisi NuGet
- .NET SDK
- Proje, basamaklı stil sayfaları (CSS) dosyalarının yazılmasında kolaylık sağlamak için Sağlamca Harika Stil Sayfaları 'nı (Sass) kullanır.
- Proje, JavaScript ve CSS dosyalarını küçültmek için gulp araç setini kullanır.
Küçültüldü varlığı gereksiz verileri (boşluk gibi) dışlar ve daha hızlı indirilmesine yardımcı olmak için değişken adlarını kısaltır.
Derleme işlemi sırasında gerçekleşen adımlar şunlardır:
- içinde
package.json
tanımlanan Node.js paketlerini yüklemek için komutunu çalıştırınnpm install
. - Sass (.scss) dosyalarını CSS (.css) dosyalarına dönüştürmek için komutunu çalıştırın
node-sass
. - JavaScript ve CSS dosyalarını küçültmek için komutunu çalıştırın
gulp
. - Soru-Cevap ekibinin derleme numarasını ve tarihini tanımlamasına yardımcı olmak için derleme bilgilerini dizine yazdırın
wwwroot
. - Projenin bağımlılıklarını yüklemek için komutunu çalıştırın
dotnet restore
. - Uygulamayı hem Hata Ayıklama hem de Yayın yapılandırmaları altında derlemek için komutunu çalıştırın
dotnet build
. - Uygulamayı bir .zip dosyası olarak paketlemek ve soru-cevap ekibinin alması için sonuçları bir ağ paylaşımına kopyalamak için komutunu çalıştırın
dotnet publish
.
Mara, tanımladığı görevleri gerçekleştiren bir kabuk betiği oluşturur. Dizüstü bilgisayarında çalıştırmış.
Dekont
Bu betiği çalıştırmanız veya ne yaptığını tamamen anlamanız gerekmez. Burada tipik bir derleme betiğinin neler yapabileceğini gösterebilirsiniz.
#!/bin/bash
# Install Node.js modules as defined in package.json.
npm install --quiet
# Compile Sass (.scss) files to standard CSS (.css).
node-sass Tailspin.SpaceGame.Web/wwwroot
# Minify JavaScript and CSS files.
gulp
# Print the date to wwwroot/buildinfo.txt.
echo `date` > Tailspin.SpaceGame.Web/wwwroot/buildinfo.txt
# Install the latest .NET packages the app depends on.
dotnet restore
# Build the app under the Debug configuration.
dotnet build --configuration Debug
# Publish the build to the /tmp directory.
dotnet publish --no-build --configuration Debug --output /tmp/Debug
# Build the app under the Release configuration.
dotnet build --configuration Release
# Publish the build to the /tmp directory.
dotnet publish --no-build --configuration Release --output /tmp/Release
Dizin, /tmp
ekibin ağ paylaşımını taklit eder.
Senaryoyu çalıştırdıktan sonra Mara, tamamlanmamış olduğunu fark eder. Örneğin, hatalarla ilgilenmez. Derleme hataları oluşursa kimseye bildirmez. Hatalar olsa bile çalışmaya devam eder. Ayrıca her adımın gerektirdiği araçları yüklemez.
Azure Pipelines görevleri nelerdir?
Azure Pipelines'da görev, bir dizi girişle soyutlanmış paketlenmiş bir betik veya yordamdır.
Azure Pipelines görevi temel alınan ayrıntıları soyutlar. Bu soyutlama, uygulamanızın bağımlı olduğu derleme araçlarını veya paketlerini indirme veya projenizi derleme, Visual Studio veya Xcode çalıştırma gibi yaygın derleme işlevlerini çalıştırmayı kolaylaştırır.
.NET'i hedefleyen bir C# projesi oluşturmak için, görevi kullanan bir örnek aşağıda verilmiştir DotNetCoreCLI@2
:
task: DotNetCoreCLI@2
displayName: 'Build the project'
inputs:
command: 'build'
arguments: '--no-restore --configuration Release'
projects: '**/*.csproj'
İşlem hattı bu görevi şu komuta çevirebilir:
dotnet build MyProject.csproj --no-restore --configuration Release
Şimdi bu görevi biraz daha azaltalım:
- Görev
DotNetCoreCLI@2
komutuyla eşlerdotnet
. displayName
kullanıcı arabiriminde gösterilen görev adını tanımlar. Bunu yakında iş başında göreceksiniz.inputs
komutuna geçirilen bağımsız değişkenleri tanımlar.command
alt komutu çalıştıracakdotnet build
şekilde belirtir.arguments
komutuna geçirecek ek bağımsız değişkenleri belirtir.projects
hangi projelerin derleyebileceğinizi belirtir. Bu örnekte joker karakter deseni**/*.csproj
kullanılır. Hem hem de**
*.csproj
glob desenleri olarak adlandırılan örneklerdir. bölümü,**
geçerli dizinde ve tüm alt dizinlerde arama yapmak için belirtir.*.csproj
bölümü herhangi bir .csproj dosyasını belirtir. Joker karakterler, her birini belirtmeden birden çok dosya üzerinde işlem yapmanızı sağlar. Yalnızca belirli bir dosya üzerinde işlem yapmanız gerekiyorsa, joker karakterler kullanmak yerine bu dosyayı belirtebilirsiniz.
Görev adındaki "@" örneğin DotNetCoreCLI@2
, görevin sürümüne başvurur. Yeni görev sürümleri kullanıma sunuldukçe, yeni özelliklerden yararlanmak için aşamalı olarak en son sürüme geçebilirsiniz.
İşlem hattında görevler nasıl kullanılır?
Ardından Mara, mevcut betik komutlarını Azure Pipelines görevleriyle eşleyecek. İşlem Hattı, yapılandırma dosyalarındaki veri türlerinin yapılandırılmasını kolaylaştıran kompakt bir biçim olan YAML dosyası kullanılarak oluşturulur. İşlem hattı YAML dosyaları genellikle doğrudan uygulamanızın kaynak koduyla korunur.
Mara daha önce benzer derleme görevlerini ve yapılandırmalarını tanımlamak için YAML'yi kullanmıştı. Ayrıca, projesinde olduğu gibi derleme tanımını da kod olarak koruma fikrinden hoşlanıyor.
Mara, derlemesini tanımlamak için Visual Studio Code'u kullanarak bir YAML dosyası oluşturmayı seçer. Buna, mevcut betik komutlarını değiştirmek için kullanabilecekleri tüm Azure Pipelines görevlerini girer.
Betik komutlarını Azure Pipelines görevleriyle eşleme
Şimdi Mara komutlarını betiğinden Azure Pipelines görevlerine eşlerken onu izleyeceksiniz.
Mara, her komutu eşlemek için başvuru belgelerine başvurur. Belgeler, görevleri derleme veya dağıtma gibi işlevlere göre kategorilere ayırır.
Örneğin, .NET Core CLI göreviDotNetCoreCLI@2
komutları çalıştırmanıza dotnet
yardımcı olur.
Bu tablo betik komutlarını yeni Azure Pipelines görevleriyle ilişkilendirir:
Betik komutu | Azure Pipelines görevi |
---|---|
npm install |
Npm@1 |
node-sass |
CmdLine@2 (veya script ) |
gulp |
gulp@1 |
echo `date` |
CmdLine@2 (veya script ) |
dotnet restore |
DotNetCoreCLI@2 |
dotnet build |
DotNetCoreCLI@2 |
dotnet publish |
DotNetCoreCLI@2 |
Node-Sass çalıştıran veya tarihi bir dosyaya yazdıran yerleşik görev türü yoktur. Bunlar için Mara, istediği komutu çalıştırmasına olanak tanıyan görevi kullanır CmdLine@2
. Daha yaygın olarak, için bir kısayol CmdLine@2
olan görevi görürsünüzscript
. Diğer yaygın görev kısayolları hakkında daha fazla bilgi için bkz . Azure Pipelines için YAML düzeni başvurusu - adımlar.
Yakında bu görevleri kullanan kendi YAML dosyanızı oluşturacaksınız.