İşlem hatları için zamanlamaları yapılandırma

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

Azure Pipelines, işlem hattınızın nasıl başlayacağını yapılandırmak için çeşitli tetikleyici türleri sağlar.

  • Zamanlanmış tetikleyiciler, işlem hattınızı gece derlemesi gibi bir zamanlamaya göre başlatır. Bu makale, işlem hatlarınızı bir zamanlamaya göre çalıştırmak için zamanlanmış tetikleyicileri kullanma konusunda rehberlik sağlar.
  • Olay tabanlı tetikleyiciler, çekme isteği oluşturma veya dala gönderme gibi olaylara yanıt olarak işlem hattınızı başlatır. Olay tabanlı tetikleyicileri kullanma hakkında bilgi için bkz . Azure Pipelines'da tetikleyiciler.

İşlem hatlarınızda zamanlanmış ve olay tabanlı tetikleyicileri birleştirebilirsiniz; örneğin, her gönderim yapıldığında (CI tetikleyicisi), çekme isteği yapıldığında (ÇEKME isteği tetikleyicisi) ve gecelik derlemeyi (Zamanlanmış tetikleyici) doğrulamak için. İşlem hattınızı olay tabanlı tetikleyicilere yanıt olarak değil yalnızca bir zamanlamaya göre oluşturmak istiyorsanız, işlem hattınızda başka tetikleyicilerin etkinleştirilmediğinden emin olun. Örneğin, GitHub deposundaki YAML işlem hatlarında CI tetikleyicileri ve PR tetikleyicileri varsayılan olarak etkindir. Varsayılan tetikleyicileri devre dışı bırakma hakkında bilgi için bkz . Azure Pipelines'ta tetikleyiciler ve deponuzun türünü kapsayan bölüme gidin.

Zamanlanmış tetikleyiciler

Önemli

İşlem hattı ayarları kullanıcı arabirimi kullanılarak tanımlanan zamanlanmış tetikleyiciler YAML zamanlanmış tetikleyicilerinden önceliklidir.

YAML işlem hattınızda hem YAML zamanlanmış tetikleyicileri hem de Kullanıcı Arabirimi tanımlı zamanlanmış tetikleyiciler varsa, yalnızca Kullanıcı Arabirimi tanımlı zamanlanmış tetikleyiciler çalıştırılır. YAML işlem hattınızda YAML tanımlı zamanlanmış tetikleyicileri çalıştırmak için işlem hattı ayarları kullanıcı arabiriminde tanımlanmış zamanlanmış tetikleyicileri kaldırmanız gerekir. Tüm kullanıcı arabirimi zamanlanmış tetikleyicileri kaldırıldıktan sonra, YAML zamanlanmış tetikleyicilerinin değerlendirilmeye başlaması için bir gönderim yapılmalıdır.

YAML işlem hattından kullanıcı arabirimi zamanlanmış tetikleyicilerini silmek için bkz . UI ayarları YAML zamanlanmış tetikleyicilerini geçersiz kılma.

Zamanlanmış tetikleyiciler, bir işlem hattını cron söz dizimi kullanılarak tanımlanan bir zamanlamaya göre çalışacak şekilde yapılandırmaktadır.

schedules:
- cron: string # cron syntax defining a schedule
  displayName: string # friendly name given to a specific schedule
  branches:
    include: [ string ] # which branches the schedule applies to
    exclude: [ string ] # which branches to exclude from the schedule
  always: boolean # whether to always run the pipeline or only if there have been source code changes since the last successful scheduled run. The default is false.
schedules:
- cron: string # cron syntax defining a schedule
  displayName: string # friendly name given to a specific schedule
  branches:
    include: [ string ] # which branches the schedule applies to
    exclude: [ string ] # which branches to exclude from the schedule
  always: boolean # whether to always run the pipeline or only if there have been source code changes since the last successful scheduled run. The default is false.
  batch: boolean # Whether to run the pipeline if the previously scheduled run is in-progress; the default is false.
  # batch is available in Azure DevOps Server 2022.1 and higher

