Kullanılabilir çekme isteği durum denetimleri

Azure DevOps Hizmetleri

Durum denetimleri, testler geçene, güvenlik taramaları temizlenene veya diğer koşullar karşılanana kadar birleştirmeleri engelleyerek kalite standartlarını zorlar. Azure DevOps Hizmetleri ve dış araçları çekme isteği Durum API'sini kullanarak durum denetimleri sonrası.

Dal ilkesi olarak durum denetimi gerektirmek için, Denetlenecek durum bölümünde bir ilke oluşturun ve denetimin Tür ve Ad değerini biçiminde genre/namebelirtin. Ardından çekme isteği, denetim rapor succeedededene kadar birleştirilir.

Durum değerleri ve birleştirme davranışı

Durum denetimi çekme isteğine bir sonuç gönderdiğinde aşağıdaki değerlerden birini bildirir:

Değer Gerekli ilkeyle davranış İsteğe bağlı ilke ile davranış
succeeded ✓ İlkenin engelini kaldırır Informational
failed ✗ Blok birleştirme Informational
error ✗ Blok birleştirme Informational
pending ⏳ Blok birleştirme (sonuç bekleniyor) Informational
notApplicable ✓ İlke gereksinimini atlar Informational
notSet ⏳ Beklemede olarak ele alındı Informational

Note

Gerekli bir ilke varsayılan olarak Uygula olarak ayarlandığında, ilke yapılandırmasını değiştirmeden belirli bir çekme isteğinin ilke gereksinimini kaldırmak için gönderi notApplicable gönderebilirsiniz. Bu, bir denetimin belirli bir değişiklik için geçerli olmadığı durumlarda kullanışlıdır.

Durum denetimi ilkesi eklemeyle ilgili genel yönergeler için bkz. Dış hizmet için dal ilkesi yapılandırma. Yetkili kimlik kısıtlamaları ve ilke uygulanabilirlik ayarları gibi gelişmiş ilke seçenekleri için bkz. Çekme isteği iş akışlarını çekme isteği durumuyla özelleştirme ve genişletme.

Birinci taraf Azure DevOps durum denetimleri

Azure DevOps Hizmetleri tarafından yerel olarak gönderilen tek durum denetimleri aşağıdadır. Her denetim sabit bir Tarz değeri kullandığından, hizmet ilk durumunu göndermeden önce veya sonra dal ilkesini yapılandırabilirsiniz. Diğer tüm durum denetimleri PR Durum API'si aracılığıyla dış hizmetlerden gelir.

Azure DevOps için GitHub Gelişmiş Güvenlik

Bu durum denetimleri, depoda Azure DevOps etkinleştirilmesi için GitHub Gelişmiş Güvenlik gerektirir. Denetimler, kod tarama (CodeQL), bağımlılık taraması ve gizli dizi tarama arasında algılanan güvenlik açıklarını değerlendirir.

Tarz İsim Denetlenecek durum Description
AdvancedSecurity AllHighAndCritical AdvancedSecurity/AllHighAndCritical Depoda herhangi bir tarama türünden (kod, bağımlılık veya gizli dizi) çözümlenmemiş kritik veya yüksek önem derecesine sahip bir güvenlik açığı olduğunda bloklar birleştirilir. Gelişmiş Güvenlik işlem hattı görevlerinin etkinleştirildiği bir derleme doğrulama ilkesi gerektirir.
AdvancedSecurity NewHighAndCritical AdvancedSecurity/NewHighAndCritical Çekme isteği herhangi bir tarama türünden yeni kritik veya yüksek önem derecesine sahip güvenlik açıkları ortaya çıktığında bloklar birleştirilir. Mevcut depo güvenlik açıkları birleştirmeyi engellemez. Çekme isteği dalını taramak için Gelişmiş Güvenlik işlem hattı görevlerine sahip bir derleme doğrulama ilkesi gerektirir.

Note

Her iki durum denetimi de AdvancedSecurity , durumların en son tarama sonuçlarını yansıtmasını sağlamak için ile Wait for Processing: true yapılandırılmış bir derleme doğrulama ilkesi ve Gelişmiş Güvenlik tarama görevleri gerektirir. Bağımlılık tarama veya kod tarama (CodeQL) için görevde etkinleştirin Wait for ProcessingAdvancedSecurity-Publish . Kod tarama için görev üzerinde AdvancedSecurity-CodeQL-Analyze de etkinleştirin. Gelişmiş Güvenlik taramasıyla ilk başarılı işlem hattı çalıştırmasının ardından her iki denetim de Durum'da görünür.

Tavsiye

Deponuzda mevcut çözülmemiş uyarılar varsa, tüm çekme isteklerinin hemen engellenmesini önlemek için ile AdvancedSecurity/NewHighAndCritical başlayın. Uyarı kapsamı çözümlendikten sonra'a AdvancedSecurity/AllHighAndCritical geçiş yapın.

Kurulum yönergeleri için bkz. Çekme isteği durum denetimlerini ayarlama.

Önemli

Durum denetimi ilkesini yapılandırırken Gelişmiş Seçenekler'i varsayılan değerlerinde bırakın. Yetkili kimliğin değiştirilmesi veya yineleme kimliğinin gerekli olması durum denetimlerinin doğru şekilde deftere nakledilmesini engeller.

kod kapsamını Azure Pipelines

