İşlem hattınızı özelleştirme
Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019
Bu, işlem hattınızı özelleştirmenin yaygın yolları hakkında adım adım bir kılavuz sağlar.
Önkoşul
Çalışan bir işlem hattı oluşturmak için İlk işlem hattınızı oluşturma yönergelerini izleyin.
Dosyayı azure-pipelines.yml anlama
İşlem hattı, depoda YAML dosyası kullanılarak tanımlanır. Genellikle, bu dosya olarak azure-pipelines.yml adlandırılmış ve repo'nizin kökünde yer almaktadır.
Uygulamanın Pipelines sayfasına Azure Pipelines oluşturduğunuz işlem hattını seçin.
İşlem hattının bağlam menüsünde Düzenle'yi seçerek işlem hattının YAML düzenleyicisini açın. YAML dosyasının içeriğini inceleme.
trigger: - main pool: vmImage: 'ubuntu-latest' steps: - task: Maven@3 inputs: mavenPomFile: 'pom.xml' mavenOptions: '-Xmx3072m' javaHomeOption: 'JDKVersion' jdkVersionOption: '1.8' jdkArchitectureOption: 'x64' publishJUnitResults: false testResultsFiles: '**/surefire-reports/TEST-*.xml' goals: 'package'Not
YAML dosyanın içeriği, başladığınız örnek repoya veya bu dosyada yapılan yükseltmelere bağlı olarak Azure Pipelines.
Bu işlem hattı, takımınız depo nun ana dalına bir değişiklik oluşturduğunda veya bir çekme isteği oluşturduğunda çalışır. Microsoft tarafından barındırılan bir Linux makinesi üzerinde çalışır. İşlem hattı işlemi, Maven görevini çalıştırmak için tek bir adıma sahip olur.
Üzerinde derlemek için platformu değiştirme
Projenizi microsoft tarafından barındırılan aracılarda, çeşitli geliştirme dilleri için ZATEN SDK'ler ve araçlar içeren aracılar üzerinde derlemek için kullanabilirsiniz. Veya, ihtiyacınız olan belirli araçlarla birlikte kendi içinde barındırılan aracıları kullanabilirsiniz.
Derlemede işlem hattını düzenle eylemini seçerek veya işlem hattının ana sayfasından Düzenle'yi seçerek işlem hattınız için düzenleyiciye gidin.
Şu anda işlem hattı bir Linux aracısı üzerinde çalışır:
pool: vmImage: "ubuntu-latest"Windows veya Mac gibi farklı bir platform seçmek için değeri
vmImagedeğiştirebilirsiniz:pool: vmImage: "windows-latest"pool: vmImage: "macos-latest"Kaydet'i seçin ve işlem hattı çalıştırmanızı farklı bir platformda görmek için değişiklikleri onaylayın.
Adım ekleme
İşlem hattınıza adım olarak dahafazla betik veya görev ebilirsiniz. Görev, önceden paketlenmiş bir betiktir. Uygulamanızı oluşturma, test etme, yayımlama veya dağıtma görevlerini kullanabilirsiniz. Java için, test ve yayımlama sonuçlarını işlemek için kullanılan Maven görevi, ancak kod kapsamı sonuçlarını yayımlamak için de bir görev kullanabilirsiniz.
İşlem hattınız için YAML düzenleyicisini açın.
YAML dosyanızı sonuna aşağıdaki kod parçacığını ekleyin.
- task: PublishCodeCoverageResults@1 inputs: codeCoverageTool: "JaCoCo" summaryFileLocation: "$(System.DefaultWorkingDirectory)/**/site/jacoco/jacoco.xml" reportDirectory: "$(System.DefaultWorkingDirectory)/**/site/jacoco" failIfCoverageEmpty: trueKaydet'i seçin ve değişiklikleri onaylayın.
Derlemenizi seçerek ve Test ve Kapsam sekmeleri'ne gidip test ve kod kapsamı sonuçlarınızı görüntüebilirsiniz.
Birden çok platformda derleme
Projenizi birden çok platformda oluşturabilir ve test etmek için kullanabilirsiniz. Bunu yapmak için ve ile bir yolu strategymatrix var. Verileri bir işlem hattının çeşitli bölümlerine rahatça koymak için değişkenleri kullanabilirsiniz. Bu örnekte bir değişken kullanarak kullanmak istediğiniz görüntünün adını geçebilirsiniz.
Dosyanıza
azure-pipelines.ymlşu içeriği değiştirin:pool: vmImage: "ubuntu-latest"aşağıdaki içeriğe sahip:
strategy: matrix: linux: imageName: "ubuntu-latest" mac: imageName: "macOS-latest" windows: imageName: "windows-latest" maxParallel: 3 pool: vmImage: $(imageName)Kaydet'i seçin ve ardından değişiklikleri onaylayın ve derlemenizin üç farklı platformda en fazla üç iş çalıştırarak çalışmasına bakın.
Her aracı aynı anda yalnızca bir iş çalıştırabilirsiniz. Birden çok işi paralel olarak çalıştırmak için birden çok aracı yapılandırmanız gerekir. Ayrıca yeterli paralel işlere de ihtiyacınız vardır.
Birden çok sürüm kullanarak derleme
Bu dilin farklı sürümlerini kullanarak proje oluşturmak için bir sürüm ve matrix değişken kullanabilirsiniz. Bu adımda, Java projesini tek bir platformda iki farklı Java sürümüyle derleme veya farklı platformlarda farklı Java sürümleri çalıştırma.
Not
Bir bağlamda strategy birden çok kez kullanılamaz.
Tek bir platform ve birden çok sürüm üzerinde derlemek için Maven görevi öncesinde ve sonrasında aşağıdaki
azure-pipelines.ymlmatrisi dosyanızavmImageekleyin.strategy: matrix: jdk10: jdkVersion: "1.10" jdk11: jdkVersion: "1.11" maxParallel: 2Ardından maven görevinize şu satırı değiştirin:
jdkVersionOption: "1.11"şu satırla:
jdkVersionOption: $(jdkVersion)Değişkenini kendi tercih
$(imageName)platformunu yeniden değiştir mutlaka kullanın.Birden çok platform ve sürüm üzerinde derlemek için, yayımlama görevi öncesinde
azure-pipelines.ymldosyanız içeriğinin tamamını aşağıdaki kod parçacığıyla değiştirin:trigger: - main strategy: matrix: jdk10_linux: imageName: "ubuntu-latest" jdkVersion: "1.10" jdk11_windows: imageName: "windows-latest" jdkVersion: "1.11" maxParallel: 2 pool: vmImage: $(imageName) steps: - task: Maven@3 inputs: mavenPomFile: "pom.xml" mavenOptions: "-Xmx3072m" javaHomeOption: "JDKVersion" jdkVersionOption: $(jdkVersion) jdkArchitectureOption: "x64" publishJUnitResults: true testResultsFiles: "**/TEST-*.xml" goals: "package"Kaydet'i seçin ve derlemenizin iki farklı platform ve SDK üzerinde iki iş çalıştırarak değişiklikleri onaylayın.
CI tetikleyicilerini özelleştirme
İşlem hattı tetikleyicileri bir işlem hattının çalışmasına neden olur. Bir dala trigger: güncelleştirme her güncelleştirmeyi her iletirken işlem hattının çalışmasına neden olmak için kullanabilirsiniz. YAML işlem hatları varsayılan olarak varsayılan dalda bir CI tetikleyicisi ile yapılandırılır (genellikle main ). Belirli dallar için veya çekme isteği doğrulaması için tetikleyiciler oluşturabilirsiniz. Çekme isteği doğrulama tetikleyicisi için adımı aşağıdaki trigger: iki pr: örnekle gösterildiği gibi ile değiştirmeniz gerekir. Varsayılan olarak, işlem hattı her çekme isteği değişikliği için çalışır.
Tetikleyicileri ayarlamak için dosyanın başına aşağıdaki kod parçacıklarının birini
azure-pipelines.ymlekleyin.trigger: - main - releases/*pr: - main - releases/*Dalın tam adını (örneğin, ) veya ön ek eşleştirme
mainjoker karakteri (örneğin, )releases/*belirtebilirsiniz.
İşlem hattı ayarları
YAML dosyanız için YAML dosya yolu ve işlem hattınızı etkinleştirme durumu gibi bazı işlem hattı ayarlarını yönetmezsiniz. Bu ayarları yapılandırmak için işlem hattı ayrıntıları sayfasına gidin ve Diğer eylemler 'i seçin veAyarlar. İşlem hatlarınıza göz atma ve gezinme hakkında daha fazla bilgi için bkz. İşlem hatlarında gezinme.
İşlem hattı ayarları bölmesinde aşağıdaki ayarları yapılandırabilirsiniz.
Yeni çalıştırma isteklerinin işlemesi - Bazen işlem hattınız üzerinde yeni çalıştırmaların başlamasını engellemek istemeniz gerekir.
- Varsayılan olarak, yeni çalıştırma isteklerinin işlemesi Etkin'tir. Bu ayar, el ile çalıştırmalar da dahil olmak üzere tüm tetikleyici türlerinin standart işlemeye olanak sağlar.
- Duraklatılmış işlem hatları çalıştırma isteklerinin işlenmesine olanak sağlar, ancak bu istekler gerçekten başlamadan kuyruğa alınır. Yeni istek işleme etkinleştirildiğinde, kuyrukta ilk istekle başlayan işleme sürdürmeleri çalıştırın.
- Devre dışı bırakılmış işlem hatları, kullanıcıların yeni çalıştırmalar başlatmasını önler. Bu ayar uygulanırken tüm tetikleyiciler de devre dışı bırakılır.
YAML dosya yolu - İşlem hattınızı farklı bir YAML dosyası kullanmak üzere yönlendirerek dosyanın yolunu belirtebilirsiniz. YAML dosyanızı taşımanız/yeniden adlandırmanız gerekirse bu ayar da yararlı olabilir.
Bu çalıştırmaya dahil edilen iş öğelerini otomatik olarak bağlama - Belirli bir işlem hattı çalıştırması ile ilişkili değişikliklerle ilişkili iş öğeleri olabilir. Bu iş öğelerini çalıştırmaya eklemek için bu seçeneği belirleyin. Bu çalıştırmaya dahil edilen iş öğelerini otomatik olarak bağlama seçili olduğunda, belirli bir dal veya varsayılan olan tüm dallar için belirtmeniz gerekir. Bir dal belirtirsiniz, iş öğeleri yalnızca bu dalnın çalıştırmaları ile ilişkilendirilr.
*belirtirsiniz, iş öğeleri tüm çalıştırmalar için ilişkilendirildi.
- Çalıştırmalar başarısız olduğunda bildirim almak için bkz. Bir ekip için bildirimleri yönetme
Hata durumunda iş öğesi oluşturma
YAML işlem hatlarında klasik derleme işlem hatları gibi hata durumunda iş öğesi oluştur ayarı yok. Klasik derleme işlem hatları tek aşamalıdır ve Hata durumunda iş öğesi oluştur tüm işlem hattına uygulanır. YAML işlem hatları çok aşamalı olabilir ve işlem hattı düzeyi ayarı uygun olabilir. YAML işlem hattında hata durumunda iş öğesi oluşturma uygulamak için, işlem hattınızı istediğiniz noktada İş Öğeleri - Oluşturma REST API çağrısı veya Azure DevOps CLI az boards iş öğesi oluşturma komutu gibi yöntemleri kullanabilirsiniz.
Aşağıdaki örnekte iki iş vardır. İlk iş işlem hattının işini temsil eder, ancak başarısız olursa ikinci iş çalışır ve işlem hattıyla aynı projede hata oluşturur.
# When manually running the pipeline, you can select whether it
# succeeds or fails.
parameters:
- name: succeed
displayName: Succeed or fail
type: boolean
default: false
trigger:
- main
pool:
vmImage: ubuntu-latest
jobs:
- job: Work
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
# This malformed command causes the job to fail
# Only run this command if the succeed variable is set to false
- script: git clone malformed input
condition: eq(${{ parameters.succeed }}, false)
# This job creates a work item, and only runs if the previous job failed
- job: ErrorHandler
dependsOn: Work
condition: failed()
steps:
- bash: |
az boards work-item create \
--title "Build $(build.buildNumber) failed" \
--type bug \
--org $(System.TeamFoundationCollectionUri) \
--project $(System.TeamProject)
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
displayName: 'Create work item on failure'
Not
Azure Boards, Çevik veya Temel gibi birkaç farklı işlemi kullanarak iş öğesi izlemenizi yapılandırmanıza olanak sağlar. Her işlem farklı iş öğesi türlerine sahip olur ve her bir işlemde her iş öğesi türü kullanılamaz. Her işlem tarafından desteklenen iş öğesi türlerinin listesi için bkz. İş öğesi türleri (WIT'ler).
Önceki örnek, işlem hattının başarılı mı yoksa başarısız mı olduğunu yapılandırmak için Çalışma Zamanı parametrelerini kullanır. İşlem hattını el ile çalıştırarak parametresinin değerini succeed ayarlayabilirsiniz. İşlem script hattının ilk işinin ikinci adımı parametresini değerlendirir ve succeed yalnızca false olarak succeed ayarlanırsa çalışır.
İşlem hattında ikinci işin ilk işlem hattına bağımlılığı olur ve yalnızca ilk iş başarısız olursa çalışır. İkinci iş, Azure DevOps oluşturmak için az boards work-item create komutunu kullanır. bir işlem hattından Azure DevOps CLI komutlarını çalıştırma hakkında daha fazla bilgi için bkz. YAML işlem hattında komut çalıştırma.
Bu örnekte iki iş kullanılmaktadır, ancak aynı yaklaşım birden çok aşamada kullanılabilir.
Sonraki adımlar
İşlem hattınızı özelleştirmenin temellerini öğrendinsiniz. Bundan sonra, işlem hattını, kullanmakta olduğu dil için özelleştirme hakkında daha fazla bilgi öğrenmenizi öneririz:
Veya CI işlem hattınızı BIR CI/CD işlem hattına büyütecek şekilde, uygulamanızı bir ortama dağıtma adımlarını içeren bir dağıtım işi de dahil edin.
Bu kılavuzda yer alan konular hakkında daha fazla bilgi edinmek için bkz.İşler, Görevler,Görev Kataloğu,Değişkenler,Tetikleyicilerveya Sorun Giderme.
YAML işlem hatlarında başka neleri de yaptnız hakkında bilgi edinmek için bkz. YAML şema başvurusu.