Ultralytics YOLO27:
Get Started

Sürekli Entegrasyon (CI)#

Sürekli Entegrasyon (CI), değişikliklerin entegre edilmesini ve otomatik olarak test edilmesini içeren, yazılım geliştirmenin temel bir unsurudur. CI, geliştirme sürecinde sorunları erken ve sık yakalayarak yüksek kaliteli kodu korumamızı sağlar. Ultralytics'te kod tabanımızın kalitesini ve bütünlüğünü güvence altına almak için çeşitli CI testleri kullanıyoruz.

CI İşlemleri#

CI işlemlerimizin kısa açıklamaları şöyle:

  • CI: Bu, birim testlerini ve depoya bağlı olarak dışa aktarma kontrolleri ile kıyaslama testleri gibi daha kapsamlı testleri çalıştıran birincil CI testimizdir.
  • Docker Dağıtımı: Bu test, Dockerfile dosyasının ve ilgili betiklerin doğru çalıştığından emin olmak için projenin Docker kullanılarak dağıtımını denetler.
  • Bozuk Bağlantılar: Bu test, kod tabanındaki Markdown veya HTML dosyalarında bozuk ya da erişilemeyen bağlantı olup olmadığını tarar.
  • CodeQL: CodeQL, GitHub'ın kodumuz üzerinde anlamsal analiz yapan; olası güvenlik açıklarını bulmaya ve yüksek kod kalitesini korumaya yardımcı olan bir aracıdır.
  • PyPI Yayınlama: Bu iş akışı paketi derler ve her yeni sürümü PyPI'da yayınlar.

CI Sonuçları#

Aşağıdaki tabloda ana depolarımız için bu CI testlerinin durumu gösterilmiştir:

DepoCIDocker DağıtımıBozuk BağlantılarCodeQLPyPI ve Belgelerin Yayınlanması
yolov3YOLOv3 CIDocker Görüntülerini YayınlaBozuk bağlantıları denetleCodeQL
yolov5YOLOv5 CIDocker Görüntülerini YayınlaBozuk bağlantıları denetleCodeQL
ultralyticsultralytics CIDocker Görüntülerini YayınlaBozuk bağlantıları denetleCodeQLPyPI'ya yayınla Belgeleri yayınla Conda derlemeleri
sdkSDK CICodeQLPyPI'ya yayınla
liteLite CICodeQL
openapiOpenAPI CICodeQL
skillsSkills CICodeQL
yolo-ios-appiOS App CICodeQLPublish iOS App
yolo-flutter-appFlutter App CICodeQLPublish to pub.dev
thopUltralytics ActionsCodeQLPyPI'ya yayınla
actionsActions CICodeQLPyPI'ya yayınla
mkdocsUltralytics ActionsCodeQLPyPI'ya yayınla
docsUltralytics ActionsBozuk bağlantıları denetle
handbookUltralytics ActionsBozuk bağlantıları denetle
starsUltralytics ActionsUpdate Analytics
CLIPCLIP CI

Her rozet, ilgili depodaki main dalında son çalıştırılan karşılık gelen CI testinin durumunu gösterir. Bir test başarısız olursa rozet "başarısız", başarılı olursa "başarılı" durumunu gösterir.

Bir testin başarısız olduğunu fark edersen ilgili depoda bir GitHub sorunu açarak bildirmen çok yardımcı olur.

Unutma, CI testinin başarılı olması her şeyin kusursuz olduğu anlamına gelmez. Dağıtımdan veya değişiklikleri birleştirmeden önce kodu elle gözden geçirmen her zaman önerilir.

Kod kapsamı#

