Derleme görevlerinizi planlama

Tamamlandı

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:

  1. içinde package.jsontanımlanan Node.js paketlerini yüklemek için komutunu çalıştırın npm install.
  2. Sass (.scss) dosyalarını CSS (.css) dosyalarına dönüştürmek için komutunu çalıştırın node-sass.
  3. JavaScript ve CSS dosyalarını küçültmek için komutunu çalıştırın gulp.
  4. Soru-Cevap ekibinin derleme numarasını ve tarihini tanımlamasına yardımcı olmak için derleme bilgilerini dizine yazdırın wwwroot .
  5. Projenin bağımlılıklarını yüklemek için komutunu çalıştırın dotnet restore.
  6. Uygulamayı hem Hata Ayıklama hem de Yayın yapılandırmaları altında derlemek için komutunu çalıştırın dotnet build.
  7. 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şler dotnet .
  • 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ıracak dotnet 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 **/*.csprojkullanı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@2olan 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.

Bilgilerinizi kontrol edin

1.

Derleme görevi: