Sürekli Entegrasyon (CI)
Sürekli Entegrasyon (CI), değişiklikleri entegre etmeyi ve bunları otomatik olarak test etmeyi içeren yazılım geliştirmenin temel bir yönüdür. CI, geliştirme sürecinde sorunları erken ve sıklıkla yakalayarak yüksek kaliteli kod tutmamıza olanak tanır. Ultralytics olarak, kod tabanımızın kalitesini ve bütünlüğünü sağlamak için çeşitli CI testleri kullanıyoruz.
CI Eylemleri
İşte CI eylemlerimizin kısa bir açıklaması:
- CI: Bu, birim testlerini çalıştırmayı, lint kontrollerini ve depoya bağlı olarak bazen daha kapsamlı testleri içeren birincil CI testimizdir.
- Docker Dağıtımı: Bu test, Dockerfile ve ilgili betiklerin doğru çalıştığından emin olmak için projenin Docker kullanılarak dağıtımını kontrol eder.
- Kırık Bağlantılar: Bu test, markdown veya HTML dosyalarımızdaki herhangi bir kırık veya ölü bağlantı için kod tabanını tarar.
- CodeQL: CodeQL, kodumuz üzerinde anlamsal analiz gerçekleştiren, potansiyel güvenlik açıklarını bulmaya ve yüksek kaliteli kod sağlamaya yardımcı olan bir GitHub aracıdır.
- PyPI Yayınlama: Bu test, projenin herhangi bir hata olmadan paketlenip PyPI üzerinde yayınlanıp yayınlanamayacağını kontrol eder.
CI Sonuçları
Aşağıda, ana depolarımız için bu CI testlerinin durumunu gösteren tablo bulunmaktadır:
| Depo | CI | Docker Dağıtımı | Kırık Bağlantılar | CodeQL | PyPI ve Doküman Yayınlama |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Her rozet, ilgili deponun main dalındaki CI testinin son çalışma durumunu gösterir. Bir test başarısız olursa, rozet "başarısız" (failing) durumunu, geçerse "geçti" (passing) durumunu görüntüler.
Bir testin başarısız olduğunu fark edersen, bunu ilgili depoda bir GitHub sorunu (issue) aracılığıyla bildirmen büyük bir yardım olacaktır.
Unutma, başarılı bir CI testi her şeyin mükemmel olduğu anlamına gelmez. Dağıtımdan veya değişiklikleri birleştirmeden önce kodu manuel olarak gözden geçirmen her zaman önerilir.
Kod Kapsamı
Kod kapsamı, testlerin çalıştığında kod tabanının ne kadarının yürütüldüğünü gösteren bir metriktir. Testlerinin kodunu ne kadar iyi çalıştırdığına dair fikir verir ve uygulamanın test edilmemiş kısımlarını belirlemede çok önemli olabilir. Yüksek bir kod kapsamı yüzdesi genellikle daha düşük hata olasılığı ile ilişkilendirilir. Ancak, kod kapsamının kusursuzluğu garanti etmediğini anlamak önemlidir. Sadece testler tarafından hangi kod bölümlerinin yürütüldüğünü belirtir.
codecov.io ile entegrasyon
Ultralytics'te depolarımızı, kod kapsamını ölçmek ve görselleştirmek için popüler bir çevrimiçi platform olan codecov.io ile entegre ettik. Codecov, ayrıntılı içgörüler, commit'ler arasında kapsam karşılaştırmaları ve doğrudan kodunun üzerinde hangi satırların kapsandığını gösteren görsel bindirmeler sağlar.
Codecov ile entegre olarak, hatalara yatkın olabilecek veya daha fazla test gerektiren alanlara odaklanarak kodumuzun kalitesini korumayı ve iyileştirmeyi amaçlıyoruz.
Kapsam Sonuçları
ultralytics Python paketinin kod kapsamı durumuna hızlıca bir bakış atmak için, ultralytics kapsam sonuçlarının bir rozetini ve sunburst görselini dahil ettik. Bu görseller, testlerimiz tarafından kapsanan kod yüzdesini gösterir ve test çalışmalarımızın bir bakışta metriğini sunar. Tüm ayrıntılar için Ultralytics Codecov raporunu ziyaret et.
| Depo | Kod Kapsamı |
|---|---|
| ultralytics |
Aşağıdaki sunburst grafiğinde, en içteki daire projenin tamamıdır, merkezden uzaklaştıkça klasörler ve nihayetinde tek bir dosya yer alır. Her dilimin boyutu ve rengi, sırasıyla ifade sayısını ve kapsamı temsil eder.
SSS
Ultralytics'te Sürekli Entegrasyon (CI) nedir?
Ultralytics'te Sürekli Entegrasyon (CI), yüksek kalite standartlarını sağlamak için kod değişikliklerini otomatik olarak entegre etmeyi ve test etmeyi içerir. CI kurulumumuz birim testlerini, lint kontrollerini ve kapsamlı testleri çalıştırmayı kapsar. Ek olarak, yazılımımızı paketlemek ve dağıtmak için Docker dağıtımı, kırık bağlantı kontrolleri, güvenlik açıkları için CodeQL analizi ve PyPI yayınlama gerçekleştiriyoruz.
Ultralytics, dokümantasyon ve koddaki kırık bağlantıları nasıl kontrol eder?
Ultralytics, markdown ve HTML dosyalarımızdaki kırık bağlantıları kontrol etmek için özel bir CI eylemi kullanır. Bu, ölü veya kırık bağlantıları tarayıp tanımlayarak dokümantasyonumuzun bütünlüğünü korumaya yardımcı olur ve kullanıcıların her zaman doğru ve canlı kaynaklara erişmesini sağlar.
CodeQL analizi, Ultralytics kod tabanı için neden önemlidir?
CodeQL analizi, potansiyel güvenlik açıklarını bulmak ve yüksek kalite standartlarını korumak için anlamsal kod analizi gerçekleştirdiğinden Ultralytics için çok önemlidir. CodeQL ile kodumuzdaki riskleri proaktif olarak tanımlayıp azaltabiliriz, bu da sağlam ve güvenli yazılım çözümleri sunmamıza yardımcı olur.
Ultralytics, dağıtım için Docker'ı nasıl kullanır?
Ultralytics, projelerimizin dağıtımını özel bir CI eylemi aracılığıyla doğrulamak için Docker'ı kullanır. Bu süreç, Dockerfile ve ilgili betiklerimizin doğru çalıştığından emin olur, böylece ölçeklenebilir ve güvenilir AI çözümleri için kritik olan tutarlı ve tekrarlanabilir dağıtım ortamlarına izin verir.
Ultralytics'te otomatik PyPI yayınlamanın rolü nedir?
Otomatik PyPI yayınlama, projelerimizin hatasız bir şekilde paketlenip yayınlanmasını sağlar. Bu adım, Ultralytics'in Python paketlerini dağıtmak için gereklidir ve kullanıcıların araçlarımızı Python Package Index (PyPI) aracılığıyla kolayca yükleyip kullanmasına olanak tanır.
Ultralytics kod kapsamını nasıl ölçer ve neden önemlidir?
Ultralytics, testler sırasında kod tabanının ne kadarının yürütüldüğüne dair içgörüler sağlayan Codecov ile entegre olarak kod kapsamını ölçer. Yüksek kod kapsamı, iyi test edilmiş bir kodu gösterebilir ve hatalara yatkın olabilecek test edilmemiş alanları ortaya çıkarmaya yardımcı olabilir. Ayrıntılı kod kapsamı metrikleri, ana depolarımızda görüntülenen rozetler veya doğrudan Codecov üzerinden incelenebilir.