Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Çekme istekleri, bir depo içinde kod incelemelerini kolaylaştırmak ve 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 zorunlu kılar. 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. Bu bireysel ve özel gereksinimleri karşılamak için Azure Repos, çekme istek durumu sunar. Çekme isteği durumları çekme isteği iş akışıyla bütünleşir ve basit başarı/hata türü bilgilerini çekme isteğiyle ilişkilendirerek dış hizmetlerin bir kod değişikliğini program aracılığıyla onay vermesine olanak tanır. İsteğe bağlı olarak, dış hizmet değişikliği onaylayana kadar çekme istekleri engellenebilir.
Önkoşullar
| Kategori | Gereksinimler |
|---|---|
| Proje erişimi | projesiüyesi. |
| İzinler | - Özel projelerde kodu görüntüleme: En az Temel erişimi. - Özel projelerde kodu klonlama veya katkıda bulunma: Projede Katkıda Bulunanlar güvenlik grubuna üyelik veya ilgili izinler. - Dal veya depo izinlerini ayarlayın: izinleri yönetin dal veya depo için. - Varsayılan dalı değiştirme: Depo için izinleri ilkeleri düzenleyin. - Depoyu içeri aktarma: Proje Yöneticileri güvenlik grubunun üyesi veya Git proje düzeyi Depo oluşturma izni İzin verolarak ayarlanmıştır. Daha fazla bilgi için bkz . Git deposu izinlerini ayarlama. |
| Hizmetler | Repo'lar etkinleştirildi. |
| Araçlar | Opsiyonel. az repos komutlarını kullanın: Azure DevOps CLI. |
Uyarı
Genel projelerde, Paydaş erişimi olan kullanıcılar, kod görüntüleme, kopyalama ve koda katkıda bulunma dahil olmak üzere Azure Depolarına tam erişime sahiptir.
| Kategori | Gereksinimler |
|---|---|
| Proje erişimi | projesiüyesi. |
| İzinler | - Kodu görüntüle: En az Temel erişim. - Kodun bir kopyasını oluşturma veya koda katkıda bulunma: Katkıda Bulunanlar güvenlik grubunun üyesi veya projedeki ilgili izinlere sahip olma. |
| Hizmetler | Repo'lar etkinleştirildi. |
PR iş akışına (çekme isteği) entegre edilmesi birkaç farklı kavram içerir.
- Çekme isteği durumu - servislerin başarı/başarısızlık bilgilerini bir çekme isteğiyle bağlantı kurması için bir yol sağlar.
- Durum ilkesi - Çekme isteği durumu başarılı olduğunu belirtene kadar çekme isteğinin tamamlanmasını engellemeye yönelik bir mekanizma sağlar.
- Özel eylemler: Azure DevOps Services uzantılarını kullanarak durum menüsünü genişletmenin bir yolunu sağlar.
Bu konu başlığında, PR durumlarını ve bunların PR iş akışına nasıl entegre edilebileceğini öğreneceksiniz.
Çekme isteği durumu
Çekme isteği durumu, hizmetlerin Durum API'sinikullanarak basit başarı/başarısızlık türü bilgilerini bir çekme isteğiyle ilişkilendirmesi için bir yol sağlar. Durum dört önemli veri parçasından oluşur:
-
State. Önceden tanımlanmış aşağıdaki durumlardan biri:
succeeded,failed,pending,notSet,notApplicableveyaerror. - Açıklama. Son kullanıcıya durumu açıklayan bir dize.
- Bağlam. Durum için bir ad: genellikle durumu gönderen varlığı tanımlar.
- URL. Kullanıcıların duruma özgü daha fazla bilgi edinebileceği bir bağlantı.
Aslında, durum bildirisi, bir kullanıcının veya hizmetin çekme isteğiyle ilgili değerlendirme oluşturup göndermesi ve şu soruları yanıtlaması şeklidir:
- Değişiklikler gereksinimleri karşıladı mı?
- Gereksinimleri karşılamak için ne yapmam gerektiği hakkında nereden daha fazla bilgi edinebilirim?
Bir örneğe bakalım. Bir projedeki tüm kod değişikliklerini oluşturmak için gereken bir CI hizmeti düşünün. 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 şu şekilde bir durum paylaşılabilir:
{
"state": "succeeded",
"description": "CI build succeeded",
"context": {
"name": "my-ci-system",
"genre": "continuous-integration"
},
"targetUrl": "http://contoso.com/CI/builds/1"
}
Bu durum PR Ayrıntıları görünümünde son kullanıcıya gösterilir.
Çekme isteği durumu 
-
statekullanıcıya bir simge kullanılarak (succeedediçin yeşil onay işareti,failediçin kırmızı X,pendingiçin bir saat veerroriçin kırmızı !) gösterilir. - Simgenin yanında
descriptiongörüntülenir vecontextise bir araç ipucunda gösterilir. - bir
targetUrluygulandığında, açıklama URL'ye bağlantı olarak işlenir.
Durum güncelleştiriliyor
Bir hizmet, her benzersiz contextiçin yalnızca en son durumu gösterilecek olan ek durumlar göndererek tek bir çekme isteğinin durumunu güncelleyebilir.
Birden çok durum göndermek, kullanıcıların beklentileri yönetmelerine yardımcı olur.
Örneğin, pending durumu 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 bir description kullanmak, kullanıcının sistemin nasıl çalıştığını anlamasına daha fazla yardımcı olabilir:
- "Derleme kuyruğa alındı"
- Yapı devam ediyor
- "Derleme başarılı oldu"
Yineleme durumu
Ç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. PR'nin belirli bir yinelemesine durum bildirimi yapmak, durumun yalnızca değerlendirilen kod için geçerli olmasını ve gelecekteki güncelleştirmelerin etkilenmemesini garanti eder.
Uyarı
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. Bu, böyle bir PR'deki herhangi bir ek değişikliğin dahil edileceği ancak bu değişiklik için yeni bir yineleme oluşturulmayacağı anlamına gelir. 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 ilkesini yapılandırırken, eğer yineleme durumu kullanılıyorsa, Sıfırlama koşulları, yeni değişiklikler olduğunda Durum sıfırlamaolarak ayarlanmalıdır.
Bu, en son yinelemenin durumu succeededolana kadar PR'ın (çekme isteğinin) birleştirilemeyeceğini garanti eder.
Iterasyon için durum gönderme ve çekme isteği için durumgönderme örnekleri için REST API dökümanlarına bakın.
Durum politikası
Yalnızca durumu kullanarak, bir dış hizmetten gelen ayrıntılar PR deneyimindeki kullanıcılara sağlanabilir.
Bazen, bir PR (çekme isteği) hakkında bilgi paylaşımı yeterlidir, ancak diğer durumlarda PR'lerin gereksinimler karşılanana kadar birleştirilmesi engellenmelidir.
Kutuda yer alan ilkeler gibi, Durum ilkesi dış hizmetlerin gereksinimler karşılanıncaya kadar çekme isteğinin tamamlanmasını engellemesi için bir yol sağlar. Politika gerekiyorsa, çekme isteğini tamamlamak için onaylanması gerekir. İlke isteğe bağlıysa, sadece bilgilendirme amaçlıdır ve çekme isteğinin tamamlanması için succeeded durumu gerekli değildir.
Durum ilkeleri, diğerdal ilkeleri gibi yapılandırılır. Yeni durum ilkesi eklerken, durum ilkesinin adı ve tür girilmelidir. Durum daha önce girilmişse listeden seçebilirsiniz; eğer bu yeni bir politika ise, politikanın adını türü/adıbiçiminde yazabilirsiniz.
Durum ilkesi belirtildiğinde, bu ilkenin geçirilebilmesi için seçili adla eşleşen succeededcontext durumunun mevcut olması gerekir.
Yetkili hesap, belirli bir hesabın ilkeyi onaylayacak durumu gönderme yetkisine sahip olmasını zorunlu kılacak şekilde de seçilebilir.
İlke uygulanabilirliği
İlkesi 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 uygulanır - Politika, çekme isteği oluşturulduğunda hemen devreye girer. Bu seçenekle, pull request oluşturulduktan sonra
succeededdurumu gönderilene kadar ilke onaylanmaz. Çekme isteği, ilke gereksinimini kaldıracaknotApplicabledurumu gönderilerek ilkeden muaf olarak işaretlenebilir.Koşul - İlk durum çekme isteğine gönderilene kadar politika 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 "orkestrasyon" 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.
Değerlendirilmesi tamamlandığında bu orkestrasyon politikası succeeded olarak işaretlenebilir veya ilkenin geçerli olmadığını PR'a belirtmek için notApplicable olarak işaretlenebilir.
Özel eylemler
Çekme isteği durumunu güncelleştirmek için hizmeti tetikleyebilecek ö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üne 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 Azure DevOps uzantısı örneğine bakın.
Sonraki adımlar
PR Durum API'si hakkında daha fazla bilgi edinin ve kılavuzlara göz atın.
- Node.js ile çekme isteği durum sunucusu oluşturma
- Özel dal ilkeleri oluşturmak için Azure İşlevleri kullanma
- Harici bir hizmet için dal ilkesini yapılandır