İşlem hattı çalıştırma dizisi
Çalıştırmalar bir işlem hattının tek bir yürütmeyi temsil ediyor. Ç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.
bir işlem hattını çalıştırarak birçok şey kapsar. Çoğu zaman bunları bilmek zorunda olmadığınız durumlarda büyük resmi görmek yararlı olabilir. Yüksek düzeyde, Azure Pipelines olacak:
- İşlem hattını işleme
- İşleri çalıştırmak için bir veya daha fazla aracı isteği
- İşleri aracılara teslim edin ve sonuçları toplayın
Aracı tarafında, her iş için bir aracı şunları olur:
İşler başarılı, başarısız veya iptal edilmiş olabilir. Bir işin tamamlanmayacak olduğu durumlar da vardır. Bunun nasıl olduğunu anlamak sorunları gidermenize yardımcı olabilir.
Şimdi her eylemi tek tek arayla verelim.
İşlem hattını işleme
bir işlem hattını çalıştırmaya çevirmek Azure Pipelines birkaç adımı şu sırayla tamamlar:
- İlk olarak, şablonları genişletin ve şablon ifadelerini değerlendirin.
- Ardından, çalıştıracak ilk aşamayı seçmek için aşama düzeyinde bağımlılıkları değerlendirin.
- Çalıştırıla seçilen her aşama için iki şey olur:
- Tüm işlerde kullanılan tüm kaynaklar toplanıp yetkilendirmenin çalışması için doğrulanır.
- Çalıştıracak ilk işi seçmek için bağımlılıkları iş düzeyinde değerlendirin.
- Çalıştırmak üzere seçilen her iş için, çoklu yapılandırmaları (veya
strategy: parallelYAML'de) birden çok çalışma zamanı işi olarak genişletin. - Her çalışma zamanı işi için, bu işin çalıştırıla uygun olup olmadığını karar vermek için koşulları değerlendirin.
- Uygun her çalışma zamanı işi için bir aracı isteği.
Çalışma zamanı işleri tamamlandıktan Azure Pipelines yeni işlerin çalıştırıla uygun olup olamayacaklarını görebilir. Öyleyse, 4- 6. adımlar yeni işlerle yineler. Benzer şekilde, aşamalar tamamlandıktan sonra 2- 6. adımlar tüm yeni aşamalar için yinelenir.
Bu sıralama yaygın bir sorunun yanıtını bulamanıza yardımcı olur: Şablon parametrelerimde neden belirli değişkenleri kullana bilmiyorum? 1. adım olan şablon genişletme, yalnızca YAML belgesinin metni üzerinde çalışır. Çalışma zamanı değişkenleri bu adım sırasında mevcut değildir. 1. adımdan sonra şablon parametreleri çözümlendi ve artık mevcut değil.
Ayrıca sık karşılaşılan başka bir sorunu da yanıtlar: Neden hizmet bağlantısını /ortam adlarını çözümlemek için değişkenleri kullana bilmiyorum? Kaynaklar, bir aşamanın çalışmaya başlaymadan önce yetkilendirilmiş olduğu için 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 kullanılabilir. Değişken grupları yetkilendirmeye tabi bir kaynaktır, bu nedenle kaynak yetkilendirmesi denetlenken verileri aynı şekilde kullanılamaz.
Aracı isteği
Bir Azure Pipelines çalışması gereken her zaman, havuza bir aracı sorar. (Sunucu işleri bir özel durumdur çünkü bunlar sunucu üzerinde Azure Pipelines olur.) Microsoft tarafından barındırılanve kendi 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şun 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şılar. Kullanılabilir paralel yuva yoksa işin boş bir yuvada beklemesi gerekir.
Paralel yuva kullanılabilir olduktan sonra iş istenen aracı türüne yönlendirildi.
Kavramsal olarak, Microsoft tarafından barındırılan havuz, büyük ve genel bir makine havuzu.
(Gerçekte coğrafyaya ve işletim sistemi türüne göre bölünmüş birçok farklı fiziksel havuz vardır.)
İstenen vmImage (YAML'de) veya havuz adına (klasik düzenleyicide) bağlı olarak bir aracı seçilir.
Microsoft havuzunda bulunan tüm aracılar, daha önce işlem hattı çalıştırmadan yeni ve yeni sanal makinelerdir. İş tamamlandığında aracı VM atılır.
Kendinden konak aracı havuzu istekleri
Microsoft tarafından barındırılan havuza benzer şekilde,hizmet önce kuruluş paralel işlerini denetler. Tüm çalışan işleri, tüm kendinden konak aracılara ekler ve bunu satın alınan paralel iş sayısıyla karşılar. Kullanılabilir paralel yuva yoksa işin boş bir yuvada beklemesi gerekir.
Paralel yuva kullanılabilir olduktan sonra, uyumlu bir aracı için kendinden konak havuz incelendi. Kendi içinde barındırılan aracılar,belirli bir yazılımın yük olduğunu veya ayarların yapılandırıldığından emin olunan dizeler olan özellikleri sağlar. İşlem hattının,işi çalıştırmak için gereken özellikler olan talepleri vardır. Özellikleri işlem hattının talepleriyle eşan ücretsiz bir aracı bulunamazsa iş beklemeye devam eder. Havuzda özellikleri taleplere göre bir aracı yoksa iş başarısız olur.
Kendinden konak aracılar genellikle çalıştırmadan çalıştıra kadar yeniden kullanılır. Bu, bir işlem hattı işinin yan etkileri olduğu anlamına gelir: önbellekleri sınıyor, çoğu işlemenin zaten yerel depoda mevcut olması gibi.
bir işi çalıştırmaya hazırlanma
Bir aracı bir işi kabul ettiktan sonra, bazı hazırlık çalışmaları yapar. Aracı, işi çalıştırmak için gereken tüm görevleri indirir (ve bir sonraki sefer için önbelleğe alar). Ç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ını çalıştırmaya başlar.
Her adımı çalıştırma
Adımlar sırayla, art arda çalıştırılan adımlardır. Bir adımın başlatılana kadar tüm önceki adımların bitmiş (veya atlanmış) olması gerekir.
Adımlar görevleri tarafından uygulanır. Görevler, PowerShell betikleri Node.js olarak uygulanır. Görev sistemi, girişleri ve çıkışları arka betiklere yönlendirmektedir. Ayrıca sistem yolunu değiştirme ve yeni işlem hattı değişkenleri oluşturma gibi bazı yaygın hizmetler de sağlar.
Her adım kendi sürecinde çalışır ve önceki adımlardan kalan ortamdan yalıtmaktadı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 yeniden iletişim kurmak için bir mekanizmaya sahiptir: günlük komutları. Bir görev veya betik standart dışında bir günlüğe kaydetme komutu yazdığında, aracı istenen her eylemi alır.
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ülecek.
değerine sahip yeni bir myVar değişken ayarlamak için bir myValue betik bunu yapabiliriz:
echo '##vso[task.setVariable variable=myVar]myValue'
Write-Host "##vso[task.setVariable variable=myVar]myValue"
Sonuçları bildirme ve toplama
Her adım uyarıları, hataları ve hataları bildirebilirsiniz.
Hatalar ve uyarılar işlem hattı özet sayfasına bildiriliyor ve görevi "sorunlar başarılı" olarak işaret ediyor.
Hatalar özet sayfasına da bildiriliyor ancak görevi "başarısız" olarak işaret ediyor.
Bir adım, açıkça hata rapor ediyorsa (komut kullanarak) veya betiği sıfır olmayan bir çıkış ##vso koduyla sonlanıyorsa hatadır.
Adımlar çalıştırılan aracı, hizmete sürekli olarak çıkış satırları gönderir. Bu nedenle konsolun canlı bir akışına bakabilirsiniz. Her adımın sonunda, adımdan gelen tüm çıkış da bir günlük dosyası olarak karşıya yükler. İşlem hattı tamam olduktan sonra günlükler indirilebilir. Aracı tarafından karşıya yüklensin diğer öğeler yapıtları vetest sonuçlarını içerir. 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ız olduğunu takip ediyor. Adımlar sorunlar ile başarılı veya başarısız oldukça işin durumu güncelleştirilir. İş her zaman her adımdan "en kötü" sonucu yansıtıyor: Bir adım başarısız olursa iş de başarısız olur.
Bir adımı çalıştırmadan önce aracı, çalıştırıp çalıştırmayacaklarını belirlemek için bu adımın koşullarını kontrol edin. Varsayılan olarak, bir adım yalnızca işin durumu başarılı olduğunda veya sorunlar ile başarılı olduğunda çalışmasına neden olur. Birçok iş, başka ne olursa olsun çalışması gereken temizleme adımlarına sahip olur, bu nedenle "always()" koşullarını belirtebilirsiniz. Temizleme adımları yalnızca iptal sırasında çalıştırılacak şekilde de ayarlanmış olabilir. Başarılı bir temizleme adımı, işi başarısız olandan kaydedamaz; işler, hata girdikten sonra hiçbir zaman başarılı olamaz.
Zaman aşımları ve kesilen bağlantılar
Her işin bir zaman aşımı var. İş belirtilen zamanda tamamlanmazsa sunucu işi iptal eder. Aracıya dur sinyalini verir ve işi iptal edildi olarak işaret eder. Aracı tarafında bu, kalan tüm adımları iptal etmek ve kalan sonuçları karşıya yüklemek anlamına gelir.
İşlerin iptal zaman aşımı olarak bilinen bir yetkisiz kullanım süresi vardır ve iptal işlerinin tamamlanması gerekir. (unutmayın, adımlar iptalte bile çalıştırılacak şekilde işaretlenir.) Zaman aşımı ve iptal zaman aşımının ardından, aracı işin durdurulmuş olduğunu bildirmişse sunucu işi bir hata olarak işaretletir.
Bu Azure Pipelines aracı makinelere dağıtan aracılar zaman zaman sunucuya yanıt vermeyebilirsiniz. Bu durum, aracıdaki ana makine (güç kaybı, VM kapalı) giderse veya bir ağ hatası olursa ortaya çıkar. Aracı, bu koşulları algılamaya yardımcı olmak için dakikada bir sinyal iletisi gönderarak sunucuya hala çalışıyor olduğunu haber verir. Sunucu art arda beş dakika boyunca sinyal almayacaksa, aracının geri dönmeyer. İş, kullanıcıya işlem hattını yeniden denemesi gerektiğini haber vererek bir hata olarak işaretlenir.
CLI aracılığıyla çalıştırmaları yönetme
Azure DevOps CLI'sini kullanarak projenizin işlem hattı çalıştırmalarını listelenin ve belirli bir çalıştırmanın ayrıntılarını görüntüebilirsiniz. ayrıca işlem hattı çalıştırmanıza etiket ekleyebilir ve silebilirsiniz.
Önkoşullar
- Azure DevOps CLI ile Kullanmaya başlayın açıklandığı gibi Azure DevOps CLI uzantısını yüklemiş Azure DevOps gerekir.
- kullanarak Azure DevOps oturum
az loginaçma. - Bu makaledeki örnekler için varsayılan kuruluşu kullanarak
az devops configure --defaults organization=YourOrganizationURLayarlayın.
İşlem hattı çalıştırmalarını listele
az pipelines runs list komutuyla projenizin işlem hattı çalıştırmalarını listele. Çalışmaya başlama için bkz. Kullanmaya başlayın CLI ile Azure DevOps.
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 filtrele.
- org:Azure DevOps URL'si. Varsayılan kuruluşu kullanarak
az devops configure -d organization=ORG_URLyapılandırarak. Varsayılan olarak yapılandırılmamışsa veya kullanılarak toplanmazsagit configgereklidir. Örnek:--org https://dev.azure.com/MyOrganizationName/. - pipeline-ids:Derlemelerin listelen yer aldığı 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ırarak. Varsayılan olarak yapılandırılmamışsa veya kullanılarak toplanmazsagit configgereklidir. - sorgu sırası:İşlem hattı çalıştırmalarının listelenmiş olduğu sırayı tanımlayın. Kabul edilen değerler: FinishTimeAsc, FinishTimeDesc, QueueTimeAsc, QueueTimeDesc, StartTimeAscve StartTimeDesc.
- neden:Yalnızca belirtilen nedenle derlemeleri listele. Kabul edilen değerler batchedCI, buildCompletion, checkInShcompet, individualCI, manual, pullRequest, schedule , triggered, userCreatedve validateShcreaet değerleridir.
- requested-for:Belirtilen kullanıcı veya grup için istenen derlemeleri sınırla.
- result:Belirtilen sonuçla derlemeleri sınırla. Kabul edilen değerler iptal edilir,başarısızolur, hiçbiri, kısmenSucceededve başarılı olur.
- status:Belirtilen durumla derlemeleri sınırla. Kabul edilen değerlerin hepsi, iptal edildi,tamamlandı, inProgress, hiçbiri, Başlatlanmadıve ertelendi.
- tags:Belirtilen etiketlerin her biri ile derlemeleri sınırla. Boşlukla ayrılmış.
- top:Listelen en fazla derleme sayısı.
Örnek
Aşağıdaki komut, durumu tamamlandı ve başarılı sonucu olan ilk üç işlem hattı çalıştırması listelerve 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österme
az pipelines runs show komutuyla projenize bir işlem hattı çalıştırması için ayrıntıları göster. Çalışmaya başlama için bkz. Kullanmaya başlayın CLI ile Azure DevOps.
az pipelines runs show --id
[--open]
[--org]
[--project]
Parametreler
- id:Gerekli. İşlem hattı çalıştırması kimliği.
- open:İsteğe bağlı. Derleme sonuçları sayfasını web tarayıcınızda açar.
- org:Azure DevOps URL'si. Varsayılan kuruluşu kullanarak
az devops configure -d organization=ORG_URLyapılandırarak. Varsayılan olarak yapılandırılmamışsa veya kullanılarak toplanmazsagit configgereklidir. Ö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ırarak. Varsayılan olarak yapılandırılmamışsa veya kullanılarak toplanmazsagit configgereklidir.
Örnek
Aşağıdaki komut, id 123 ile işlem hattı çalıştırması 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ırmaya etiket ekleme
az pipelines runs tag add komutuyla projenizin işlem hattı çalıştırması için etiket ekleyin. Çalışmaya başlama için bkz. Kullanmaya başlayın CLI ile Azure DevOps.
az pipelines runs tag add --run-id
--tags
[--org]
[--project]
Parametreler
- run-id:Gerekli. İşlem hattı çalıştırması kimliği.
- tags:Gerekli. İşlem hattı çalıştırması için eklenecek etiketler (virgülle ayrılmış değerler).
- org:Azure DevOps URL'si. Varsayılan kuruluşu kullanarak
az devops configure -d organization=ORG_URLyapılandırarak. Varsayılan olarak yapılandırılmamışsa veya kullanılarak toplanmazsagit configgereklidir. Ö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ırarak. Varsayılan olarak yapılandırılmamışsa veya kullanılarak toplanmazsagit configgereklidir.
Örnek
Aşağıdaki komut, ID 123 ile IŞLEM hattı çalıştırması için YAML etiketini 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 listele
az pipelines runs tag list komutuyla projeniz içinde işlem hattı çalıştırması için etiketleri listele. Çalışmaya başlama için bkz. Kullanmaya başlayın CLI ile Azure DevOps.
az pipelines runs tag list --run-id
[--org]
[--project]
Parametreler
- run-id:Gerekli. İşlem hattı çalıştırması kimliği.
- org:Azure DevOps URL'si. Kullanarak varsayılan organizasyonu yapılandırabilirsiniz
az devops configure -d organization=ORG_URL. Varsayılan olarak yapılandırılmamışsa veya kullanılarak çekildiğinde gereklidirgit config. Örnek:--org https://dev.azure.com/MyOrganizationName/. - Proje: projenin adı veya kimliği. Varsayılan projeyi kullanarak yapılandırabilirsiniz
az devops configure -d project=NAME_OR_ID. Varsayılan olarak yapılandırılmamışsa veya kullanılarak çekildiğinde gereklidirgit config.
Örnek
Aşağıdaki komut, 123 kimliğiyle çalışan işlem hattı için etiketleri 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ıyla etiketi Sil
Az işlem hattı etiketi Delete komutunu kullanarak projenizde çalıştırılan bir işlem hattından bir etiketi silin. başlamak için bkz. Azure DevOps clı ile çalışmaya başlama.
az pipelines runs tag delete --run-id
--tag
[--org]
[--project]
Parametreler
- çalıştırma kimliği: gerekli. İşlem hattı çalıştırmasının KIMLIĞI.
- etiket: gerekli. İşlem hattı çalıştırmasıyla silinecek etiket.
- kuruluş: Azure DevOpskuruluş URL 'si. Kullanarak varsayılan organizasyonu yapılandırabilirsiniz
az devops configure -d organization=ORG_URL. Varsayılan olarak yapılandırılmamışsa veya kullanılarak çekildiğinde gereklidirgit config. Örnek:--org https://dev.azure.com/MyOrganizationName/. - Proje: projenin adı veya kimliği. Varsayılan projeyi kullanarak yapılandırabilirsiniz
az devops configure -d project=NAME_OR_ID. Varsayılan olarak yapılandırılmamışsa veya kullanılarak çekildiğinde gereklidirgit config.
Örnek
Aşağıdaki komut, KIMLIĞI 123olan işlem hattı çalıştırmasıyla YAML etiketini siler.
az pipelines runs tag delete --run-id 123 --tag YAML