Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Çekme istekleri, kod incelemelerini kolaylaştırmak ve bir depo içinde kod hareketini yönetmek için harika bir araçtır. Dal ilkeleri , her kod değişikliği için gerçekleştirilmesi gereken gereksinimleri oluşturarak çekme isteği işlemi sırasında kod kalitesini zorlar. Bu ilkeler ekiplerin kodu gözden geçirme ve otomatik derlemeleri çalıştırmayla ilgili birçok en iyi uygulamayı zorunlu kılabilmesini sağlar, ancak birçok ekibin kod üzerinde gerçekleştirmek için ek gereksinimleri ve doğrulamaları vardır. Azure Repos, bu bireysel ve özel gereksinimleri karşılamak için çekme isteği durumları sunar. Çekme isteği durumları çekme isteği iş akışıyla tümleştirilir ve basit başarı/hata türü bilgilerini çekme isteğiyle ilişkilendirerek dış hizmetlerin bir kod değişikliğinde program aracılığıyla oturumunu kapatmasına olanak tanır. İsteğe bağlı olarak, dış hizmet değişikliği onaylayana kadar çekme istekleri engellenebilir.
Çekme isteği iş akışıyla tümleştirme birkaç farklı kavram içerir:
Bu konu başlığında çekme isteği durumları ve çekme isteği iş akışıyla tümleştirmek için bunların nasıl kullanılabileceğini öğreneceksiniz.
Çekme isteği durumu, hizmetlerin Durum API'sini kullanarak basit başarı/başarısızlık türü bilgilerini çekme isteğiyle ilişkilendirmesi için bir yol sağlar. Durum dört önemli veri parçasından oluşur:
succeeded
, failed
, pending
, notSet
, , notApplicable
veya error
.Temelde durum, bir kullanıcının veya hizmetin çekme isteğiyle ilgili değerlendirmelerini gönderme ve aşağıdaki gibi soruların yanıtını sağlama şeklidir:
Bir örneğe göz atalım. Bir projedeki tüm kod değişikliklerini oluşturmak için gereken bir CI hizmetini göz önünde bulundurun. Bu hizmet bir çekme isteğindeki değişiklikleri değerlendirdiğinde derleme ve test sonuçlarını geri göndermesi gerekir. Derlemeden geçen değişiklikler için pr'ye aşağıdaki gibi bir durum gönderilebilir:
{
"state": "succeeded",
"description": "CI build succeeded",
"context": {
"name": "my-ci-system",
"genre": "continuous-integration"
},
"targetUrl": "http://contoso.com/CI/builds/1"
}
Bu durum, çekme isteği ayrıntıları görünümünde son kullanıcıya görüntülenir:
state
simgesi kullanılarak kullanıcıya gösterilir (için yeşil onay işareti, için failed
succeeded
kırmızı X, için pending
bir saat ve için kırmızı ! ).error
description
simgesi yanında görüntülenir ve context
araç ipucunda bulunur.targetUrl
uygulandığında, açıklama URL'ye bağlantı olarak işlenir.Bir hizmet, her benzersiz context
için yalnızca en son durumlarını gösteren ek durumlar göndererek tek bir çekme isteği için çekme isteği durumunu güncelleştirebilir.
Birden çok durum göndermek, kullanıcıların beklentileri yönetmelerine yardımcı olur.
Örneğin, durum pending
göndermek, kullanıcıya sistemin bir olay aldığını ve çalışmaya başladığını kabul etmenin iyi bir yoludur.
Aşağıdaki örnekler gibi bilgilendirici description
bir örnek kullanmak, kullanıcının sistemin nasıl çalıştığını anlamasına daha fazla yardımcı olabilir:
Çekme isteğindeki kaynak dal değiştiğinde, en son değişiklikleri izlemek için yeni bir "yineleme" oluşturulur. Kod değişikliklerini değerlendiren hizmetler, çekme isteğinin her yinelemesine yeni durum göndermek isteyecektir. Çekme isteğinin belirli bir yinelemesine durum gönderme, durumun yalnızca değerlendirilen kod için geçerli olduğunu ve gelecekteki güncelleştirmelerin hiçbirinin geçerli olmadığını garanti eder.
Not
Oluşturulan çekme isteği 100.000'den fazla değiştirilmiş dosya içeriyorsa, performans ve kararlılık nedeniyle bu çekme isteği yinelemeleri desteklemez. Başka bir deyişle, bu tür çekme isteğinde yapılan ek değişiklikler dahil edilecek ancak bu değişiklik için yeni yineleme oluşturulmayacak. Ayrıca, mevcut olmayan bir yineleme için durum oluşturma girişimleri bir hata döndürür.
Buna karşılık, gönderilen durum koddan bağımsız olarak çekme isteğinin tamamı için geçerliyse yinelemeye göndermek gereksiz olabilir. Örneğin, yazarın (sabit bir PR özelliği) belirli bir gruba ait olup olmadığını denetlemenin yalnızca bir kez değerlendirilmesi gerekir ve yineleme durumu gerekli olmaz.
Durum ilkesi yapılandırılırken, yineleme durumu kullanılıyorsa, yeni değişiklikler olduğunda Sıfırlama koşulları Durumu sıfırla olarak ayarlanmalıdır.
Bu, en son yinelemenin durumu succeeded
olana kadar çekme isteğinin birleştirilemeyeceğini de garanti eder.
Bir yinelemede ve çekme isteğinde durum göndermeye yönelik REST API örneklerine bakın.
Yalnızca durumu kullanarak, bir dış hizmetten gelen ayrıntılar çekme isteği deneyimindeki kullanıcılara sağlanabilir.
Bazen, çekme isteğiyle ilgili bilgilerin paylaşılması gereken tek şey olsa da, diğer durumlarda gereksinimler karşılanıncaya kadar PR'lerin birleştirilmesi engellenmelidir.
Yerleşik ilkeler gibi Durum ilkesi de dış hizmetlerin gereksinimler karşılanıncaya kadar çekme isteği tamamlanmasını engellemesi için bir yol sağlar. İlke gerekiyorsa, çekme isteğini tamamlamak için geçmesi gerekir. İlke isteğe bağlıysa, yalnızca bilgilendirme amaçlıdır ve çekme isteğini tamamlamak için durumu succeeded
gerekli değildir.
Durum ilkeleri, diğer dal ilkeleri gibi yapılandırılır. Yeni bir durum ilkesi eklerken, durum ilkesinin adı ve türü girilmelidir. Durum daha önce deftere nakledilmişse listeden seçebilirsiniz; Bu yeni bir ilkeyse, ilkenin adını biçim türü/adına yazabilirsiniz.
Durum ilkesi belirtildiğinde, bu ilkenin succeeded
geçirilebilmesi için seçili adla context
eşleşen bir durumunun mevcut olmasını gerektirir.
Yetkili bir hesap, belirli bir hesabın ilkeyi onaylayacak durumu gönderme yetkisine sahip olmasını gerektirecek şekilde de seçilebilir.
İlke uygulanabilirliği seçenekleri, bu ilkenin çekme isteği oluşturulduğunda geçerli olup olmadığını veya ilkenin yalnızca çekme isteğine ilk durum gönderildikten sonra uygulanıp uygulanmayacağını belirler.
Varsayılan olarak uygula - İlke, çekme isteği oluşturulur oluşturulmaz uygulanır. Bu seçenekle, durum gönderilene kadar succeeded
çekme isteği oluşturulduktan sonra ilke geçirilmez.
Çekme isteği, durumunun notApplicable
deftere nakledilmesiyle ilkeden muaf olarak işaretlenebilir ve bu da ilke gereksinimini kaldırır.
Koşullu : İlk durum çekme isteğine gönderilene kadar ilke uygulanmaz.
Bu seçenekler birlikte bir dinamik ilke paketi oluşturmak için kullanılabilir.
Pr geçerli ilkeler için değerlendirilirken varsayılan olarak uygulanacak en üst düzey bir "düzenleme" ilkesi ayarlanabilir.
Daha sonra, ek koşullu ilkelerin uygulanacağı belirlendikçe (belki de belirli bir derleme çıkışına göre), gerekli hale getirmek için durum gönderilebilir.
Bu düzenleme ilkesi değerlendirme tamamlandığında işaretlenebilir succeeded
veya ilkenin uygulanmadığını pr'ye gösterecek şekilde işaretlenebilir notApplicable
.
Çekme isteği durumunu güncelleştirmek için hizmeti tetikleyebilen önceden tanımlanmış hizmet kancası olaylarına ek olarak, son kullanıcıya tetikleyici eylemleri vermek için Azure DevOps Services uzantılarını kullanarak durum menüsünü genişletmek mümkündür. Örneğin, durum son kullanıcı tarafından yeniden başlatılabilir bir test çalıştırmasına karşılık geliyorsa, testlerin çalıştırılmasını tetikleyebilecek durum menüsünde yeniden başlat menü öğesinin olması mümkündür. Durum menüsü eklemek için katkı modelini kullanmanız gerekir. Daha fazla bilgi için bkz . Azure DevOps uzantısı örneği.
Çekme İsteği Durumu API'si hakkında daha fazla bilgi edinin ve nasıl yapılır kılavuzlarına göz atın:
Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunEğitim
Modül
Azure Repos'ta pull request'ler ile işbirliği yapma - Training
Azure Repos'ta pull request'lerle işbirliği gerçekleştirme
Sertifikasyon
Microsoft Sertifikalı: DevOps Mühendisi Uzmanı - Certifications
Bu sertifikasyon, şu teknik görevleri yerine getirme yeteneğinizi ölçer: Süreçleri ve iletişimi tasarlama ve uygulama, kaynak denetim stratejisi tasarlama ve uygulama, derleme ve yayın işlem hatlarını tasarlama ve uygulama, güvenlik ve uyumluluk planı geliştirme ve izleme stratejisi uygulama.
Belgeler
Çekme istekleri için özel hedef dalları yapılandırma - Azure Repos
Dalların listesini olası çekme isteği hedefleri olarak belirtmeyi öğrenin.
Çekme isteği şablonlarıyla çekme isteği açıklamalarını geliştirme - Azure Repos
Çekme isteği şablonlarını kullanarak çekme isteği açıklamalarını standartlaştırmayı öğrenin
Harici hizmet için dal ilkesi yapılandırma - Azure Repos
Bir dal ilkesini üçüncü taraf çekme isteği durum sunucusundan durum gerektirecek şekilde yapılandırma