Diğerinden sonra bir işlem hattı tetikleyin

Büyük ürünlerin birbirlerine bağımlı birçok bileşeni vardır. Bu bileşenler genellikle bağımsız olarak oluşturulur. Bir yukarı akış bileşeni (örneğin, bir kitaplık) değiştiğinde, aşağı akış bağımlılıklarının yeniden oluşturulması ve yeniden doğrulanması gerekir.

Bunlar gibi durumlarda, tetikleme işlem hattının başarıyla tamamlanmasından sonra işlem hattınızı çalıştırmak için bir işlem hattı tetikleyicisi ekleyin.

Not

Daha önce, YAML işlem hattınızda klasik düzenleyiciye ve Kullanıcı arabiriminde yapılandırılmış Yapı tamamlama tetikleyicilerine gezinilebilir olabilirsiniz. Model hala çalışmaya devam ederken, artık önerilmez. Önerilen yaklaşım, doğrudan YAML dosyasının içinde işlem hattı Tetikleyicileri belirtmektir. Klasik düzenleyicide tanımlanan derleme tamamlanma Tetikleyicileri, ardışık düzen tetikleyicilerinde daha fazla sakıncaları olan çeşitli dezavantajları vardır. Örneğin, yapı tamamlama Tetikleyicileri kullanan tetikleme ardışık düzeninde aynı dalda bir işlem hattını tetiklemenin bir yolu yoktur.

İşlem hattı kaynak tetikleyicilerini yapılandırma

Bir işlem hattını başka bir işlem hattının tamamlanmasından sonra tetiklemek için, tetikleme işlem hattını bir işlem hattı kaynağıolarak belirtin.

Aşağıdaki örnekte iki işlem hattı vardır app-ci (YAML kod parçacığı tarafından tanımlanan işlem hattı) ve (işlem hattı security-lib-ci kaynağı tarafından başvurulan tetikleme işlem hattı). app-ciHer yeni sürümü oluşturulduğunda işlem hattının otomatik olarak çalışmasını istiyoruz security-lib-ci .

# this is being defined in app-ci pipeline
resources:
  pipelines:
  - pipeline: securitylib   # Internal name of the source pipeline, used elsewhere within app-ci YAML 
                            # e.g. to reference published artifacts
    source: security-lib-ci # Azure Pipelines name of the source pipeline referenced
    project: FabrikamProject # Required only if the source pipeline is in another project
    trigger: true # Run app-ci pipeline when any run of security-lib-ci completes
  • pipeline: securitylib işlem hattı kaynağının adını belirtir ve ardışık düzen kaynak değişkenleri gibi işlem hattının diğer parçalarından işlem hattı kaynağına başvururken kullanılır.

  • source: security-lib-ci Bu işlem hattı kaynağı tarafından başvurulan işlem hattının adını belirtir. Azure DevOps portalından bir işlem hattının adını Pipelines giriş sayfasıgibi birkaç yerde alabilirsiniz. Varsayılan olarak, işlem hattı, işlem hattını içeren depodan sonra adlandırılır. Bir işlem hattının adını güncelleştirmek için bkz. işlem hattı ayarları.

  • project: FabrikamProject-tetikleme işlem hattı başka bir Azure DevOps projesinde ise, proje adını belirtmeniz gerekir. Kaynak ardışık düzen ve tetiklenen işlem hattı aynı projem ise bu özellik isteğe bağlıdır.

  • trigger: true -Kaynak işlem hattının herhangi bir sürümü tamamlandığında işlem hattını tetiklemek için bu sözdizimini kullanın. Kaynak işlem hattının hangi sürümlerinin bir çalıştırma tetikleyeceğini nasıl filtreleyeceğinizi öğrenmek için bu makaledeki aşağıdaki bölümlere bakın. Filtreler belirtildiğinde, kaynak işlem hattı çalışmasının bir çalıştırma tetiklemesi için tüm filtrelerle eşleşmesi gerekir.

Tetikleme işlem hattı ve tetiklenen işlem hattı aynı Depoyu kullanıyorsa, her iki işlem hattı diğeri tetiklendiğinde aynı işleme kullanılarak çalıştırılır. Bu, ilk işlem hattınızda kodu derleme ve ikinci ardışık düzen tarafından test olduğu durumlarda faydalıdır. Ancak, iki işlem hattı farklı depolar kullanıyorsa, tetiklenen işlem hattı, ardışık düzen tamamlama Tetikleyicileri için aşağıdaki dal hususları bölümünde açıklandığı gibi, el ile ve zamanlanmış derlemeler için varsayılan dal tarafından belirtilen dalda kod sürümünü kullanır.

