Alıştırma - Şablonları kullanarak birden çok yapılandırma oluşturma
Önceki alıştırmalarda, Space Game web sitesini oluşturan bir işlem hattı uyguladınız. Her derleme eylemini gerçekleştiren ve her eylemi ilgili işlem hattı göreviyle eşleyen bir betikle başladınız. İşlem hattının çıkışı, derlenmiş web uygulamasını içeren bir .zip dosyasıdır.
Bu alıştırmada, proje dosyasında tanımlanan herhangi bir yapılandırmayı oluşturabilecek derleme görevlerini tanımlamak için bir şablon kullanacaksınız. Şablonlar mantığınızı bir kez tanımlamanıza ve ardından birkaç kez yeniden kullanmanıza olanak sağlar. Şablonlar, birden çok YAML dosyasının içeriğini tek bir işlem hattında birleştirir.
Bahşiş
Modüldeki bu adım isteğe bağlıdır. Şu anda şablonlar hakkında bilgi edinmek istemiyorsanız, sonraki adım olan Azure DevOps ortamınızı temizleme adımına geçin. Şablonlar hakkında daha fazla bilgi için bkz . Şablon türleri ve kullanımı.
Mara ve Amita ile kontrol ederek başlayalım.
Tanıtım
Mara, sonuçlarını paylaşmak için heyecanla Amita'yı takip eder ve derleme işlem hattını gösterir.
Bu kadar çabuk çalışman beni çok etkiledi! Aslında, ben de tam seni görmeye geliyordum çünkü derlemenin hazır olduğunu söyleyen bir e-posta aldım. Teşekkürler! İşlem hattının yalnızca Yayın yapılandırmasını oluşturduğunu görüyorum. Uygulama kilitlenirse ek bilgileri yakalayabilmemiz için Hata ayıklama derlemelerini de kullanırız. Bunu ekleyebilir miyiz?
Kesinlikle. Bunu ayarlarken Hata ayıklama derlemelerini kullanmayı unuttum. Birlikte oturup eklemeye ne dersin?
Derleme adımlarını tanımlayan YAML dosyasını gösterdiniz ama nasıl değiştirileceğinden emin değilim.
Sorun değil. Ben yazarken izleyebilirsin. Birlikte düşünebiliriz.
Her iki derleme yapılandırmasını da nasıl tanımlayabilirsiniz?
Space Game web projesinin Yayın yapılandırmasını derleyen ve yayımlayan aşağıdaki görevleri göz önünde bulundurun. (Bu kodu azure-pipelines.yml dosyanıza eklemeyin .)
- task: DotNetCoreCLI@2
displayName: 'Build the project - Release'
inputs:
command: 'build'
arguments: '--no-restore --configuration Release'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
displayName: 'Publish the project - Release'
inputs:
command: 'publish'
projects: '**/*.csproj'
publishWebProjects: false
arguments: '--no-build --configuration Release --output $(Build.ArtifactStagingDirectory)/Release'
zipAfterPublish: true
Hata ayıklama yapılandırmasını oluşturmak için bu iki görevi yineleyebilirsiniz, ancak yerine değerini ile Debug
değiştirebilirsinizRelease
.
Bunu yaptığınızda aradığınız sonuç elde edebilirsiniz ancak derlemeniz daha karmaşık hale geldiğinde veya gereksinimleriniz değiştiğinde ne olur? Her derleme görevinin her iki varyasyonu da el ile bulmanız ve değiştirmeniz gerekir. Ek derleme gereksinimlerini ekledikten sonra, bu gereksinimleri karşılamak için biri Hata Ayıklama yapılandırması ve diğeri Yayın için olmak üzere iki görev oluşturmanız gerekir.
Şablon kullanmak daha iyi bir çözümdür.
Şablon nedir?
Şablon, ortak derleme görevlerini bir kez tanımlamanıza ve bu görevleri birden çok kez yeniden kullanmanıza olanak tanır.
Derleme adımı olarak üst işlem hattından bir şablon çağıracaksınız. Parametreleri üst işlem hattından bir şablona geçirebilirsiniz.
Mara, uygulamayı şablon olarak derlemek ve yayımlamak için görevler tanımlayabilir ve ardından bu şablonu ihtiyaç duyduğu her yapılandırmaya uygulayabilir.
Şablonu tanımlama
Şablonun ortak derleme görevlerini bir kez tanımlamanıza ve bu görevleri birden çok kez yeniden kullanmanıza olanak tanıyan bir şablon olduğunu unutmayın. Bir şablonu üst şablonundan derleme adımı olarak çağırır ve parametreleri üst işlem hattından bir şablona geçirirsiniz.
Şimdi proje dosyasında tanımlanan tüm yapılandırmaları oluşturabilen bir şablon oluşturacaksınız.
Visual Studio Code tümleşik konsolundan projenizin kökünde bir şablon dizini oluşturun.
mkdir templates
Uygulamada, şablon dosyasını herhangi bir konuma yerleştirebilirsiniz. Bunları şablonlar dizinine yerleştirmeniz gerekmez.
Visual Studio Code'da Dosya Yeni Dosya'yı >seçin. Ardından, boş dosyayı projenizin templates dizinine build.yml olarak kaydetmek için Dosya > Kaydet'i seçin. ~/mslearn-tailspin-spacegame-web/templates örnek olabilir.
Önemli
Daha önce olduğu gibi, Windows'ta Kayıt türü listesinde YAML'yi seçin.
Visual Studio Code'da bu kodu build.yml'ye ekleyin:
parameters: buildConfiguration: 'Release' steps: - task: DotNetCoreCLI@2 displayName: 'Build the project - ${{ parameters.buildConfiguration }}' inputs: command: 'build' arguments: '--no-restore --configuration ${{ parameters.buildConfiguration }}' projects: '**/*.csproj' - task: DotNetCoreCLI@2 displayName: 'Publish the project - ${{ parameters.buildConfiguration }}' inputs: command: 'publish' projects: '**/*.csproj' publishWebProjects: false arguments: '--no-build --configuration ${{ parameters.buildConfiguration }} --output $(Build.ArtifactStagingDirectory)/${{ parameters.buildConfiguration }}' zipAfterPublish: true
Bu görevler, uygulamayı derlemek ve yayımlamak için daha önce tanımladığınız görevlere benzer. Ancak bir şablonda giriş parametreleriyle normal değişkenlerle çalışmaktan farklı bir şekilde çalışırsınız. burada iki fark vardır:
- Şablon dosyasında girdileri tanımlamak için yerine
variables
bölümünü kullanınparameters
. - Şablon dosyasında, parametrenin değerini okumak için yerine
$()
söz dizimini kullanın${{ }}
. Bir parametrenin değerini okuduğunuzda, bölümü adına eklersinizparameters
. Örneğin,${{ parameters.buildConfiguration }}
.
- Şablon dosyasında girdileri tanımlamak için yerine
İşlem hattından şablonu çağırma
Şimdi işlem hattından oluşturduğunuz şablonu çağıracaksınız. Hata ayıklama yapılandırması için bunu bir kez yapacak ve ardından Yayın yapılandırması için işlemi yineleyeceksiniz.
Visual Studio Code'da azure-pipelines.yml dosyasını burada gördüğünüz gibi değiştirin:
trigger: - '*' pool: vmImage: ubuntu-latest variables: buildConfiguration: 'Release' wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '6.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - template: templates/build.yml parameters: buildConfiguration: 'Debug' - template: templates/build.yml parameters: buildConfiguration: 'Release' - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: drop' condition: succeeded()
trigger: - '*' pool: name: 'Default' #replace if needed with name of your agent pool variables: buildConfiguration: 'Release' wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' dotnetSdkVersion: '6.x' steps: - task: UseDotNet@2 displayName: 'Use .NET SDK $(dotnetSdkVersion)' inputs: version: '$(dotnetSdkVersion)' - task: Npm@1 displayName: 'Run npm install' inputs: verbose: false - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' displayName: 'Compile Sass assets' - task: gulp@1 displayName: 'Run gulp tasks' - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' displayName: 'Write build info' workingDirectory: $(wwwrootDir) - task: DotNetCoreCLI@2 displayName: 'Restore project dependencies' inputs: command: 'restore' projects: '**/*.csproj' - template: templates/build.yml parameters: buildConfiguration: 'Debug' - template: templates/build.yml parameters: buildConfiguration: 'Release' - task: PublishBuildArtifacts@1 displayName: 'Publish Artifact: drop' condition: succeeded()
Bu dosya, derleme ve yayımlama görevlerini aynı görevleri yerine getiren şablona yapılan çağrılarla değiştirmesi dışında özgün dosyaya benzer.
Şablonun her yapılandırma için bir kez çağrıldığını göreceksiniz. Yapılandırma adını şablona geçirmek için her
template
görev bağımsız değişkeniniparameters
kullanır.
İşlem hattını çalıştırma
Şimdi değişikliklerinizi GitHub'a göndererek işlem hattının çalıştırılmasını göreceksiniz.
Tümleşik terminalden dizine azure-pipelines.yml ve templates/build.yml ekleyin, değişiklikleri işleyin ve değişiklikleri GitHub'a gönderin.
git add azure-pipelines.yml templates/build.yml git commit -m "Support build configurations" git push origin build-pipeline
Azure Pipelines'ta, daha önce yaptığınız gibi adımların her biri aracılığıyla derlemeyi izleyin.
İşlem hattı çalıştırılırken işlemin şablondaki görevleri genişletdiğini göreceksiniz. Projeyi derleyen ve yayımlayan görevler, her derleme yapılandırması için bir kez, iki kez çalıştırılır.
Derleme tamamlandığında özet sayfasına dönün ve daha önce yaptığınız gibi yayımlanan yapıtı seçin. Bırakma klasörünü genişletin.
İşlem hattının hem Hata Ayıklama yapılandırması hem de Yayın yapılandırması için bir .zip dosyası ürettiğini göreceksiniz.
Dalı main ile birleştirme
Bu noktada, Mara'nın şu anda ihtiyaç duyduğu her şeyi başaran çalışan bir derleme işlem hattına sahipsiniz.
Uygulamada, dalınızı dalla birleştirilen bir çekme isteği gönderirsinizbuild-pipeline
.main
Şimdilik bu adımı atlayacağız. Sonraki modülde, çekme isteklerini gönderme, gözden geçirme ve birleştirme dahil olmak üzere GitHub'da ekibinizle işbirliği yapmanın bazı yollarını öğreneceksiniz.