YAML'de zamanlanmış işlem hatları aşağıdaki kısıtlamalara sahiptir.

  • Cron zamanlamalarının saat dilimi UTC'dir.
  • için branchesyan tümcesi olmayan bir includeexclude yan tümce belirtirseniz, yan tümcesinde belirtmeye include* eşdeğerdir.
  • Zamanlamaları belirtirken işlem hattı değişkenlerini kullanamazsınız.
  • YAML dosyanızda şablonlar kullanıyorsanız zamanlamaların şablon dosyalarında değil ana YAML dosyasında belirtilmesi gerekir.

Zamanlanmış tetikleyiciler için dal konuları

Zamanlanan tetikleyiciler, aşağıdaki olaylar gerçekleştiğinde bir dal için değerlendirilir.

  • bir işlem hattı oluşturulur.
  • İşlem hattının YAML dosyası, bir gönderimden veya işlem hattı düzenleyicisinde düzenlenerek güncelleştirilir.
  • İşlem hattının YAML dosya yolu, farklı bir YAML dosyasına başvuracak şekilde güncelleştirilir. Bu değişiklik yalnızca varsayılan dalı güncelleştirir ve bu nedenle yalnızca varsayılan dal için güncelleştirilmiş YAML dosyasındaki zamanlamaları alır. Diğer dallardan herhangi biri daha sonra varsayılan dalı birleştirirse, örneğin git pull origin main, yeni başvurulan YAML dosyasından zamanlanan tetikleyiciler bu dal için değerlendirilir.
  • Yeni bir dal oluşturulur.

Bu olaylardan biri bir dalda gerçekleştikten sonra, bu dal için zamanlanmış tüm çalıştırmalar eklenir. Bu dal, söz konusu daldaki YAML dosyasında yer alan zamanlanmış tetikleyiciler için dal filtreleri ile eşleşirse.

Önemli

Bir dal için zamanlanmış çalıştırmalar yalnızca dal, söz konusu daldaki YAML dosyasındaki zamanlanmış tetikleyiciler için dal filtreleri ile eşleşiyorsa eklenir.

Örneğin, aşağıdaki zamanlamayla bir işlem hattı oluşturulur ve YAML dosyasının bu sürümü dalda main denetlener. Bu zamanlama, dalı main günlük olarak oluşturur.

# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

Ardından, adlı öğesini new-featuretemel alan mainyeni bir dal oluşturulur. Yeni daldaki YAML dosyasından zamanlanmış tetikleyiciler okunur ve dal için new-feature eşleşme olmadığından, zamanlanmış derlemelerde değişiklik yapılmaz ve new-feature dal zamanlanmış tetikleyici kullanılarak oluşturulmaz.

Listeye eklenirse branches ve bu değişiklik dala iletilirse new-featurenew-feature YAML dosyası okunur ve new-feature artık dal listesinde olduğundan dal için new-feature zamanlanmış bir derleme eklenir.

# YAML file in the new-feature-branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
    - new-feature

Şimdi adlı release bir dalın temelinde mainoluşturulduğunu ve ardından release daldaki YAML dosyasındaki main dal filtrelerine eklendiğini, ancak yeni oluşturulan release dala eklenmediğini düşünün.

# YAML file in the release branch
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

# YAML file in the main branch with release added to the branches list
schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
    - release

Daldaki release dal filtrelerine eklendiğinden main ancak daldaki release dal filtrelerine eklenmediğinden, release dal bu zamanlamaya göre derlenmez. Yalnızca dal, yayın dalındaki YAML dosyasındaki dal filtrelerine eklendiğinde release zamanlanan derleme zamanlayıcıya eklenir.

Zamanlanmış tetikleyiciler için toplu iş konuları

Not

batch özelliği Azure DevOps Server 2022.1 ve üzeri sürümlerde kullanılabilir.

özelliği, batch önceden zamanlanmış çalıştırma devam ediyorsa işlem hattının çalıştırılıp çalıştırılmayacağını yapılandırmaktadır; varsayılan değerdir false. Bu işlem hattı deposunun sürümünden bağımsızdır.

Aşağıdaki tabloda nasıl always ve batch etkileşimli çalışıldığı açıklanmaktadır.

