Aracılığıyla paylaş


İşlem hattınızı özelleştirme

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Bu, işlem hattınızı özelleştirmenin yaygın yolları hakkında adım adım bir kılavuzdur.

Önkoşul

Çalışan bir işlem hattı oluşturmak için İlk işlem hattınızı oluşturma başlığındaki yönergeleri izleyin.

azure-pipelines.yml Dosyayı anlama

İşlem hattı, deponuzda bir YAML dosyası kullanılarak tanımlanır. Genellikle bu dosya adlandırılır azure-pipelines.yml ve deponuzun kökünde bulunur.

Azure Pipelines'da İşlem Hatları sayfasına gidin, oluşturduğunuz işlem hattını seçin ve işlem hattının bağlam menüsünde Düzenle'yi seçerek işlem hattının YAML düzenleyicisini açın.

Not

Azure DevOps portalında işlem hatlarınızı görüntüleme ve yönetme yönergeleri için bkz . İşlem hatlarınızı görüntüleme ve yönetme.

YAML dosyasının içeriğini inceleyin.

 trigger:
 - main

 pool:
   vmImage: 'ubuntu-latest'

 steps:
 - task: Maven@4
   inputs:
     mavenPomFile: 'pom.xml'
     mavenOptions: '-Xmx3072m'
     javaHomeOption: 'JDKVersion'
     jdkVersionOption: '1.11'
     jdkArchitectureOption: 'x64'
     publishJUnitResults: false
     testResultsFiles: '**/surefire-reports/TEST-*.xml'
     goals: 'package'

Not

YAML dosyanızın içeriği, başlattığınız örnek depoya veya Azure Pipelines'da yapılan yükseltmelere bağlı olarak farklı olabilir.

Bu işlem hattı, ekibiniz deponuzun ana dalı üzerinde bir değişiklik oluşturduğunda veya çekme isteği oluşturduğunda çalışır. Microsoft tarafından barındırılan bir Linux makinesinde çalışır. İşlem hattı işlemi, Maven görevini çalıştırmak için tek bir adıma sahiptir.

Üzerinde derlemek için platformu değiştirme

Projenizi, çeşitli geliştirme dillerine yönelik SDK'ları ve araçları içeren Microsoft tarafından barındırılan aracılar üzerinde oluşturabilirsiniz. İsterseniz, ihtiyacınız olan belirli araçlarla şirket içinde barındırılan aracıları da 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ın düzenleyicisine gidin.

  • İşlem hattı şu anda bir Linux aracısı üzerinde çalışır:

    pool:
      vmImage: "ubuntu-latest"
    
  • Windows veya Mac gibi farklı bir platform seçmek için değerini değiştirin vmImage :

    pool:
      vmImage: "windows-latest"
    
    pool:
      vmImage: "macos-latest"
    
  • Kaydet'i seçin ve işlem hattınızın farklı bir platformda çalıştığını görmek için değişiklikleri onaylayın.

Adım ekleme

İşlem hattınıza adım olarak daha fazla betik veya görev ekleyebilirsiniz. Görev, önceden paketlenmiş bir betiktir. Uygulamanızı derlemek, test etme, yayımlamak veya dağıtmak için görevleri kullanabilirsiniz. Java için kullandığımız Maven görevi test ve yayımlama sonuçlarını işler, ancak kod kapsamı sonuçlarını yayımlamak için de bir görev kullanabilirsiniz.

  • İşlem hattınızın YAML düzenleyicisini açın.

  • YAML dosyanızın 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: true
    
  • Kaydet'i seçin ve değişiklikleri onaylayın.

  • Derlemenizi seçip Test ve Kapsam sekmelerine giderek test ve kod kapsamı sonuçlarınızı görüntüleyebilirsiniz.

Birden çok platformda derleme

Projenizi birden çok platformda derleyebilir ve test edebilirsiniz. Bunu ve ile strategy matrixyapmak için bir yol vardır. Değişkenleri kullanarak verileri kolayca işlem hattının çeşitli bölümlerine yerleştirebilirsiniz. Bu örnekte, kullanmak istediğimiz görüntünün adını geçirmek için bir değişken kullanacağız.

  • Dosyanızda azure-pipelines.yml şu içeriği değiştirin:

    pool:
      vmImage: "ubuntu-latest"
    

    sahip dizinde:

    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 derlemenizin üç farklı platformda üçe kadar iş çalıştırmasını görmek için değişiklikleri onaylayın.