Azure Pipelines, bir işlem hattı çekme isteği için kod kapsamı sonuçlarını yayımladığında otomatik olarak bir kod kapsamı durum denetimi gönderir. Tür, işlem hattı adıdır, bu nedenle tam genre/name değer işlem hattınızı nasıl adlandırdığınıza bağlıdır.

Tarz İsim Denetlenecek durum Description
{pipeline-name} codecoverage {pipeline-name}/codecoverage Çekme isteğinde değiştirilen satırların fark kapsamı yüzdesini bildirir. Varsayılan olarak danışmanlık; , minimum kapsam eşiğine sahip gerekli bir dal ilkesi olarak yapılandırılmadığı sürece birleştirmeleri engellemez.

Varsayılan geçiş eşiği 70% fark kapsamıdır. Eşiği ve diğer ayarları ayarlamak için deponuzun köküne bir azurepipelines-coverage.yml dosya ekleyin:

coverage:
  status:
    comments: on
    diff:
      target: 80

değerini istediğiniz minimum fark kapsamı yüzdesiyle değiştirin 80 .

Kurulum yönergeleri için bkz. Kod kapsamı ilkesiyle dal korumasını zorunlu kılma.

Tavsiye

Tür, Azure Pipelines işlem hattınızın görünen adından türetilir; ayrı olarak yapılandırılabilir bir değer değildir. Örneğin, CI - Main adlı bir işlem hattı, değeri denetlemek için Durum olarak kullanırCI - Main/codecoverage. Durum denetimleri açılan listede yalnızca hizmet çekme isteğine en az bir durum gönderdikten sonra görünür. Henüz çalışmayan yeni tümleştirmeler için değeri doğrudan alana yazın genre/name .

Özel ve dış durum denetimleri

Çekme İsteği Durumu API'sini kullanan tüm hizmetler, çekme isteklerinize durum denetimi gönderebilir. REST API aracılığıyla bir durum denetimi göndermek için, çağıran kimliğin depoda Çekme isteklerine katkıda bulunma iznine sahip olması gerekir.

Bir hizmet bir durum gönderdiğinizde, genre/name ilke eklediğinizde durumu denetleme açılan listesinde görünür. Henüz gönderilmemiş yeni hizmetler için değeri doğrudan yazın genre/name .

Ortak entegrasyon desenleri

Tümleştirme türü Description Examples
Sunucuları derleme ve test etme Çekme isteği dalında testleri çalıştırdıktan sonra başarılı veya başarısız sonuçlar veren dış CI araçları. Jenkins, GitLab CI, CircleCI, Travis CI
Kod kalitesi analizi Hataları, güvenlik açıklarını ve kod kokularını taraan statik analiz araçları. SonarQube, SonarCloud
Güvenlik tarayıcıları Çekme isteği değişikliklerini taradıktan sonra sonuçları yayınlayan Microsoft olmayan güvenlik açığı tarayıcıları. AYRıCA SARIF biçim sonuçlarını da destekler. Snyk, Checkmarx, WhiteSource (Mend), Microsoft Güvenlik DevOps
Uyumluluk ve ilke Lisanslama, kod standartları, mevzuat gereksinimleri veya dağıtıma hazır olma durumunu doğrulayan ilke zorlama araçları. Özel uyumluluk denetleyicisi, dağıtım geçitleri, lisans tarayıcıları
GitHub Actions GitHub Actions iş akışlarından gelen denetimler, depo GitHub bağlandığında Azure DevOps PR'lerde görünür. Yapılandırma ayrıntıları için Azure DevOps GitHub tümleştirmesine bakın. Herhangi bir GitHub Actions iş akışı durumu gönderebilir
Onaylar ve geçitler Birleştirmelere izin verilmeden önce el ile veya otomatik onay gerektiren hizmetler. SERVICENow, REST API aracılığıyla özel onay hizmetleri

İlke yapılandırma seçenekleri

Durum denetimi ilkesi eklerken şunları yapılandırabilirsiniz:

  • İlke gereksinimi: İlkeyi gerektiği gibi ayarlayın (denetim başarılı olmadığı sürece birleştirmeleri engeller) veya isteğe bağlı (yalnızca bilgilendirme).
  • Yetkili kimlik: hangi hesapların ilkeyi karşılayan durum değerlerini gönderebileceğini kısıtlayın. Herhangi bir hesaba izin vermek için boş bırakın.
  • Sıfırlama koşulları: Yeni bir işleme gönderildiğinde durumun sıfırlanıp sıfırlamayacağını belirtin. Varsayılan olarak, yeni bir işleme gönderme işlemi gerekli durum denetimlerini beklemeye alarak en son kodunuzu değerlendirmeye zorlar. Bir durumun işlemeler arasında kalıcı olmasına izin vermek için , yeni değişiklikler olduğunda Durumu sıfırla'yı devre dışı bırakın.
  • İlke uygulanabilirliği: İlkenin hemen mi (Varsayılan olarak uygula) yoksa yalnızca ilk durum gönderildikten sonra mı (Koşullu) uygulanacağını seçin.
    • Varsayılan olarak uygula: İlke blokları bir durum gönderilene kadar birleştirilir succeeded . Belirli bir çekme isteğinin gereksinimini atlamak için gönderi notApplicable gönderebilirsiniz.
    • Koşullu: İlke, yalnızca denetim ilk durumunu gönderdikten sonra etkinleşir.
  • Yol filtresi: İlkeyi, belirli yollardaki dosyaları değiştiren PR'lerle kısıtlayın (isteğe bağlı).

Özel durum denetimi uygulamak için bkz: