Bir işlem hattını diğerine tetikleme
Büyük ürünlerin birbirine bağımlı olan çeşitli bileşenleri vardır. Bu bileşenler genellikle bağımsız olarak oluşur. Bir yukarı akış bileşeni (örneğin, bir kitaplık) değişirse aşağı akış bağımlılıkları yeniden oluşturulmuş ve yeniden doğrulanmalı.
Böyle durumlarda, tetikleyici işlem hattının başarıyla tamamlanmasının ardından işlem hattınızı çalıştırmak için bir işlem hattı tetikleyicisi ekleyin.
Not
Daha önce YAML işlem hattınız için klasik düzenleyiciye ve kullanıcı arabiriminde derleme tamamlama tetikleyicilerini yapılandırmış olabilirsiniz. Bu model hala çalışır ancak artık önerilmez. Önerilen yaklaşım, işlem hattı tetikleyicilerini doğrudan YAML dosyasında belirtmektir. Klasik düzenleyicide tanımlanan derleme tamamlama tetikleyicilerinin çeşitli dezavantajları vardır ve bu dezavantajlar artık işlem hattı tetikleyicilerinde giderildi. Örneğin, derleme tamamlama tetikleyicilerini kullanarak işlem hattını tetikleyen işlem hattıyla aynı dalda işlem hattını tetiklemenin hiçbir yolu yoktur.
İşlem hattı kaynak tetikleyicilerini yapılandırma
Başka bir işlem hattı tamamlandıktan sonra işlem hattını tetiklemek için, tetikleyici işlem hattını işlem hattı kaynağı olarak belirtin.
Aşağıdaki örnekte iki işlem hattı vardır: (YAML kod parçacığı tarafından tanımlanan işlem hattı) ve (işlem hattı kaynağı tarafından başvurulan tetikleyici app-cisecurity-lib-ci işlem hattı). Yeni bir sürümü app-ci her 40.000.000'den sonra işlem hattının otomatik olarak security-lib-ci çalışmasına izin ve saat 20:00'de yeni bir sürümü oluşturulur.
# 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 işlem hattı kaynak değişkenleri gibi işlem hattının diğer kısımlarından işlem hattı kaynağına başvurulsa kullanılır.source: security-lib-ci, bu işlem hattı kaynağı tarafından başvurulan işlem hattının adını belirtir. bir işlem hattının adını, Azure DevOps portaldan giriş sayfası gibi çeşitli Pipelines edinebilirsiniz. Varsayılan olarak, işlem hatları işlem hattını içeren depodan sonra adlandırılmıştır. İşlem hattının adını güncelleştirmek için bkz. İşlem hattı ayarları.project: FabrikamProject- Tetiklenen işlem hattı başka bir Azure DevOps projesinde ise proje adını belirtmeniz gerekir. Hem kaynak işlem hattı hem de tetiklenen işlem hattı aynı projede yer aldısa 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öz dizimi kullanın. Tamamlayan kaynak işlem hattının hangi sürümlerinin çalıştırmayı tetikleyeceklerini filtrelemeyi öğrenmek için bu makaledeki aşağıdaki bölümlere bakın. Filtreler belirtilirken, bir çalıştırmayı tetiklemek için kaynak işlem hattı çalıştırması tüm filtrelerle eşleşmeli.
Tetiklenen işlem hattı ve tetiklenen işlem hattı aynı depoyu kullanıyorsa, biri diğeri tetiklese her iki işlem hattı da aynı işleme kullanılarak çalıştırıldı. İlk işlem hattınız kodu derlemek ve ikinci işlem hattı bunu test etmek için bu yararlı olur. Ancak, iki işlem hattı farklı depolar kullanıyorsa, tetiklenen işlem hattı, aşağıdaki İşlem hattı tamamlama tetikleyicileri için dalda dikkat edilmesi gerekenler bölümünde açıklandığı gibi el ile ve zamanlanmış derlemeler ayarı için Varsayılan dal tarafından belirtilen dalda kodun sürümünü kullanır.
Dal filtreleri
İsteğe bağlı olarak, tetikleyiciyi yapılandırarak dahil etmek veya dışlamak için dalları belirtsiniz. Dal filtrelerini belirtirsiniz, 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 hattı, app-ci dışında herhangi bir security-lib-ci dalda releases/* tamamlanırsa releases/old* çalışır.
# 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 filtreleriniz çalışmıyorsa ön ekini kullanmayı refs/heads/ deneyin. Örneğin yerine refs/heads/releases/old*releases/old* kullanın.
Etiket filtreleri
İşlem tags hattı tamamlama trigger olaylarının işlem hattınızı tetikleyilebilecek filtrelerin özelliği. Tetiklenen işlem hattı, listede yer alan tüm etiketlerle tags eşlenirse 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 da bir özelliği tags vardır. İşlem hattı kaynağının özelliği, işlem hattının el ile veya zamanlanmış bir tetikleyici tarafından ne zaman tetiklendiğinden, yapıtların hangi işlem hattı çalıştırmalarından tags alınacaklarını belirlemek için kullanılır. Daha fazla bilgi için bkz. Kaynaklar: işlem hatları ve Yapıt sürümünün değerlendirilmesi.
Aşama filtreleri
Not
İşlem hattı kaynak tetikleyicileri için aşama filtreleri için 2020 Azure DevOps Server 1 veya daha büyük bir güncelleştirme gerekir.
Filtreyi kullanarak tetikleyici işlem hattının bir veya daha fazla aşaması tamamlandığında işlem hattınızı stages tetiklersiniz. Birden çok aşama sağlarsanız, listelenen tüm aşamalar tamamlandığında tetiklenen işlem hattı ç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.
Dalda dikkat edilmesi gerekenler
İşlem hattı tamamlama tetikleyicileri, başka bir işlem hattının tamamlanmasının sonucu olarak bir işlem hattının çalıştırıp çalıştırılamaymayacaklarını belirlerken değerlendirilecek YAML işlem hattının dal filtrelerinin hangi dal sürümünün olduğunu belirlemek üzere el ile ve zamanlanmış derlemeler için Varsayılan dal ayarını kullanır. Varsayılan olarak bu ayar deponun varsayılan dalını kullanır.
İşlem hattı tamamlandığında, Azure DevOps çalışma zamanı, işlem hattı tamamlama tetikleyicileri ile tamamlanan işlem hattına başvurulan işlem hattı kaynak tetikleyicisi dal filtrelerini değerlendirir. İşlem hattının farklı dallarda birden çok sürümü olabilir, bu nedenle çalışma zamanı el ile ve zamanlanmış derlemeler için Varsayılan dal ayarı tarafından belirtilen dalda işlem hattı sürümündeki dal filtrelerini değerlendirir. Bir eşleşme varsa işlem hattı çalışır, ancak tetiklenen işlem hattının tamamlanan işlem hattıyla aynı depoda olup olmadığını bağlı olarak çalıştıran işlem hattının sürümü farklı bir dalda olabilir.
- İki işlem hattı farklı depolarda yer aldısa, el ile ve zamanlanmış derlemeler için Varsayılan dal tarafından belirtilen dalda tetiklenen işlem hattı sürümü çalıştırıldı.
- İki işlem hattı aynı depoda yer aldısa, tetiklenen işlem hattı sürümü, tetiklenen işlem hattı sürümü, el ile ve zamanlanmış derlemeler için Varsayılan daldan farklı olsa bile ve bu sürüm tamamlanan işlem hattının dalıyla eşleyen dal filtrelerine sahip olsa bile, çalıştırıldı. Bunun nedeni, tamamlanan işlem hattı dalın sürümündeki dal filtrelerinin değil, el ile ve zamanlanmış derlemeler dalın varsayılan daldan gelen dal filtrelerinin, işlem hattının çalıştırı olup olmadığını belirlemek için kullanılmış olmasıdır.
İşlem hattı tamamlama tetikleyicileri tetikli görünmüyorsa tetiklenen işlem hattı için El ile ve zamanlanmış derlemeler için Varsayılan dal ayarının değerini kontrol edin. İşlem hattı tamamlama tetikleyicisi işlem hattının bir çalıştırması başlatıp başlatmay olmadığını belirlemek için bu dalın işlem hattının sürümündeki dal filtreleri kullanılır. Varsayılan olarak, el ile ve zamanlanmış derlemeler için Varsayılan dal deponun varsayılan dalı olarak ayarlanır, ancak işlem hattı oluşturulduktan sonra bunu değiştirebilirsiniz.
İşlem hattı tamamlama tetikleyicisi tetiklendiğinde tipik bir senaryo, yeni bir dal oluşturulduğunda işlem hattı tamamlama tetikleyicisi dal filtreleri bu yeni dalı içerecek şekilde değiştirilir, ancak yeni dal filtreleriyle eşleşen bir dalda ilk işlem hattı tamamlandığında ikinci işlem hattı tetiklenir. El ile ve zamanlanmış derlemeler dalı için Varsayılan dalda işlem hattı sürümündeki dal filtreleri yeni dalla eşleşmezse bu durum gerçekleşir. Bu tetikleyici sorununu çözmek için aşağıdaki iki seçeneği kullanabilirsiniz.
- El ile ve zamanlanmış derlemeler dalı için Varsayılan dalda işlem hattında dal filtrelerini yeni dalı eşleyecek şekilde güncelleştirin.
- El ile ve zamanlanmış derlemeler için Varsayılan dal ayarını, yeni dala uyan dal filtreleriyle işlem hattının sürümüne sahip bir dala güncelleştirin.
El ile ve zamanlanmış derlemeler ayarı için varsayılan dal
El ile ve zamanlanmış derlemeler için Varsayılan dal ayarını görüntülemek ve güncelleştirmek için:
İşlem hattınıza ilişkin işlem hattı ayrıntılarına gidin ve Düzenle'yi seçin.
... ve Tetikleyiciler'i seçin.
YAML,Kaynakları al'ıseçin ve el ile ve zamanlanmış derlemeler için Varsayılan dal ayarını görüntü. Değiştirirsanız, değişikliği kaydetmek için Sırası kaydet veya Kaydet'i seçin.
Tetikleyici türlerini birleştirme
İşlem hattınıza hem CI tetikleyicilerini hem de işlem hattı tetikleyicilerini belirttiğinizde, CI tetikleyicisi filtrelerle eşleşen bir anında İlerlendiğinde ve işlem hattı tamamlama tetikleyicisi filtreleriyle eşleşen kaynak işlem hattının bir çalıştırması tamamlandığında yeni çalıştırmaların başlatlanmasını bekleyebilirsiniz.
Örneğin, adlı ve aynı depoda yer alan iki işlem hattının her ikisinin de CI tetikleyicileri olduğunu ve işlem hattının tamamlanması için yapılandırılmış bir işlem hattı tamamlama ABB tetikleyicisi olduğunu A düşünün. Depoya bir itmede yer asanız:
- CI tetikleyicisi
Atemel alarak yeni bir çalıştırması başlatıldı. - Aynı zamanda, CI tetikleyicisi temel
Balarak yeni bir çalıştırması da başlatıldı. Bu çalıştırma, işlem hattının önceki bir çalıştırması olan yapıtlarıAtüketir. - Tamamlandığında,
Aiçinde işlem hattı tamamlama tetikleyicisi temel alarak başka birBçalıştırmayıBtetikler.
Bu örnekte iki çalıştırmayı B tetiklemeyi önlemek için CI tetikleyicisini veya işlem hattı tetikleyicisini kaldırmanız gerekir.