Her zaman Batch Davranış
false false İşlem hattı yalnızca son başarılı zamanlanmış işlem hattı çalıştırmasıyla ilgili bir değişiklik olduğunda çalışır.
false true İşlem hattı yalnızca son başarılı zamanlanmış işlem hattı çalıştırmasıyla ilgili bir değişiklik olduğunda ve devam eden zamanlanmış işlem hattı çalıştırması olmadığında çalışır.
true false İşlem hattı, cron zamanlamasına göre çalışır.
true true İşlem hattı, cron zamanlamasına göre çalışır.

Önemli

olduğunda alwaystrueişlem hattı, olduğunda bile batchtruecron zamanlamasına göre çalışır.

Build.CronSchedule.DisplayName değişkeni

Not

Build.CronSchedule.DisplayName değişkeni Azure DevOps Server 2022.1 ve üzeri sürümlerde kullanılabilir.

Bir işlem hattı, cron zamanlanmış tetikleyicisi nedeniyle çalıştığında, önceden tanımlanmış Build.CronSchedule.DisplayName değişken işlem hattı çalıştırmasını displayName tetikleyen cron zamanlamasını içerir.

YAML işlem hattınız birden çok cron zamanlaması içerebilir ve işlem hattınızın, hangi cron zamanlamasının çalıştırıldığına bağlı olarak farklı aşamaları veya işleri çalıştırmasını isteyebilirsiniz. Örneğin, bir gecelik derlemeniz ve haftalık bir derlemeniz vardır ve belirli bir aşamayı yalnızca gece derlemesi sırasında çalıştırmak istersiniz. Bu işin mi yoksa aşamanın Build.CronSchedule.DisplayName mı çalıştırıldığını belirlemek için bir iş veya aşama koşulunda değişkenini kullanabilirsiniz.

- stage: stage1
  # Run this stage only when the pipeline is triggered by the 
  # "Daily midnight build" cron schedule
  condition: eq(variables['Build.CronSchedule.DisplayName'], 'Daily midnight build')

Daha fazla örnek için bkz . schedules.cron örnekleri.

Zamanlanmış derlemeler Azure DevOps Server 2019'da YAML söz diziminde desteklenmez. YAML derleme işlem hattınızı oluşturduktan sonra, zamanlanmış bir tetikleyici belirtmek için işlem hattı ayarlarını kullanabilirsiniz.

Örnekler

Aşağıdaki örnek iki zamanlamayı tanımlar:

schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main
    - releases/*
    exclude:
    - releases/ancient/*
- cron: '0 12 * * 0'
  displayName: Weekly Sunday build
  branches:
    include:
    - releases/*
  always: true

İlk zamanlama olan Günlük gece yarısı derlemesi, her gün gece yarısı bir işlem hattı çalıştırır, ancak yalnızca kodun son başarılı zamanlanan çalıştırmadan sonra değiştiğinde ve main altındaki releases/ancient/*dallar dışında tüm releases/* dallarda çalışır.

İkinci zamanlama olan Haftalık Pazar derlemesi, kodun son çalıştırmadan bu yana değişip değişmediği, tüm releases/* dallar için pazar günleri öğle saatlerinde bir işlem hattı çalıştırır.

Not

Cron zamanlamalarının saat dilimi UTC'dir, bu nedenle bu örneklerde gece yarısı derlemesi ve öğle derlemesi UTC'de gece yarısı ve öğle şeklindedir.

Daha fazla örnek için bkz . Klasik düzenleyiciden geçiş.

Zamanlanmış derlemeler Azure DevOps Server 2019'da YAML söz diziminde desteklenmez. YAML derleme işlem hattınızı oluşturduktan sonra, zamanlanmış bir tetikleyici belirtmek için işlem hattı ayarlarını kullanabilirsiniz.

Cron söz dizimi

Her Azure Pipelines zamanlanmış tetikleyici cron ifadesi, aşağıdaki sırayla beş giriş içeren, boşlukla ayrılmış bir ifadedir. İfade tek tırnak 'içine alınır.

mm HH DD MM DW
 \  \  \  \  \__ Days of week
  \  \  \  \____ Months
   \  \  \______ Days
    \  \________ Hours
     \__________ Minutes
Alan Kabul edilen değerler
Dakika 0 ile 59 arasında
Saat 0 ile 23 arasında
Gün 1 ile 31 arasında
Aylar 1 ile 12 arasında, tam İngilizce adlar, İngilizce adlarının ilk üç harfi
Haftanın günleri 0 ile 6 (Pazar'dan başlayarak), tam İngilizce adlar, İngilizce adların ilk üç harfi

Değerler aşağıdaki biçimlerde olabilir.

Biçim Örnek Açıklama
Joker karakter * Bu alanın tüm değerleriyle eşleşir
Tek değer 5 Bu alan için tek bir değer belirtir
Virgülle ayrılmış 3,5,6 Bu alan için birden çok değer belirtir. Birden çok biçim birleştirilebilir, örneğin 1,3-6
Aralıklar 1-3 Bu alan için kapsayıcı değer aralığı
Aralıklar */4 veya 1-5/2 Her dördüncü değer veya adım aralığı 2 olan 1-5 aralığı gibi, bu alan için eşleşme aralıkları
Örnek Cron ifadesi
Her Pazartesi, Çarşamba ve Cuma günü saat 18:00'de derleme 0 18 * * Mon,Wed,Fri, 0 18 * * 1,3,5 veya 0 18 * * 1-5/2
6 saatte bir derleme 0 0,6,12,18 * * *veya 0 */6 * * *0 0-18/6 * * *
09:00'dan başlayarak 6 saatte bir derleme 0 9,15,21 * * * veya 0 9-21/6 * * *

