Link to this sectionSürekli Entegrasyon (CI)#
Sürekli Entegrasyon (CI), yazılım geliştirmenin, değişikliklerin otomatik olarak entegre edilmesini ve test edilmesini içeren temel bir yönüdür. CI, geliştirme sürecinde sorunları erken ve sık bir şekilde yakalayarak yüksek kaliteli kod sürdürmemize olanak tanır. Ultralytics'te, kod tabanımızın kalitesini ve bütünlüğünü sağlamak için çeşitli CI testleri kullanıyoruz.
Link to this sectionCI Eylemleri#
İşte CI eylemlerimizin kısa bir açıklaması:
- CI: Bu, birim testlerinin çalıştırılmasını, 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.
- Bozuk Bağlantılar: Bu test, markdown veya HTML dosyalarımızdaki bozuk veya ölü bağlantılar için kod tabanını tarar.
- CodeQL: CodeQL, kodumuz üzerinde semantik analiz gerçekleştiren, potansiyel güvenlik açıklarını bulmaya ve yüksek kaliteli kod sürdürmeye yardımcı olan bir GitHub aracıdır.
- PyPI Yayınlama: Bu test, projenin herhangi bir hata olmadan paketlenip PyPI'a yayınlanıp yayınlanamayacağını kontrol eder.
Link to this sectionCI Sonuçları#
Aşağıda, ana depolarımız için bu CI testlerinin durumunu gösteren tablo yer almaktadır:
| Depo | CI | Docker Dağıtımı | Bozuk 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 karşılık gelen CI testinin son çalıştırılma durumunu gösterir. Bir test başarısız olursa, rozet "failing" (başarısız) durumunu, başarılı olursa "passing" (geçiyor) durumunu görüntüler.
Bir testin başarısız olduğunu fark edersen, bunu ilgili depoda bir GitHub sorunu (issue) üzerinden bildirmen büyük bir yardım olur.
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 incelemen her zaman önerilir.
Link to this sectionKod Kapsamı#
Kod kapsamı, testlerin çalıştırıldığında kod tabanının ne kadarının yürütüldüğünü temsil eden bir ölçümdür. Testlerinin kodunu ne kadar iyi çalıştırdığına dair içgörü sağlar ve test edilmemiş uygulama parçalarını belirlemede çok önemli olabilir. Yüksek bir kod kapsamı yüzdesi genellikle daha düşük hata olasılığı ile ilişkilendirilir. Bununla birlikte, kod kapsamının kusursuzluğu garanti etmediğini anlamak önemlidir. Sadece testler tarafından hangi kod parçalarının yürütüldüğünü gösterir.
Link to this sectioncodecov.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ı kapsam karşılaştırmaları ve kodun üzerinde hangi satırların kapsandığını gösteren görsel katmanlar sağlar.
Codecov ile entegre olarak, hatalara yatkın olabilecek veya daha fazla test gerektiren alanlara odaklanarak kodumuzun kalitesini korumayı ve geliştirmeyi hedefliyoruz.
Link to this sectionKapsam Sonuçları#
ultralytics Python paketinin kod kapsamı durumuna hızlı bir bakış atmak için, ultralytics kapsam sonuçlarının bir rozetini ve sunburst görselini ekledik. Bu görüntüler, testlerimiz tarafından kapsanan kod yüzdesini gösterir ve test çalışmalarımızın bir bakışta ölçümünü sunar. Tam ayrıntılar için Ultralytics Codecov raporunu ziyaret et.
| Depo | Kod Kapsamı |
|---|---|
| ultralytics |
Aşağıdaki sunburst grafiğinde, en içteki daire tüm projedir, merkezden uzaklaştıkça klasörler ve son olarak tek bir dosya yer alır. Her dilimin boyutu ve rengi, sırasıyla ifade sayısını ve kapsamı temsil eder.
Link to this sectionSSS#
Link to this sectionUltralytics'te Sürekli Entegrasyon (CI) nedir?#
Ultralytics'teki 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ı içerir. Ayrıca, Docker dağıtımı, bozuk bağlantı kontrolleri, güvenlik açıkları için CodeQL analizi ve yazılımımızı paketleyip dağıtmak için PyPI yayınlama gerçekleştiriyoruz.
Link to this sectionUltralytics, dokümantasyon ve koddaki bozuk bağlantıları nasıl kontrol eder?#
Ultralytics, markdown ve HTML dosyalarımızdaki bozuk bağlantıları kontrol etmek için özel bir CI eylemi kullanır. Bu, kullanıcıların her zaman doğru ve canlı kaynaklara erişebilmesini sağlayarak, ölü veya bozuk bağlantıları tarayıp tanımlayarak dokümantasyonumuzun bütünlüğünü korumaya yardımcı olur.
Link to this sectionCodeQL analizi, Ultralytics'in kod tabanı için neden önemlidir?#
CodeQL analizi, potansiyel güvenlik açıklarını bulmak ve yüksek kalite standartlarını korumak için semantik kod analizi gerçekleştirdiğinden Ultralytics için çok önemlidir. CodeQL ile kodumuzdaki riskleri proaktif bir şekilde tanımlayabilir ve azaltabilir, böylece sağlam ve güvenli yazılım çözümleri sunmamıza yardımcı olabiliriz.
Link to this sectionUltralytics, dağıtım için Docker'ı nasıl kullanıyor?#
Ultralytics, özel bir CI eylemi aracılığıyla projelerimizin dağıtımını doğrulamak için Docker kullanır. Bu süreç, Dockerfile ve ilgili betiklerin 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 olanak tanır.
Link to this sectionOtomatik PyPI yayınlamanın Ultralytics'teki 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 çok önemlidir ve kullanıcıların araçlarımızı Python Package Index (PyPI) aracılığıyla kolayca kurup kullanmalarına olanak tanır.
Link to this sectionUltralytics kod kapsamını nasıl ölçer ve bu 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ş kodu gösterebilir ve hatalara yatkın olabilecek test edilmemiş alanların ortaya çıkarılmasına yardımcı olabilir. Ayrıntılı kod kapsamı ölçümleri, ana depolarımızda görüntülenen rozetler veya doğrudan Codecov üzerinden incelenebilir.