İş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
branches
yan tümcesi olmayan birinclude
exclude
yan tümce belirtirseniz, yan tümcesinde belirtmeyeinclude
*
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-feature
temel alan main
yeni 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-feature
new-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 main
oluş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 always
true
işlem hattı, olduğunda bile batch
true
cron 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ış tetikleyicilerinizi oluşturduktan veya güncelleştirdikten sonra, Zamanlanmış çalıştırmalar görünümünü kullanarak bunları doğrulayabilirsiniz.
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.
Not
Çalışan bir işlem hattı için zamanlamayı güncelleştirirseniz, çalışmakta olan işlem hattı tamamlanana kadar Zamanlanmış çalıştırmalar görünümü yeni zamanlamayla güncelleştirilmez.
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
- Örnek: Farklı frekanslarla gecelik derleme
Ö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şturmaHer Pazartesi - Cuma saat 03:00 (UTC - 5:00 saat dilimi), dal filtresi ölçütlerini karşılayan dallar
features/nc/*
oluşturma
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
ile21: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 veya0,1,2,3,4
olarak0-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, ile8:00 AM UTC
eş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 veya1,2,3,4,5
olarak1-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çütlerinimain
karşılayan dallar derleyinHer Pazar saat 03:00 UTC'de kaynak veya işlem hattı değişmemiş olsa bile dalı derleyin
releases/lastversion
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, ile3:00 AM UTC
eş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 olarak1,2,3,4,5
da 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, ile3:00 AM UTC
eş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 olarak0
da 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
- YAML dosyasında bir zamanlama tanımladım. Ama çalışmadı. Neler oldu?
- YAML zamanlamalarım iyi çalışıyordu. Ama artık çalışmayı bıraktılar. Nasıl yaparım? hata ayıklasın?
- Kodum değişmedi, ancak zamanlanmış bir derleme tetikleniyor. Neden?
- Planlanan çalıştırmayı Zamanlanmış çalıştırmalar panelinde görüyorum. Ancak, o anda çalışmaz. Neden?
- 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?
İş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ı.