Desteklenen biçimler hakkında daha fazla bilgi için bkz . Crontab İfadesi.

Zamanlanmış derlemeler Azure DevOps Server 2019'da YAML söz diziminde desteklenmez. YAML derleme işlem hattınızı oluşturduktan sonra, zamanlanmış bir tetikleyici belirtmek için işlem hattı ayarlarını kullanabilirsiniz.

Zamanlanmış çalıştırmalar görünümü

İşlem hattınızın işlem hattı ayrıntıları sayfasındaki bağlam menüsünden Zamanlanmış çalıştırmalar'ı seçerek yaklaşan zamanlanmış derlemelerin önizlemesini görüntüleyebilirsiniz.

Önemli

Zamanlanan çalıştırmalar görünümü yalnızca geçerli tarihten itibaren yedi gün içinde çalışacak şekilde zamanlanmış işlem hatlarını gösterir. Cron zamanlamanızın aralığı 7 günden uzunsa ve sonraki çalıştırma geçerli tarihten yedi gün sonra başlayacak şekilde zamanlandıysa, zamanlanmış çalıştırmalar görünümünde görüntülenmez.

Zamanlanmış çalıştırmalar menüsü

Zamanlanmış tetikleyicilerinizi oluşturduktan veya güncelleştirdikten sonra bu görünümü kullanarak doğrulayabilirsiniz.

Zamanlanmış çalıştırmalar

Bu örnekte, aşağıdaki zamanlama için zamanlanmış çalıştırmalar görüntülenir.

schedules:
- cron: '0 0 * * *'
  displayName: Daily midnight build
  branches:
    include:
    - main

Zamanlanan çalıştırmalar pencereleri, Azure DevOps portalına göz atmak için kullanılan bilgisayarda ayarlanan yerel saat dilimine dönüştürülen saatleri görüntüler. Bu örnekte EST saat diliminde alınan bir ekran görüntüsü görüntülenir.

Zamanlanmış derlemeler Azure DevOps Server 2019'da YAML söz diziminde desteklenmez. YAML derleme işlem hattınızı oluşturduktan sonra, zamanlanmış bir tetikleyici belirtmek için işlem hattı ayarlarını kullanabilirsiniz.

Kod değişikliği olmadığında bile çalışıyor

Varsayılan olarak, son başarılı zamanlanmış çalıştırmadan bu yana kod değişikliği yapılmadıysa işlem hattınız zamanlanmış olarak çalışmaz. Örneğin, her gece saat 21:00'de çalıştırılacak bir işlem hattı zamanlamış olduğunuzu düşünün. Hafta içi günlerde kodunuz için çeşitli değişiklikler gönderebilirsiniz. İşlem hattı zamanlamaya göre çalışır. Hafta sonları kodunuzda herhangi bir değişiklik yapmazsınız. Cuma günü zamanlanan çalıştırmadan bu yana kod değişikliği olmadıysa işlem hattı hafta sonu boyunca zamanlandığı gibi çalışmaz.