Kod kapsamı, testlerin çalışması sırasında kod tabanının ne kadarının yürütüldüğünü yüzde olarak gösteren bir ölçüttür. Testlerinin kodunu ne ölçüde çalıştırdığı hakkında fikir verir ve uygulamanın test edilmemiş bölümlerini belirlemede kritik önem taşıyabilir. Yüksek kod kapsamı yüzdesi çoğu zaman hata olasılığının daha düşük olmasıyla ilişkilendirilir. Ancak kod kapsamının hatasızlığı garanti etmediğini anlamak önemlidir. Yalnızca testlerin kodun hangi bölümlerini yürüttüğünü gösterir.

codecov.io ile entegrasyon#

Ultralytics olarak depolarımızı, kod kapsamını ölçüp görselleştiren popüler bir çevrimiçi platform olan codecov.io ile entegre ettik. Codecov; ayrıntılı analizler, commit'ler arasındaki kapsam karşılaştırmaları ve doğrudan kodun üzerinde hangi satırların kapsandığını gösteren görsel katmanlar sunar.

Codecov ile entegrasyon sayesinde, hataya açık olabilecek veya daha fazla test gerektiren alanlara odaklanarak kodumuzun kalitesini korumayı ve artırmayı hedefliyoruz.

Kapsam sonuçları#

Depolarımızın kod kapsamı durumuna hızlıca göz atabilmen için izlenen her projeye Codecov rozetleri ve güneş ışını grafiği önizlemeleri ekledik. Her güneş ışını grafiğinin en içteki halkası projenin tamamını temsil eder; merkezden dışarı doğru klasörler ve son olarak tek bir dosya yer alır. Her dilimin boyutu ifade sayısını, rengi ise kapsamı gösterir. Tüm ayrıntılar için Ultralytics Codecov kuruluşunu ziyaret et.

Sık Sorulan Sorular#

  • Ultralytics'te Sürekli Entegrasyon (CI), yüksek kalite standartlarını sağlamak için kod değişikliklerinin otomatik olarak entegre edilmesini ve test edilmesini kapsar. CI kurulumumuz birim testlerini, dışa aktarma testlerini ve kıyaslamaları çalıştırır. Ayrıca güvenlik açıklarını belirlemek için Docker dağıtımı, bozuk bağlantı denetimleri, CodeQL analizi ve yazılımımızı paketleyip dağıtmak için PyPI yayımlama işlemlerini gerçekleştiririz.

  • CodeQL analizi, olası güvenlik açıklarını bulmak ve yüksek kalite standartlarını korumak amacıyla anlamsal kod analizi gerçekleştirdiği için Ultralytics açısından kritik önem taşır. CodeQL sayesinde kodumuzdaki riskleri proaktif biçimde belirleyip azaltabilir, sağlam ve güvenli yazılım çözümleri sunmamıza yardımcı olabiliriz.

  • Ultralytics, özel bir CI eylemi aracılığıyla projelerimizin dağıtımını doğrulamak için Docker kullanır. Bu süreç, Dockerfile dosyamızın ve ilgili betiklerin doğru çalışmasını sağlayarak ölçeklenebilir ve güvenilir yapay zeka çözümleri için kritik önem taşıyan tutarlı ve yeniden üretilebilir dağıtım ortamları sunar.

  • Otomatik PyPI yayımlama, paketlerimizi oluşturur ve her yeni sürümü elle işlem yapmaya gerek kalmadan yayımlar. Bu adım, Ultralytics Python paketlerini dağıtmak ve kullanıcıların araçlarımızı Python Paket Dizini (PyPI) üzerinden kolayca kurup kullanabilmesini sağlamak için gereklidir.

  • Ultralytics, testler sırasında kod tabanının ne kadarının yürütüldüğüne ilişkin analizler sunan Codecov ile entegre olarak kod kapsamını ölçer. Yüksek kod kapsamı, kodun iyi test edildiğini gösterebilir ve hatalara açık olabilecek test edilmemiş alanları ortaya çıkarmaya yardımcı olur. Ayrıntılı kod kapsamı ölçümlerini ana depolarımızda görüntülenen rozetlerden veya doğrudan Codecov üzerinden inceleyebilirsin.

Yorumlar