İşlem hattı çalıştırma sırası

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

Çalıştırmalar bir işlem hattının yürütülmesini temsil eder. Çalıştırma sırasında işlem hattı işlenir ve aracılar bir veya daha fazla işi işler. İşlem hattı çalıştırması işleri, adımları ve görevleri içerir. Hem sürekli tümleştirme (CI) hem de sürekli teslim (CD) işlem hatlarını çalıştırır.

İşlem hattına genel bakış

bir işlem hattı çalıştırdığınızda, kapaklar altında birçok şey olur. Bunlar hakkında genellikle bilgi sahibi olmanız gerekmeyecek olsa da, bazen büyük resme sahip olmak yararlı olur. Azure Pipelines üst düzeyde şunları yapacaktır:

Aracı tarafında, her iş için bir aracı şunları yapacaktır:

İşler başarılı, başarısız veya iptal edilebilir. Bir işin tamamlanmayabileceği durumlar da vardır. Bunun nasıl olduğunu anlamak sorunları gidermenize yardımcı olabilir.

Her eylemi birer birer ayıralım.

İşlem hattını işleme

YAML şablonlarını genişletme

İşlem hattını çalıştırmaya dönüştürmek için Azure Pipelines şu sırayla birkaç adımdan geçer:

  1. İlk olarak şablonları genişletin ve şablon ifadelerini değerlendirin.
  2. Ardından, çalıştırılacak ilk aşamaları seçmek için aşama düzeyinde bağımlılıkları değerlendirin.
  3. Çalıştırılacak seçilen her aşama için iki şey gerçekleşir:
  4. Çalıştırılacak seçilen her iş için çoklu yapılandırmaları (strategy: matrix veya strategy: parallel YAML'de) birden çok çalışma zamanı işine genişletin.
  5. Her çalışma zamanı işi için koşulları değerlendirerek işin çalıştırılmaya uygun olup olmadığına karar verin.
  6. Uygun her çalışma zamanı işi için bir aracı isteyin.

Çalışma zamanı işleri tamamlandıktan sonra Azure Pipelines, çalışmaya uygun yeni işler olup olmadığını görür. Bu durumda, 4- 6 arası adımlar yeni işlerle yineleyin. Benzer şekilde, aşamalar tamamlandıktan sonra, 2- 6 arası adımlar yeni aşamalar için yinelenir.

Bu sıralama sık sorulan bir soruyu yanıtlamaya yardımcı olur: Şablon parametrelerimde neden belirli değişkenleri kullanamıyorum? Şablon genişletme adımı olan 1. adım yalnızca YAML belgesinin metni üzerinde çalışır. Çalışma zamanı değişkenleri bu adımda mevcut değildir. 1\. adımdan sonra şablon parametreleri çözümlenir ve artık yoktur.

Ayrıca sık karşılaşılan başka bir sorunun yanıtlarını da verir: Hizmet bağlantısını / ortam adlarını çözmek için neden değişkenleri kullanamıyorum? Bir aşamanın çalışmaya başlayabilmesi için kaynaklar yetkilendirildiğinden aşama ve iş düzeyi değişkenleri kullanılamaz. İşlem hattı düzeyinde değişkenler kullanılabilir, ancak yalnızca işlem hattına açıkça dahil edilen değişkenler. Değişken gruplarının yetkilendirmesi gerektiğinden kaynak yetkilendirmesi denetiminde verileri kullanılamaz.

Aracı isteme

Azure Pipelines'ın bir işi çalıştırması gerektiğinde havuzdan bir aracı ister. (Sunucu işleri , Azure Pipelines sunucusunun kendisinde çalıştırıldığından bir özel durumdur.) Microsoft tarafından barındırılan ve şirket içinde barındırılan aracı havuzları biraz farklı çalışır.

Microsoft tarafından barındırılan aracı havuzu istekleri

İlk olarak hizmet, kuruluşunuzun paralel işlerini denetler. Microsoft tarafından barındırılan tüm aracılarda çalışan tüm işleri ekler ve bunu satın alınan paralel iş sayısıyla karşılaştırır. Kullanılabilir paralel yuva yoksa, işin boşaltmak için bir yuvada beklemesi gerekir.

Paralel yuva kullanılabilir olduğunda, iş istenen aracı türüne yönlendirilir. Kavramsal olarak, Microsoft tarafından barındırılan havuz dev ve küresel makine havuzlarından biridir. (Gerçekte, coğrafyaya ve işletim sistemi türüne göre bölünmüş birçok farklı fiziksel havuz vardır.) vmImage İstenen (YAML'de) veya havuz adına (klasik düzenleyicide) bağlı olarak bir aracı seçilir.

Havuz seçimi

Microsoft havuzundaki tüm aracılar, daha önce işlem hattı çalıştırmamış olan yeni ve yeni sanal makinelerdir. İş tamamlandığında aracı VM atılır.

Şirket içi barındırılan aracı havuzu istekleri

Microsoft tarafından barındırılan havuza benzer şekilde, hizmet önce kuruluşunuzun paralel işlerini denetler. Şirket içinde barındırılan tüm aracılarda çalışan tüm işleri ekler ve bunu satın alınan paralel iş sayısıyla karşılaştırır. Kullanılabilir paralel yuva yoksa, işin boşaltmak için bir yuvada beklemesi gerekir.

Paralel yuva kullanılabilir olduğunda, şirket içinde barındırılan havuz uyumlu bir aracı için incelenmektedir. Şirket içi barındırılan aracılar, belirli yazılımların yüklendiğini veya ayarların yapılandırıldığını belirten dizeler olan özellikler sunar. İşlem hattının , işi çalıştırmak için gereken özellikler olan talepleri vardır. Özellikleri işlem hattının taleplerine uyan ücretsiz bir aracı bulunamazsa, iş beklemeye devam eder. Havuzda özellikleri taleplerle eşleşen aracı yoksa, iş başarısız olur.

Şirket içi barındırılan aracılar genellikle çalıştırmadan çalıştırılacak şekilde yeniden kullanılır. Şirket içinde barındırılan aracılar için, bir işlem hattı işinin önbellekleri hazırlama veya çoğu işlemenin yerel depoda zaten kullanılabilir olması gibi yan etkileri olabilir.

İşi çalıştırmaya hazırlanma

Bir aracı bir işi kabul ettikten sonra, yapması gereken bazı hazırlık çalışmaları vardır. Aracı, işi çalıştırmak için gereken tüm görevleri indirir (ve bir sonraki sefer önbelleğe alır). Çalıştırmada kullanılan kaynak kodu, yapıtları ve çıkışları tutmak için diskte çalışma alanı oluşturur. Ardından adımları çalıştırmaya başlar.

Her adımı çalıştırma

Adımlar sırayla, ardışık olarak çalıştırılır. Bir adımın başlayabilmesi için önceki tüm adımların tamamlanması (veya atlanması) gerekir.

Her görevi çalıştırma

Adımlar görevler tarafından uygulanır. Görevlerin kendileri Node.js veya PowerShell betikleri olarak uygulanır. Görev sistemi, girişleri ve çıkışları yedekleme betiklerine yönlendirir. Ayrıca sistem yolunu değiştirme ve yeni işlem hattı değişkenleri oluşturma gibi bazı yaygın hizmetler sağlar.

Her adım kendi işleminde çalışır ve önceki adımlardan kalan ortamdan yalıtılır. Bu adım başına işlem modeli nedeniyle, ortam değişkenleri adımlar arasında korunmaz. Ancak, görevler ve betikler aracıyla geri iletişim kurmak için bir mekanizmaya sahiptir: günlük komutları. Bir görev veya betik standart hale getirmek için bir günlüğe kaydetme komutu yazdığında, aracı istenen eylemi gerçekleştirecektir.

Yeni işlem hattı değişkenleri oluşturmak için bir aracı komutu vardır. İşlem hattı değişkenleri bir sonraki adımda otomatik olarak ortam değişkenlerine dönüştürülür. değeriyle myValueyeni bir değişken myVar ayarlamak için bir betik bunu yapabilir:

echo '##vso[task.setVariable variable=myVar]myValue'
Write-Host "##vso[task.setVariable variable=myVar]myValue"

Sonuçları raporlama ve toplama

Her adım uyarıları, hataları ve hataları bildirebilir. İşlem hattı özet sayfasına hatalar ve uyarılar bildirilir ve görev "sorunlarla başarılı" olarak işaretlenir. Hatalar özet sayfasına da bildirilir, ancak görevi "başarısız" olarak işaretler. Adım, açıkça hata bildirirse (komut ##vso kullanarak) veya betiği sıfır olmayan bir çıkış koduyla sonlandırırsa bir hatadır.

Günlükler ve sonuçlar aracıdan hizmete akıyor

Adımlar çalıştırılırken aracı sürekli olarak çıkış satırlarını hizmete gönderir. Bu nedenle konsolun canlı akışını görebilirsiniz. Her adımın sonunda, adımdaki çıkışın tamamı da günlük dosyası olarak karşıya yüklenir. İşlem hattı tamamlandıktan sonra günlükler indirilebilir. Aracının karşıya yükleyebileceği diğer öğeler yapıtlar ve test sonuçlarıdır. Bunlar işlem hattı tamamlandıktan sonra da kullanılabilir.

Durum ve koşullar

Aracı her adımın başarısını veya başarısızlığını izler. Adımlar sorunlarla başarılı veya başarısız olduğundan işin durumu güncelleştirilir. İş her adımdaki "en kötü" sonucu her zaman yansıtır: bir adım başarısız olursa, iş de başarısız olur.

Bir adımı çalıştırmadan önce aracı, bu adımın çalışmasının gerekip gerekmediğini belirlemek için bu adımın koşulunu denetler. Varsayılan olarak, bir adım yalnızca işin durumu başarılı olduğunda veya sorunlarla başarılı olduğunda çalışır. Birçok işin başka ne olursa olsun çalışması gereken temizleme adımları vardır, böylece "always()" koşulu belirtebilirler. Temizleme adımları yalnızca iptalde çalışacak şekilde de ayarlanabilir. Başarılı bir temizleme adımı işin başarısız olmasına neden olmaz; işler, hata girdikten sonra hiçbir zaman başarıya geri dönemez.

Zaman aşımları ve kesilen bağlantılar

Her işin zaman aşımı vardır. İş belirtilen sürede tamamlanmamışsa, sunucu işi iptal eder. Aracıya durması için sinyal göndermeye çalışır ve işi iptal edildi olarak işaretler. Aracı tarafında bu, kalan tüm adımları iptal etmek ve kalan sonuçları karşıya yüklemek anlamına gelir.

İşler, iptal çalışmalarının tamamlandığı iptal zaman aşımı olarak bilinen bir yetkisiz kullanım süresine sahiptir. (Unutmayın, adımlar iptalde bile çalışacak şekilde işaretlenebilir.) Zaman aşımının yanı sıra iptal zaman aşımından sonra, aracı işin durdurulduğunu bildirmediyse, sunucu işi hata olarak işaretler.

Azure Pipelines zaman zaman işi aracı makinelere dağıttığı için aracılar sunucuya yanıt vermeyi durdurabilir. Aracının konak makinesi kaybolursa (güç kaybı, VM kapatılır) veya ağ hatası olduğunda bu durum oluşabilir. Aracı, bu koşulları algılamaya yardımcı olmak için sunucuya hala çalıştığını bildirmek üzere dakikada bir sinyal iletisi gönderir. Sunucu ardışık beş dakika boyunca sinyal almazsa aracının geri gelmeyeceğini varsayar. İş bir hata olarak işaretlenir ve kullanıcıya işlem hattını yeniden denemesi gerektiğini bildirir.

CLI aracılığıyla çalıştırmaları yönetme

Azure DevOps CLI kullanarak projenizdeki işlem hattı çalıştırmalarını listeleyebilir ve belirli bir çalıştırmayla ilgili ayrıntıları görüntüleyebilirsiniz. ayrıca işlem hattı çalıştırmanıza etiket ekleyebilir ve silebilirsiniz.

Önkoşullar

  • Azure DevOps CLI'yi kullanmaya başlama bölümünde açıklandığı gibi Azure DevOps CLI uzantısını yüklemiş olmanız gerekir.
  • kullanarak az loginAzure DevOps'ta oturum açın.
  • Bu makaledeki örnekler için kullanarak az devops configure --defaults organization=YourOrganizationURLvarsayılan kuruluşu ayarlayın.

İşlem hattı çalıştırmalarını listeleme

az pipelines runs list komutuyla projenizdeki işlem hattı çalıştırmalarını listeleyin. Başlamak için bkz. Azure DevOps CLI ile çalışmaya başlama.

az pipelines runs list [--branch]
                       [--org]
                       [--pipeline-ids]
                       [--project]
                       [--query-order {FinishTimeAsc, FinishTimeDesc, QueueTimeAsc, QueueTimeDesc, StartTimeAsc, StartTimeDesc}]
                       [--reason {all, batchedCI, buildCompletion, checkInShelveset, individualCI, manual, pullRequest, schedule, triggered, userCreated, validateShelveset}]
                       [--requested-for]
                       [--result {canceled, failed, none, partiallySucceeded, succeeded}]
                       [--status {all, cancelling, completed, inProgress, none, notStarted, postponed}]
                       [--tags]
                       [--top]

İsteğe bağlı parametreler

  • branch: Bu dal için derlemelere göre filtreleyin.
  • org: Azure DevOps kuruluş URL'si. kullanarak varsayılan kuruluşu az devops configure -d organization=ORG_URLyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir. Örnek: --org https://dev.azure.com/MyOrganizationName/.
  • pipeline-ids: Derlemelerin listelendiği tanımların boşlukla ayrılmış kimlikleri.
  • project: Projenin adı veya kimliği. varsayılan projeyi kullanarak az devops configure -d project=NAME_OR_IDyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir.
  • query-order: İşlem hattı çalıştırmalarının listelenme sırasını tanımlayın. Kabul edilen değerler : FinishTimeAsc, FinishTimeDesc, QueueTimeAsc, QueueTimeDesc, StartTimeAsc ve StartTimeDesc.
  • reason: Yalnızca bu belirtilen nedenle derlemeleri listeleyin. Kabul edilen değerler batchedCI, buildCompletion, checkInShelveset, individualCI, manual, pullRequest, schedule, triggered, userCreated ve validateShelveset şeklindedir.
  • requested-for: Belirtilen kullanıcı veya grup için istenen derlemelerle sınırlayın.
  • result: Belirtilen sonucu içeren derlemelerle sınırlayın. Kabul edilen değerler iptal edilir, başarısız olur, hiçbiri, kısmenSucceeded ve başarılı olur.
  • status: Belirtilen duruma sahip derlemelerle sınırlayın. Kabul edilen değerlerin tümü iptal edilir, tamamlanır, inProgress, none, notStarted ve ertelenmiş değerleridir.
  • etiketler: Belirtilen etiketlerin her biriyle derlemelerle sınırlayın. Boşlukla ayrılmış.
  • top: Listelenecek derleme sayısı üst sınırı.

Örnek

Aşağıdaki komut, durumu tamamlandı ve sonucu başarılı olan ilk üç işlem hattı çalıştırmasını listeler ve sonucu tablo biçiminde döndürür.

az pipelines runs list --status completed --result succeeded --top 3 --output table

Run ID    Number      Status     Result     Pipeline ID    Pipeline Name               Source Branch    Queued Time                 Reason
--------  ----------  ---------  ---------  -------------  --------------------------  ---------------  --------------------------  ------
125       20200124.1  completed  succeeded  12             Githubname.pipelines-java  master           2020-01-23 18:56:10.067588  manual
123       20200123.2  completed  succeeded  12             Githubname.pipelines-java  master           2020-01-23 11:55:56.633450  manual
122       20200123.1  completed  succeeded  12             Githubname.pipelines-java  master           2020-01-23 11:48:05.574742  manual

İşlem hattı çalıştırma ayrıntılarını göster

az pipelines runs show komutuyla projenizde bir işlem hattı çalıştırmasının ayrıntılarını gösterin. Başlamak için bkz. Azure DevOps CLI ile çalışmaya başlama.

az pipelines runs show --id
                       [--open]
                       [--org]
                       [--project]

Parametreler

  • kimlik: Gerekli. İşlem hattı çalıştırmasının kimliği.
  • open: İsteğe bağlı. Web tarayıcınızda derleme sonuçları sayfasını açar.
  • org: Azure DevOps kuruluş URL'si. kullanarak varsayılan kuruluşu az devops configure -d organization=ORG_URLyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir. Örnek: --org https://dev.azure.com/MyOrganizationName/.
  • project: Projenin adı veya kimliği. varsayılan projeyi kullanarak az devops configure -d project=NAME_OR_IDyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir.

Örnek

Aşağıdaki komut , 123 kimliğine sahip işlem hattı çalıştırmasının ayrıntılarını gösterir ve sonuçları tablo biçiminde döndürür. Ayrıca web tarayıcınızı derleme sonuçları sayfasına açar.

az pipelines runs show --id 122 --open --output table

Run ID    Number      Status     Result     Pipeline ID    Pipeline Name               Source Branch    Queued Time                 Reason
--------  ----------  ---------  ---------  -------------  --------------------------  ---------------  --------------------------  --------
123       20200123.2  completed  succeeded  12             Githubname.pipelines-java  master           2020-01-23 11:55:56.633450  manual

İşlem hattı çalıştırmasına etiket ekleme

az pipelines runs tag add komutuyla projenizdeki bir işlem hattı çalıştırmasına etiket ekleyin. Başlamak için bkz. Azure DevOps CLI ile çalışmaya başlama.

az pipelines runs tag add --run-id
                          --tags
                          [--org]
                          [--project]

Parametreler

  • run-id: Gerekli. İşlem hattı çalıştırmasının kimliği.
  • etiketler: Gerekli. İşlem hattı çalıştırmasına eklenecek etiketler (virgülle ayrılmış değerler).
  • org: Azure DevOps kuruluş URL'si. kullanarak varsayılan kuruluşu az devops configure -d organization=ORG_URLyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir. Örnek: --org https://dev.azure.com/MyOrganizationName/.
  • project: Projenin adı veya kimliği. varsayılan projeyi kullanarak az devops configure -d project=NAME_OR_IDyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir.

Örnek

Aşağıdaki komut , YAML etiketini 123 kimliğiyle işlem hattı çalıştırmasına ekler ve sonucu JSON biçiminde döndürür.

az pipelines runs tag add --run-id 123 --tags YAML --output json

[
  "YAML"
]

İşlem hattı çalıştırma etiketlerini listeleme

az pipelines runs tag list komutuyla projenizdeki bir işlem hattı çalıştırmasının etiketlerini listeleyin. Başlamak için bkz. Azure DevOps CLI ile çalışmaya başlama.

az pipelines runs tag list --run-id
                           [--org]
                           [--project]

Parametreler

  • run-id: Gerekli. İşlem hattı çalıştırmasının kimliği.
  • org: Azure DevOps kuruluş URL'si. kullanarak varsayılan kuruluşu az devops configure -d organization=ORG_URLyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir. Örnek: --org https://dev.azure.com/MyOrganizationName/.
  • project: Projenin adı veya kimliği. varsayılan projeyi kullanarak az devops configure -d project=NAME_OR_IDyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir.

Örnek

Aşağıdaki komut , 123 kimliğine sahip işlem hattı çalıştırmasının etiketlerini listeler ve sonucu tablo biçiminde döndürür.

az pipelines runs tag list --run-id 123 --output table

Tags
------
YAML

İşlem hattı çalıştırmasından etiketi silme

az pipelines runs tag delete komutuyla projenizdeki bir işlem hattı çalıştırmasından etiket silin. Başlamak için bkz. Azure DevOps CLI ile çalışmaya başlama.

az pipelines runs tag delete --run-id
                             --tag
                             [--org]
                             [--project]

Parametreler

  • run-id: Gerekli. İşlem hattı çalıştırmasının kimliği.
  • etiket: Gerekli. İşlem hattı çalıştırmasından silinecek etiket.
  • org: Azure DevOps kuruluş URL'si. kullanarak varsayılan kuruluşu az devops configure -d organization=ORG_URLyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir. Örnek: --org https://dev.azure.com/MyOrganizationName/.
  • project: Projenin adı veya kimliği. varsayılan projeyi kullanarak az devops configure -d project=NAME_OR_IDyapılandırabilirsiniz. Varsayılan olarak yapılandırılmadıysa veya kullanılarak git configalınmadıysa gereklidir.

Örnek

Aşağıdaki komut, 123 kimliğine sahip işlem hattı çalıştırmasından YAML etiketini siler.

az pipelines runs tag delete --run-id 123 --tag YAML