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 önemli bir yönüdür. CI, geliştirme sürecinde sorunları erken ve sık sık yakalayarak yüksek kaliteli kodu korumamızı sağlar. Ultralytics'te, kod tabanımızın kalitesini ve bütünlüğünü sağlamak için çeşitli CI testleri kullanıyoruz.
CI İşlemleri
İşte CI eylemlerimizin kısa bir açıklaması:
- CI: Bu, birim testlerini, linting kontrollerini ve bazen de depoya bağlı olarak daha kapsamlı testleri çalıştırmayı içeren birincil CI testimizdir.
- Docker Dağıtımı: Bu test, Dockerfile ve ilgili komut dosyalarının 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, codebase'i markdown veya HTML dosyalarımızdaki bozuk veya çalışmayan bağlantılar için tarar.
- CodeQL: CodeQL, kodumuz üzerinde semantik analiz yapan, potansiyel güvenlik açıklarını bulmaya ve yüksek kaliteli kodu korumaya yardımcı olan GitHub'dan bir araçtır.
- PyPI Yayınlama: Bu test, projenin herhangi bir hata olmadan paketlenip PyPi'ye 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 (Repository) | CI | Docker ile Dağıtım | Bozuk Bağlantılar | CodeQL | PyPI ve Belge Yayınlama |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
Ultralytics | |||||
hub-sdk | |||||
hub | |||||
mkdocs | |||||
thop | |||||
eylemler | |||||
belgeler | |||||
el kitabı |
Her bir rozet, ilgili CI testinin üzerindeki son çalıştırmanın durumunu gösterir. main
ilgili deponun dalı. Bir test başarısız olursa, rozet "başarısız" durumunu görüntüler ve geçerse "geçen" durumunu görüntüler.
Başarısız olan bir test fark ederseniz, ilgili depoda bir GitHub sorunu aracılığıyla bunu bildirmeniz büyük bir yardım olacaktır.
Unutmayın, başarılı bir CI testi her şeyin mükemmel olduğu anlamına gelmez. Değişiklikleri dağıtmadan veya birleştirmeden önce kodu manuel olarak incelemeniz her zaman önerilir.
Kod Kapsamı
Kod kapsamı, testleriniz çalıştığında kod tabanınızın ne kadarının yürütüldüğünü temsil eden bir ölçüdür. Testlerinizin kodunuzu ne kadar iyi kullandığına dair fikir verir ve uygulamanızın test edilmemiş bölümlerini belirlemede çok önemli olabilir. Yüksek bir kod kapsamı yüzdesi genellikle daha düşük bir hata olasılığı ile ilişkilendirilir. Ancak, kod kapsamının kusurların yokluğunu garanti etmediğini anlamak önemlidir. Sadece kodun hangi bölümlerinin testler tarafından yürütüldüğünü gösterir.
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, hangi satırların kapsandığını gösteren ayrıntılı bilgiler, commitler arasındaki kapsam karşılaştırmaları ve doğrudan kodunuz üzerinde görsel katmanlar 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ı
Kod kapsamı durumuna hızlıca bir göz atmak için ultralytics
python paketi, rozet ve güneş ışını görselini ekledik ultralytics
kapsam sonuçları. Bu görüntüler, testlerimiz tarafından kapsanan kodun yüzdesini göstererek, test çabalarımızın hızlı bir şekilde anlaşılmasını sağlayan bir metrik sunar. Tüm ayrıntılar için lütfen şuraya bakın: https://codecov.io/github/ultralytics/ultralytics.
Depo (Repository) | Kod Kapsamı |
---|---|
Ultralytics |
Aşağıdaki güneş ışını grafiğinde, en içteki daire tüm projeyi temsil eder, merkezden uzaklaştıkça klasörler ve son olarak tek bir dosya bulunur. 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 testleri, linting kontrolleri ve kapsamlı testler çalıştırmayı içerir. Ek olarak, yazılımımızı paketlemek ve dağıtmak için Docker dağıtımı, bozuk bağlantı kontrolleri, güvenlik açıkları için CodeQL analizi ve PyPI yayınlama gerçekleştiriyoruz.
Ultralytics, 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 belirli 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ı tarayarak ve tanımlayarak belgelerimizin bütünlüğünü korumaya yardımcı olur.
CodeQL 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ği için Ultralytics için çok önemlidir. CodeQL ile kodumuzdaki riskleri proaktif olarak belirleyip azaltabilir, böylece 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ı doğrulamak için özel bir CI eylemi aracılığıyla Docker kullanır. Bu işlem, Dockerfile ve ilişkili komut dosyalarımızın doğru şekilde çalıştığından emin olarak, ölçeklenebilir ve güvenilir AI çözümleri için kritik öneme sahip tutarlı ve yeniden üretilebilir dağıtım ortamlarına olanak tanır.
Ultralytics'te otomatik PyPI yayınlamasının rolü nedir?
Otomatik PyPI yayınlama, projelerimizin hatasız bir şekilde paketlenip yayınlanmasını sağlar. Bu adım, Ultralytics'in Python paketlerinin dağıtımı için çok önemlidir ve kullanıcıların araçlarımızı Python Paket Dizini (PyPI) aracılığıyla kolayca kurup kullanmalarına olanak tanır.
Ultralytics, 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 bilgiler sağlayarak 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ı ölçümleri, ana depolarımızda veya doğrudan Codecov üzerinde görüntülenen rozetler aracılığıyla keşfedilebilir.