Kod değişikliği olmadığında bile işlem hattının çalışmasını zorlamak için anahtar sözcüğünü always kullanabilirsiniz.

schedules:
- cron: ...
  ...
  always: true

Zamanlanmış derlemeler, Azure DevOps Server'ın bu sürümünde YAML söz diziminde desteklenmez. YAML derleme işlem hattınızı oluşturduktan sonra, zamanlanmış bir tetikleyici belirtmek için işlem hattı ayarlarını kullanabilirsiniz.

YAML işlem hatlarında zamanlanmış çalıştırma sayısıyla ilgili sınırlar

Bir işlem hattının ne sıklıkta çalıştırılmak üzere zamanlandığına ilişkin belirli sınırlar vardır. Bu sınırlar, Azure Pipelines kaynaklarının, özellikle de Microsoft tarafından barındırılan aracıların kötüye kullanılmasını önlemek için getirilmiştir. Sınırlar şunlardır:

  • haftada işlem hattı başına yaklaşık 1000 çalıştırma
  • işlem hattı başına 15 dakikada 10 çalıştırma

Klasik düzenleyiciden geçiş

Aşağıdaki örneklerde, zamanlamalarınızı klasik düzenleyiciden YAML'ye geçirme gösterilmektedir.

Örnek: Git deposunun birden çok saat diliminde gecelik derlemesi

