CI özellikleri

Çoğu CI sisteminde bulabileceğiniz bazı özellikler aşağıda verilmiştir.

Çevre

Sistemin iş akışını yürüttüğü donanım ve yazılım ortamını seçmek ve anlamak önemlidir. Android uygulamaları için dikkat edilmesi gereken önemli noktalar şunlardır:

  • Platform: Linux, Mac, Windows ve sürümleri.
  • Kullanılabilir bellek: Uygulama derlemek ve emülatör çalıştırmak çok fazla RAM kullanabilir ve bellek yetersizliği hatalarını önlemek için JVM'nin yığın boyutu gibi parametrelerde ince ayar yapılması genellikle gerekir.
  • Önceden yüklenmiş yazılımlar: CI sistemleri genellikle Java Geliştirme Kiti (JDK), Android Yazılım Geliştirme Kiti (SDK), derleme araçları, platformlar ve emülatörler gibi hâlihazırda mevcut olan geniş bir araç koleksiyonuyla görüntüler sağlar.
  • Çalıştırıcı mimarisi ve talimat grubu: ARM, x86. Emülatörleri kullanırken bu önemlidir.
  • Ortam değişkenleri: Bazıları CI sistemi tarafından ayarlanır (örneğin: ANDROID_HOME) ve örneğin iş akışınıza kimlik bilgilerini gömmekten kaçınmak için kendi değerlerinizi ayarlayabilirsiniz.

Göz önünde bulundurmanız gereken başka pek çok konu vardır. Örneğin, kullanılabilir çekirdek sayısı ve sanallaştırmanın emülatörleri çalıştırmak için etkinleştirilip etkinleştirilmediği.

Günlükler ve raporlar

Bir adım başarısız olduğunda CI sistemi sizi bilgilendirir ve genellikle değişikliği birleştirmenize izin vermez. Nelerin yanlış gittiğini öğrenmek için günlüklerdeki hataları arayın.

Ayrıca, derleme ve test etme işlemleri sonucunda genellikle söz konusu yapının parçaları olarak depolanan raporlar oluşturulur. CI sistemine bağlı olarak, bu raporların sonuçlarını görselleştirmek için eklentileri kullanabilirsiniz.

Önbellek ve CI çalışma süreleri

CI sistemleri, işlemi hızlandırmak için derleme önbelleği kullanır. En basit haliyle, başarılı bir derlemenin ardından tüm Gradle önbellek dosyalarını kaydeder ve yeni bir derlemeden önce geri yükler. Bu, Gradle'ın derleme önbelleği özelliğine dayanır ve projenizde etkinleştirilmelidir.

Çalışma sürelerini ve güvenilirliği iyileştirmenin yollarından bazıları şunlardır:

  • Modüller: Bir değişiklikten hangi modüllerin etkilendiğini belirleme ve bunları yalnızca oluşturma ve test etme.
  • Önbellekleri atlama: Derleme, geliştiricinin değiştirdiği komut dosyaları içeriyorsa derleme önbelleklerini yoksayın. Sıfırdan derlemek daha güvenlidir.
  • Parça testleri: Özellikle donanımlı testler; testleri birden fazla cihaz arasında parçalara ayırmak faydalı olabilir. Bu özellik Android çalıştırıcı, Gradle Managed Cihazlar ve Firebase Test Lab tarafından desteklenir.
  • Parça derlemeler: Derlemeyi birden fazla sunucu örneğine parçalayabilirsiniz.
  • Uzak önbellek: Gradle'ın uzaktan önbelleğini de kullanabilirsiniz.

Başarısız testleri yeniden deneme

Güvenilirlik, zaman zaman başarısız olan test veya araçları ifade eder. Her zaman, stabil olmayan derleme ve testlere neden olan sorunları bulup düzeltmeye çalışmanız gerekir. Ancak özellikle araçlı testleri çalıştırırken bunların yeniden oluşturulması zordur. Yaygın olarak kullanılan bir strateji, başarısız olduklarında test çalıştırmalarını maksimum sayıda yeniden denemektir.

Yeniden denemeleri, birden çok düzeyde gerçekleşebileceği için yapılandırmanın tek bir yolu yoktur. Aşağıdaki tabloda, güvenilir olmayan bir test hatasına yanıt olarak gerçekleştirebileceğiniz işlemler özetlenmiştir:

Başarısız

İşlem

Emülatör bir saniye boyunca yanıt vermedi, zaman aşımı tetiklendi

Başarısız testi yeniden çalıştırma

Emülatör başlatılamadı

Tüm görevi yeniden çalıştırma

Kod ile ödeme aşamasında bağlantı hatası oluştu

İş akışını yeniden başlatma

Sistemin hangi bölümlerinin kaygan olduğunu günlüğe kaydedip izlemek; yalnızca yeniden denemelerle CI'nın güvenilir ve hızlı kalmasını sağlamaya yatırım yapmak önemlidir.