Her aracı aynı anda yalnızca bir iş çalıştırabilir. Birden çok işi paralel çalıştırmak için birden çok aracı yapılandırmanız gerekir. Ayrıca yeterli paralel iş gerekir.

Birden çok sürüm kullanarak derleme

Bu dilin farklı sürümlerini kullanarak bir proje oluşturmak için bir matrix sürüm ve değişken kullanabilirsiniz. Bu adımda Java projesini tek bir platformda Java'nın iki farklı sürümüyle derleyebilir veya farklı platformlarda farklı Java sürümlerini çalıştırabilirsiniz.

Not

Bir bağlamda birden çok kez kullanamazsınız strategy .

  • Tek bir platformda ve birden çok sürümde derlemek istiyorsanız, Maven görevinden önce ve sonrasında dosyanıza azure-pipelines.yml aşağıdaki matrisi vmImageekleyin.

    strategy:
      matrix:
        jdk10:
          jdkVersion: "1.10"
        jdk11:
          jdkVersion: "1.11"
      maxParallel: 2
    
  • Ardından maven görevinizde şu satırı değiştirin:

    jdkVersionOption: "1.11"
    

    bu satırla değiştirin:

    jdkVersionOption: $(jdkVersion)
    
  • Değişkeni seçtiğiniz platforma geri döndürdiğinizden $(imageName) emin olun.

  • Birden çok platform ve sürümde derlemek istiyorsanız, yayımlama görevinden önce dosyanızdaki azure-pipelines.yml içeriğin 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@4
      inputs:
        mavenPomFile: "pom.xml"
        mavenOptions: "-Xmx3072m"
        javaHomeOption: "JDKVersion"
        jdkVersionOption: $(jdkVersion)
        jdkArchitectureOption: "x64"
        publishJUnitResults: true
        testResultsFiles: "**/TEST-*.xml"
        goals: "package"
    
  • Kaydet'i seçin ve ardından derlemenizin iki farklı platformda ve SDK'da iki iş çalıştırmasını görmek için 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 güncelleştirme gönderdiğinizde işlem hattının çalışmasına neden olmak için kullanabilirsiniz trigger: . YAML işlem hatları varsayılan dalınızdaki (genellikle main) bir CI tetikleyicisi ile varsayılan olarak yapılandırılır. Belirli dallar veya çekme isteği doğrulaması için tetikleyiciler ayarlayabilirsiniz. Çekme isteği doğrulama tetikleyicisi için aşağıdaki iki örnekte gösterildiği gibi adımı ile pr: değiştirintrigger:. Varsayılan olarak, her çekme isteği değişikliği için işlem hattı çalışır.

  • Tetikleyicileri ayarlamak isterseniz, dosyanızın azure-pipelines.yml başına aşağıdaki kod parçacıklarından birini ekleyin.

    trigger:
      - main
      - releases/*
    
    pr:
      - main
      - releases/*
    

    Dalın tam adını (örneğin, main) veya önek eşleştirme joker karakteri (örneğin, releases/*) belirtebilirsiniz.

İşlem hattı ayarları

İşlem hattı ayrıntıları sayfasındaki Diğer eylemler menüsünden işlem hattı ayarlarını görüntüleyebilir ve yapılandırabilirsiniz.

İşlem hattı ayarlarının ve diğer eylemler menüsünün ekran görüntüsü.

Aşağıdaki işlem hattı ayarlarını yapılandırmak için Ayarlar'ı seçin.

İşlem hattı ayarları sayfasının ekran görüntüsü.

İşlem hattı ayarları bölmesinden aşağıdaki ayarları yapılandırabilirsiniz.

  • Yeni çalıştırma isteklerini işleme - Bazen işlem hattınızda yeni çalıştırmaların başlatılmasını engellemek istersiniz.

    • Varsayılan olarak, yeni çalıştırma isteklerinin işlenmesi Etkin'dir. Bu ayar, el ile çalıştırmalar da dahil olmak üzere tüm tetikleyici türlerinin standart olarak işlenmesine olanak tanır.
    • Duraklatılan işlem hatları çalıştırma isteklerinin işlenmesine izin verir, ancak bu istekler gerçekten başlatılmadan kuyruğa alınır. Yeni istek işleme etkinleştirildiğinde, kuyruktaki ilk istekle başlayan işleme özgeçmişlerini çalıştırın.
    • Devre dışı bırakılan işlem hatları, kullanıcıların yeni çalıştırmalar başlatmasını engeller. Bu ayar uygulanırken tüm tetikleyiciler de devre dışı bırakılır. Devre dışı bırakılmış bir işlem hattı kullanan tüm derleme ilkeleri, çekme isteğine genel bakış penceresinde derleme ilkesinin yanında "Derleme sıraya alınamıyor" iletisini gösterir ve derleme ilkesinin durumu bozulur.
  • YAML dosya yolu - İşlem hattınızı farklı bir YAML dosyası kullanmaya yönlendirmeniz gerekirse, bu dosyanın yolunu belirtebilirsiniz. YAML dosyanızı taşımanız/yeniden adlandırmanız gerekiyorsa bu ayar da yararlı olabilir.

  • Bu çalıştırmaya dahil edilen iş öğelerini otomatik olarak bağla - Belirli bir işlem hattı çalıştırmasıyla ilişkili değişikliklerle ilişkili iş öğeleri olabilir. Bu iş öğelerini çalıştırmaya bağlamak için bu seçeneği belirleyin. Bu çalıştırmaya dahil edilen iş öğelerini otomatik olarak bağla seçildiğinde, belirli bir dalı veya * varsayılan olan tüm dallar için belirtmeniz gerekir. Bir dal belirtirseniz, iş öğeleri yalnızca bu dalın çalıştırmalarıyla ilişkilendirilir. belirtirseniz *, tüm çalıştırmalar için iş öğeleri ilişkilendirilir.

    Bu çalıştırmaya dahil edilen iş öğelerini otomatik olarak bağlama ayarının ekran görüntüsü.

Güvenliği yönetme

İşlem hatları giriş sayfasındaki Diğer eylemler sayfasından ve işlem hattı ayrıntıları sayfasında işlem hattı düzeyinde işlem hattı güvenliği yapılandırabilirsiniz.

İşlem hattı güvenlik menüsü seçeneklerinin ekran görüntüsü.

İşlem hattı işlemlerinizin güvenliğini desteklemek için yerleşik bir güvenlik grubuna kullanıcı ekleyebilir, bir kullanıcı veya grup için tek tek izinler ayarlayabilir veya önceden tanımlanmış rollere kullanıcı ekleyebilirsiniz. Azure Pipelines güvenliğini web portalında kullanıcı veya yönetici bağlamından yönetebilirsiniz. İşlem hattı güvenliğini yapılandırma hakkında daha fazla bilgi için bkz . İşlem hattı izinleri ve güvenlik rolleri.

Hata durumunda iş öğesi oluşturma

YAML işlem hatlarında klasik derleme işlem hatları gibi hatada iş öğesi oluşturma ayarı yoktur. Klasik derleme işlem hatları tek aşamalıdır ve Hatada iş öğesi oluşturma tüm işlem hattı için geçerlidir. YAML işlem hatları çok aşamalı olabilir ve işlem hattı düzeyi ayarı uygun olmayabilir. YAML işlem hattında hata durumunda iş öğesi oluştur'u uygulamak için, işlem hattınızda istediğiniz noktada İş Öğeleri - REST API oluştur çağrısı veya Azure DevOps CLI az boards work-item create komutu gibi yöntemleri kullanabilirsiniz.

Aşağıdaki örnekte iki iş vardır. İlk iş işlem hattının çalışmasını temsil eder, ancak başarısız olursa, ikinci iş çalışır ve işlem hattıyla aynı projede bir 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 çeşitli işlemleri kullanarak iş öğesi izlemenizi yapılandırmanıza olanak tanır. Her işlemin farklı iş öğesi türleri vardır ve her iş öğesi türü her işlemde kullanılamaz. Her işlem tarafından desteklenen iş öğesi türlerinin listesi için bkz . İş öğesi türleri (WIT).

Ö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ırırken parametresinin succeed değerini ayarlayabilirsiniz. İşlem hattının ilk işinin ikinci script adımı parametreyi succeed değerlendirir ve yalnızca false olarak ayarlandığında çalışır succeed .

İşlem hattındaki ikinci işin ilk işe bağımlılığı vardır ve yalnızca ilk iş başarısız olursa çalışır. İkinci iş, hata oluşturmak için Azure DevOps CLI az boards work-item create komutunu kullanır. Azure DevOps CLI komutlarını bir işlem hattından çalıştırma hakkında daha fazla bilgi için bkz . YAML işlem hattında komut çalıştırma.

YAML işlem hatlarında klasik derleme işlem hatları gibi hatada iş öğesi oluşturma ayarı yoktur. Klasik derleme işlem hatları tek aşamalıdır ve Hatada iş öğesi oluşturma tüm işlem hattı için geçerlidir. YAML işlem hatları çok aşamalı olabilir ve işlem hattı düzeyi ayarı uygun olmayabilir. YAML işlem hattında hata durumunda iş öğesi oluştur'u uygulamak için, işlem hattınızda istediğiniz noktada İş Öğeleri - REST API oluşturma çağrısını kullanabilirsiniz.

Aşağıdaki örnekte iki iş vardır. İlk iş işlem hattının çalışmasını temsil eder, ancak başarısız olursa, ikinci iş çalışır ve işlem hattıyla aynı projede bir 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: |
      curl \
        -X POST \
        -H 'Authorization: Basic $(System.AccessToken)' \
        -H 'Content-Type: application/json-patch+json' \
        -d '[
              {
                "op": "add",
                "path": "/fields/System.Title",
                "from": null,
                "value": "git clone failed"
              }
            ]' \
        "$(System.CollectionUri)$(System.TeamProject)/_apis//wit/workitems/$Bug?api-version=7.1-preview.3
"
    env:
        SYSTEM_ACCESSTOKEN: $(System.AccessToken)
    displayName: 'Create work item on failure'

Not

Azure Boards, Çevik veya Temel gibi çeşitli işlemleri kullanarak iş öğesi izlemenizi yapılandırmanıza olanak tanır. Her işlemin farklı iş öğesi türleri vardır ve her iş öğesi türü her işlemde kullanılamaz. Her işlem tarafından desteklenen iş öğesi türlerinin listesi için bkz . İş öğesi türleri (WIT).

Ö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ırırken parametresinin succeed değerini ayarlayabilirsiniz. İşlem hattının ilk işinin ikinci script adımı parametreyi succeed değerlendirir ve yalnızca false olarak ayarlandığında çalışır succeed .

İşlem hattındaki ikinci işin ilk işe bağımlılığı vardır ve yalnızca ilk iş başarısız olursa çalışır. İkinci iş, hata oluşturmak için Azure DevOps API az boards work-item create komutunu kullanır.

Bu örnekte iki iş kullanılır, ancak aynı yaklaşım birden çok aşamada kullanılabilir.

Not

YAML çok aşamalı işlem hatlarını destekleyen Yayın hatası oluşturma hatası gibi bir market uzantısı da kullanabilirsiniz.

Sonraki adımlar

İşlem hattınızı özelleştirmenin temellerini öğrendiniz. Ardından, kullandığınız dil için işlem hattını özelleştirme hakkında daha fazla bilgi edinmenizi öneririz:

Ci işlem hattınızı CI/CD işlem hattına büyütmek için uygulamanızı bir ortama dağıtma adımlarını içeren bir dağıtım işi de dahil edin.

Bu kılavuzdaki konular hakkında daha fazla bilgi edinmek için bkz. İşler, Görevler, Görev Kataloğu, Değişkenler, Tetikleyiciler veya Sorun Giderme.

YAML işlem hatlarında başka neler yapabileceğinizi öğrenmek için bkz . YAML şema başvurusu.