Bu örnekte, klasik düzenleyici zamanlanmış tetikleyicisinde aşağıdaki derlemeleri oluşturan iki giriş vardır.

  • Her Pazartesi - Cuma saat 03:00'te (UTC + 5:30 saat dilimi), dal filtresi ölçütlerini karşılayan dallar features/india/* oluşturma

    Zamanlanmış tetikleyici UTC + 5:30 saat dilimi

  • Her Pazartesi - Cuma saat 03:00 (UTC - 5:00 saat dilimi), dal filtresi ölçütlerini karşılayan dallar features/nc/* oluşturma

    Zamanlanmış tetikleyici UTC -5:00 saat dilimi

Eşdeğer YAML zamanlanmış tetikleyicisi:

schedules:
- cron: '30 21 * * Sun-Thu'
  displayName: M-F 3:00 AM (UTC + 5:30) India daily build
  branches:
    include:
    - /features/india/*
- cron: '0 8 * * Mon-Fri'
  displayName: M-F 3:00 AM (UTC - 5) NC daily build
  branches:
    include:
    - /features/nc/*

İlk zamanlamada, M-F 3:00 AM (UTC + 5:30) Hindistan günlük derlemesinde, cron söz dizimi (mm HH DD MM DW) şeklindedir 30 21 * * Sun-Thu.

  • Dakikalar ve Saatler - 30 21 - Bu , (9:30 PM UTC ile 21:30 UTC eşler. Klasik düzenleyicide belirtilen saat dilimi UTC + 5:30 olduğundan, YAML tetikleyicisi için belirtilmesi istenen UTC saatine ulaşmak için 03:00'ın istenen derleme zamanından 5 saat 30 dakika çıkarmamız gerekir.
  • Gün ve Aylar joker karakter olarak belirtilir çünkü bu zamanlama yalnızca ayın belirli günlerinde veya belirli bir ayda çalıştırılacağını belirtmez.
  • Haftanın günleri - Sun-Thu - saat dilimi dönüştürmesi nedeniyle derlemelerimizin UTC + 5:30 Hindistan saat diliminde saat 03:00'da çalışması için önceki günün UTC saatinde başlatılmasını belirtmemiz gerekir. Haftanın günlerini veya 0,1,2,3,4olarak 0-4 da belirtebiliriz.

İkinci zamanlama olan M-F 3:00 AM (UTC - 5) NC günlük derlemesinde, cron söz dizimi şeklindedir 0 8 * * Mon-Fri.

  • Dakikalar ve Saatler - 0 8 - Bu, ile 8:00 AM UTCeşler. Klasik düzenleyicide belirtilen saat dilimi UTC - 5:00 olduğundan, YAML tetikleyicisi için belirtilmesi istenen UTC saatine ulaşmak için istenen derleme saatinden 03:00'a 5 saat eklememiz gerekir.
  • Gün ve Aylar joker karakter olarak belirtilir çünkü bu zamanlama yalnızca ayın belirli günlerinde veya belirli bir ayda çalıştırılacağını belirtmez.
  • Haftanın günleri - Mon-Fri - Saat dilimi dönüştürmelerimiz istediğimiz zamanlamaya göre haftanın birden fazla gününe yayılmadığından, burada herhangi bir dönüştürme yapmamız gerekmez. Haftanın günlerini veya 1,2,3,4,5olarak 1-5 da belirtebiliriz.

Önemli

YAML zamanlanmış tetikleyicilerindeki UTC saat dilimleri yaz saati hesaba vermez.

İpucu

Haftanın 3 harfli günü kullanılırken ve Güneş üzerinden birden çok güne yayılan bir süre istediğinizde, Güneş haftanın ilk günü olarak kabul edilmelidir; örneğin, EST gece yarısı, Perşembe ile Pazar arasında bir zamanlama için, cron söz dizimi şeklindedir 0 5 * * Sun,Thu-Sat.

Örnek: Farklı frekanslarla gecelik derleme

Bu örnekte, klasik düzenleyici zamanlanmış tetikleyicisinde aşağıdaki derlemeleri oluşturan iki giriş vardır.

  • Her Pazartesi - Cuma saat 03:00 UTC'de ve releases/* dal filtresi ölçütlerini main karşılayan dallar derleyin

    Zamanlanan tetikleyici sıklığı 1.

  • Her Pazar saat 03:00 UTC'de kaynak veya işlem hattı değişmemiş olsa bile dalı derleyin releases/lastversion

    Zamanlanan tetikleyici sıklığı 2.

Eşdeğer YAML zamanlanmış tetikleyicisi:

schedules:
- cron: '0 3 * * Mon-Fri'
  displayName: M-F 3:00 AM (UTC) daily build
  branches:
    include:
    - main
    - /releases/*
- cron: '0 3 * * Sun'
  displayName: Sunday 3:00 AM (UTC) weekly latest version build
  branches:
    include:
    - /releases/lastversion
  always: true

İlk zamanlama olan M-F 3:00 AM (UTC) günlük derlemesinde, cron söz dizimi şeklindedir 0 3 * * Mon-Fri.

  • Dakikalar ve Saatler - 0 3 - Bu, ile 3:00 AM UTCeşler. Klasik düzenleyicide belirtilen saat dilimi UTC olduğundan, herhangi bir saat dilimi dönüştürmesi yapmamız gerekmez.
  • Gün ve Aylar joker karakter olarak belirtilir çünkü bu zamanlama yalnızca ayın belirli günlerinde veya belirli bir ayda çalıştırılacağını belirtmez.
  • Haftanın günleri - Mon-Fri - saat dilimi dönüştürmesi olmadığından, haftanın günleri doğrudan klasik düzenleyici zaman çizelgesinden eşler. Haftanın günlerini olarak 1,2,3,4,5da belirtebiliriz.

İkinci zamanlama olan Pazar 03:00 (UTC) haftalık en son sürüm derlemesinde, cron söz dizimi şeklindedir 0 3 * * Sun.

  • Dakikalar ve Saatler - 0 3 - Bu, ile 3:00 AM UTCeşler. Klasik düzenleyicide belirtilen saat dilimi UTC olduğundan, herhangi bir saat dilimi dönüştürmesi yapmamız gerekmez.
  • Gün ve Aylar joker karakter olarak belirtilir çünkü bu zamanlama yalnızca ayın belirli günlerinde veya belirli bir ayda çalıştırılacağını belirtmez.
  • Haftanın günleri - Sun - Saat dilimi dönüştürmelerimiz istediğimiz zamanlamaya göre haftanın birden fazla gününe yayılmadığından, burada herhangi bir dönüştürme yapmamız gerekmez. Haftanın günlerini olarak 0da belirtebiliriz.
  • Ayrıca, bu derlemenin kaynak kodun güncelleştirilip güncelleştirilmediğinin çalıştırılacak şekilde zamanlandığını da belirtiriz always: true .

SSS

İşlem hattımın bir dalda değişiklik gönderildiğinde değil yalnızca zamanlamaya göre çalışmasını istiyorum

İşlem hattınızın yalnızca zamanlamaya göre çalışmasını istiyorsanız ve birisi bir dala değişiklik gönderdiğinde veya bir değişikliği ana dala birleştirdiğinde çalışmıyorsa, işlem hattındaki varsayılan CI ve PR tetikleyicilerini açıkça devre dışı bırakmalısınız.

Varsayılan CI ve PR tetikleyicilerini devre dışı bırakmak için YAML işlem hattınıza aşağıdaki deyimleri ekleyin ve YAML işlem hattı tetikleyicilerini UI tetikleyicileriyle geçersiz kılmadığınızdan emin olun.

trigger: none
pr: none

Daha fazla bilgi için bkz . pr tanımı ve tetikleyici tanımı.

YAML dosyasında bir zamanlama tanımladım. Ama çalışmadı. Neler oldu?

  • Azure Pipelines'ın işlem hattınız için zamanlanmış sonraki birkaç çalıştırmayı denetleyin. İşlem hattınızda Zamanlanmış çalıştırmalar eylemini seçerek bu çalıştırmaları bulabilirsiniz. Liste yalnızca önümüzdeki birkaç gün içinde yapılacak birkaç çalıştırmayı gösterecek şekilde filtrelenmiştir. Bu durum beklentilerinizi karşılamıyorsa, büyük olasılıkla cron zamanlamanızı yanlış yazdığınız veya doğru dalda tanımlanmış zamanlamanız olmadığı durumdur. Zamanlamaları yapılandırmayı anlamak için yukarıdaki konuyu okuyun. Cron söz diziminizi yeniden değerlendirin. Cron zamanlamalarının tüm saatleri UTC olarak belirtilir.

  • YAML dosyanızda küçük bir önemsiz değişiklik yapın ve bu güncelleştirmeyi deponuza gönderin. Daha önce YAML dosyasından zamanlamaları okurken herhangi bir sorun oluştuysa, şimdi düzeltilmelidir.

  • Kullanıcı arabiriminde tanımlanmış zamanlamalarınız varsa YAML zamanlamalarınız kabul edilmez. İşlem hattınızın düzenleyicisine gidip Tetikleyiciler'i seçerek kullanıcı arabirimi zamanlamalarınızın olmadığından emin olun.

  • İşlem hattı için zamanlayabileceğiniz çalıştırma sayısı sınırı vardır. Sınırlar hakkında daha fazla bilgi edinin.

  • Kodunuzda değişiklik yoksa Azure Pipelines yeni çalıştırmalar başlatamayabilir. Bu davranışı nasıl geçersiz kılacağınızı öğrenin.

YAML zamanlamalarım iyi çalışıyordu. Ama artık çalışmayı bıraktılar. Nasıl yaparım? hata ayıklasın?

  • belirtmediyseniz always:true, kodunuzda herhangi bir güncelleştirme yapılmadığı sürece işlem hattınız zamanlanmayacaktır. Herhangi bir kod değişikliği olup olmadığını ve zamanlamaları nasıl yapılandırdığınıza bakın.

  • İşlem hattınızı kaç kez zamanlayabileceğinize ilişkin bir sınır vardır. Bu sınırları aşıp aşmadığınıza bakın.

  • Birinin kullanıcı arabiriminde daha fazla zamanlama etkinleştirip etkinleştirmediğini denetleyin. İşlem hattınızın düzenleyicisini açın ve Tetikleyiciler'i seçin. Kullanıcı arabiriminde zamanlamaları tanımladıysa, YAML zamanlamalarınız kabul edilmez.

  • İşlem hattınızın duraklatılıp duraklatıldığını veya devre dışı bırakıldığını denetleyin. İşlem hattınız için Ayarlar seçin.

  • Azure Pipelines'ın işlem hattınız için zamanlanmış sonraki birkaç çalıştırmayı denetleyin. İşlem hattınızda Zamanlanmış çalıştırmalar eylemini seçerek bu çalıştırmaları bulabilirsiniz. Beklediğiniz zamanlamaları görmüyorsanız YAML dosyanızda küçük bir önemsiz değişiklik yapın ve güncelleştirmeyi deponuza gönderin. Bunun zamanlamaları yeniden eşitlemesi gerekir.

  • Kodunuzu depolamak için GitHub kullanıyorsanız Azure Pipelines yeni bir çalıştırma başlatmaya çalışırken GitHub tarafından kısıtlanmış olabilir. Yeni bir çalıştırmayı el ile başlatıp başlatamadığını denetleyin.

Kodum değişmedi, ancak zamanlanmış bir derleme tetikleniyor. Neden?

  • Kod değişikliği olmasa bile zamanlanmış derlemeyi her zaman çalıştırma seçeneğini etkinleştirmiş olabilirsiniz. YAML dosyası kullanıyorsanız, YAML dosyasında zamanlamanın söz dizimini doğrulayın. Klasik işlem hatlarını kullanıyorsanız, zamanlanan tetikleyicilerde bu seçeneği işaretlediğinizden emin olun.

  • Derleme işlem hattını veya işlem hattının bir özelliğini güncelleştirmiş olabilirsiniz. Bu, kaynak kodunuzu güncelleştirmemiş olsanız bile yeni bir çalıştırmanın zamanlamasına neden olur. Klasik düzenleyiciyi kullanarak işlem hattındaki değişikliklerin geçmişini doğrulayın.

  • Depoya bağlanmak için kullanılan hizmet bağlantısını güncelleştirmiş olabilirsiniz. Bu, kaynak kodunuzu güncelleştirmemiş olsanız bile yeni bir çalıştırmanın zamanlamasına neden olur.

  • Azure Pipelines önce kodunuzda güncelleştirme olup olmadığını denetler. Azure Pipelines deponuza ulaşamaz veya bu bilgileri alamazsa, bir bilgilendirme çalıştırması oluşturur. Azure Pipelines'ın deponuza ulaşamadığını bildirmek için kullanabileceğiniz sahte bir derlemedir.

  • İşlem hattınız tamamen başarılı bir derlemeye sahip olmayabilir. Azure DevOps, yeni bir derleme zamanlanıp zamanlanmayacağını belirlemek için son tamamen başarılı zamanlanmış derlemeyi arar. Yeni bir zamanlanmış derleme tetikler. Kısmen başarılı zamanlanmış derlemeler başarılı olarak kabul edilmez, bu nedenle işlem hattınızda yalnızca kısmen başarılı derlemeler varsa, kodunuz değişmemiş olsa bile Azure DevOps zamanlanmış derlemeleri tetikler.

Planlanan çalıştırmayı Zamanlanmış çalıştırmalar panelinde görüyorum. Ancak, o anda çalışmaz. Neden?

  • Zamanlanan çalıştırmalar paneli tüm olası zamanlamaları gösterir. Ancak kodda gerçek güncelleştirmeler gerçekleştirmediğiniz sürece gerçekten çalışmayabilir. Bir zamanlamayı her zaman çalışmaya zorlamak için YAML işlem hattında always özelliğini ayarladığınızdan veya her zaman klasik işlem hattında çalıştırılacak seçeneği işaretlediğinizden emin olun.

YAML işlem hattında tanımlanan zamanlamalar bir dal için çalışır ancak diğer dal için çalışmaz. Bunu nasıl düzeltirim?

Zamanlamalar YAML dosyalarında tanımlanır ve bu dosyalar dallarla ilişkilendirilir. bir işlem hattının belirli bir dal için zamanlanmasını istiyorsanız, örneğinfeatures/X, o daldaki YAML dosyasının içinde tanımlanmış cron zamanlamasına sahip olduğundan ve zamanlama için doğru dal eklemelerine sahip olduğundan emin olun. Daldaki features/X YAML dosyasında bu örnekte aşağıdakiler schedule bulunmalıdır:

schedules: 
- cron: '0 12 * * 0'   # replace with your schedule
  branches: 
    include: 
    - features/X  

Daha fazla bilgi için bkz . Zamanlanmış tetikleyiciler için dal konuları.