Dal filtreleri

İsterseniz tetikleyiciyi yapılandırırken dahil edilecek veya hariç tutulacak dalları belirtebilirsiniz. Dal filtrelerini belirtirseniz, dal filtreleriyle eşleşen bir kaynak işlem hattı çalıştırması başarıyla tamamlandığında yeni bir işlem hattı tetiklenir. Aşağıdaki örnekte işlem app-ci hattı, security-lib-ci dışında herhangi bir dalda tamamlanırsa çalışır releases/* releases/old* .

# this is being defined in app-ci pipeline
resources:
  pipelines:
  - pipeline: securitylib
    source: security-lib-ci
    trigger: 
      branches:
        include: 
        - releases/*
        exclude:
        - releases/old*

Not

Dal filtrelerinizin çalışmaması durumunda, öneki kullanmayı deneyin refs/heads/ . Örneğin, yerine kullanın refs/heads/releases/old* releases/old* .

Etiket filtreleri

İşlem tags trigger hattı tamamlanma olaylarının işlem hattınızı tetikleyebileceği filtrelerin özelliği. Tetikleme işlem hattı listedeki tüm etiketlerle eşleşiyorsa tags , işlem hattı çalışır.

resources:
  pipelines:
  - pipeline: MyCIAlias
    source: Farbrikam-CI
    trigger:
      tags:        # This filter is used for triggering the pipeline run
      - Production # Tags are AND'ed
      - Signed

Not

İşlem hattı kaynağının bir özelliği de vardır tags . tagsİşlem hattı kaynak özelliği, ardışık düzenin el ile veya zamanlanmış bir tetikleyici tarafından tetiklendiği zaman, hangi işlem hattının yapıların hangi işlem hattına alındığını belirlemekte kullanılır. Daha fazla bilgi için bkz. Kaynaklar: işlem hatları ve yapıt sürümünün değerlendirmesi.

Aşama filtreleri

Filtre kullanarak tetikleme ardışık düzeninin bir veya daha fazla aşaması tamamlandığında işlem hattınızı tetikleyebilirsiniz stages . Birden çok aşama sağlarsanız, tetiklenen işlem hattı, listelenen tüm aşamalar tamamlandığında çalışır.

resources:
  pipelines:
  - pipeline: MyCIAlias  
    source: Farbrikam-CI  
    trigger:    
      stages:         # This stage filter is used when evaluating conditions for 
      - PreProduction # triggering your pipeline. On successful completion of all the stages
      - Production    # provided, your pipeline will be triggered. 

Dal konuları

Ardışık düzen tamamlama Tetikleyicileri, başka bir ardışık düzenin sonucu olarak bir işlem hattının çalıştırılıp çalıştırılmayacağı belirlenirken, bir YAML işlem hattının dal filtreleri Için varsayılan dalı kullanır. Varsayılan olarak, bu ayar deponun varsayılan dalını gösterir.

işlem hattı tamamlandığında, Azure DevOps çalışma zamanı, tamamlanan işlem hattına başvuruda bulunan işlem hattı tamamlanma tetikleyicilerine sahip herhangi bir işlem hattının işlem hattı kaynak tetikleme dal filtrelerini değerlendirir. İşlem hattının farklı dallarda birden çok sürümü olabilir, bu nedenle çalışma zamanı, el ile ve zamanlanan derlemeler Için varsayılan dal tarafından belirtilen daldaki işlem hattı sürümünde dal filtrelerini değerlendirir. Bir eşleşme varsa, işlem hattı çalışır, ancak tetiklenen işlem hattının sürümü, tamamlanan işlem hattı ile aynı depoda olup olmadığına bağlı olarak farklı bir dalda olabilir.

  • İki işlem hattı farklı depolarda ise, el ile ve zamanlanan derlemeler Için varsayılan dal tarafından belirtilen dalda tetiklenen işlem hattı sürümü çalıştırılır.
  • İki işlem hattı aynı depoda ise, bu dal el ile ve zamanlanan derlemeler Için varsayılan daldan farklı olsa da, bu sürüm, tamamlanan işlem hattının dalında eşleşen dal filtreleri olmasa bile, tetikleme işlem hattı ile aynı daldaki tetiklenen işlem hattı sürümü çalıştırılır. Bunun nedeni, el ile ve zamanlanan derlemeler Için varsayılan daldan dal filtrelerinin, tamamlanan işlem hattı dalında bulunan sürümde dal filtrelemeden önce değil, işlem hattının çalışacağını tespit etmek için kullanılır.

İşlem hattı tamamlanma tetiklerinizin tetiklenmesi gerekmiyorsa, tetiklenen işlem hattı için el ile ve zamanlanmış yapılar ayarı Için varsayılan dalın değerini denetleyin. İşlem hattı tamamlanma tetikleyicisinin işlem hattının çalıştırılmasını başlatıp başlatmadığını belirlemekte kullanılan dal filtrelerinin işlem hattı sürümü. Varsayılan olarak, el ile ve zamanlanan derlemeler Için varsayılan dal deponun varsayılan dalına ayarlanır, ancak işlem hattı oluşturulduktan sonra bunu değiştirebilirsiniz.

Ardışık düzen tamamlama tetikleyicisinin tetiklemediği tipik bir senaryo, yeni bir dal oluşturulduğunda, işlem hattı tamamlanma tetikleme dalı filtreleri bu yeni dalı içerecek şekilde değiştirilir, ancak ilk işlem hattı yeni dal filtreleriyle eşleşen bir dalda tamamlandığında ikinci işlem hattı tetiklemez. Bu durum, el ile ve zamanlanan derlemeler Için varsayılan daldaki işlem hattı sürümünde dal filtreleri yeni Dalla eşleşmez. Bu tetikleyici sorununu çözmek için aşağıdaki iki seçeneğe sahip olursunuz.

  • Yeni Dalla eşleşecek şekilde el ile ve zamanlanmış yapılar dalı Için varsayılan daldaki işlem hattındaki dal filtrelerini güncelleştirin.
  • El ile ve zamanlanan derlemeler Için varsayılan dalı , yeni Dalla eşleşen dal filtreleri ile işlem hattının bir sürümüne sahip bir dala güncelleştirin.

El ile ve zamanlanan derlemeler için varsayılan dal ayarı

El ile ve zamanlanmış yapılar ayarının varsayılan dalını görüntülemek ve güncelleştirmek için:

  1. İşlem hattınızda işlem hattı ayrıntılarına gidin ve Düzenle' yi seçin.

    İşlem hattını düzenleyin.

  2. .. . Öğesini seçin ve Tetikleyiciler' i seçin.

    Tetikleyicileri düzenleyin.

  3. YAML, kaynakları al' ı seçin ve el ile ve zamanlanmış yapılar ayarı için varsayılan dalı görüntüleyin. Değişiklik yaparsanız, değişikliği kaydetmek için Kaydet veya & kuyruğu Kaydet ' i seçin.

    El ile ve zamanlanmış derlemeler ayarı için varsayılan dal.

Tetikleyici türlerini birleştirme

İşlem hattınızda hem CI Tetikleyicileri hem de işlem hattı Tetikleyicileri belirttiğinizde, CI tetikleyicisinin filtreleriyle eşleşen her gönderim yapıldığında yeni çalıştırmanın başlatılmasını bekleyebilir ve bu işlem hattı tamamlama tetikleyicisinin filtreleriyle eşleşen kaynak işlem hattının bir çalıştırması tamamlanır.

Örneğin, adlı ve aynı depoda bulunan iki işlem hattını düşünün A B , her IKISI de CI tetikleyicilerine sahiptir ve işlem B hattının tamamlanması için yapılandırılmış bir ardışık düzen tamamlama tetikleyicisi vardır A . Depoya gönderim yaparsanız:

  • ACI tetikleyicisine göre yeni bir çalıştırması başlatılır.
  • Aynı zamanda, B CI tetikleyicisine göre yeni bir çalıştırması başlatılır. Bu çalıştırma, önceki bir işlem hattı çalıştırmasıyla yapıtları tüketir A .
  • ATamamlandığında, B içindeki işlem hattı tamamlanma tetikleyicisine bağlı olarak başka bir çalıştırmasını tetikler B .

Bu örnekte iki çalıştırmanın tetiklenmasını engellemek için B , CI tetikleyicisi veya işlem hattı tetikleyicisi ' ni kaldırmanız gerekir.