« Tüm yayınlar

Bitrise Build Cache artık React Native'in C++ kodunu da önbellekliyor

Bitrise, React Native projelerinde Gradle, Xcode ve ccache önbelleklerini tek komutla birleştirerek CI'de sürekli yeniden derlenen C++ kodunu önbellekliyor.

React Native build'leri aslında iki ayrı build sistemidir: Android tarafında Gradle Kotlin/Java'yı derleyip cmake ile Hermes, Folly, ReactCommon ve turbo modüllerin C++ kodunu; iOS tarafında ise Xcode aynı C++'ı Clang üzerinden derler. Gradle'ın kendi build cache mekanizması JVM görevlerini iyi önbelleğe alsa da, React Native Android eklentisinin C++ görevleri cacheable olarak işaretlenmediği için CI'de her temiz checkout'ta tüm C++ dosyaları sıfırdan yeniden derleniyor ve bu her build'de dakikalarca zaman kaybına yol açıyor.

Bitrise bu boşluğu doldurmak için tek bir `bitrise-build-cache activate react-native` komutuyla üç farklı önbellek arka ucunu aynı anda devreye alan bir çözüm geliştirdi: Gradle için mevcut remote cache entegrasyonu, iOS için Xcode 26+'nın LLVM CAS tabanlı derleme önbelleklemesi ve C++ için ccache. ccache'in kendi uzak depolama protokolüyle Bitrise'ın gRPC tabanlı backend'i arasındaki uyumsuzluğu çözmek için, Unix soket üzerinden çalışan küçük bir Go süreci olan 'storage helper' geliştirilmiş; bu süreç ccache'in istek/yanıtlarını Bitrise'ın key/value API'sine çeviriyor.

Sistem, tek bir BITRISE_INVOCATION_ID üzerinden Gradle, Xcode ve ccache aktivitelerini birbirine bağlayarak Bitrise Insights'ta tek bir React Native build çalıştırması altında üç alt önbelleğin (hit rate, aktarılan bayt, süre gibi) ayrı ayrı görülebilmesini sağlıyor. Böylece mühendisler hangi önbelleğin ne kadar katkı sağladığını tek ekrandan izleyebiliyor.

Özel beta sürecinde katılımcı ekiplerden gelen sonuçlar dikkat çekici: bir ekip iOS build süresini 9 dakika 35 saniyeden 5 dakika 28 saniyeye (yaklaşık %43) indirirken, çift platformlu bir başka ekip Android'de ~17 dakikadan ~9 dakikaya (%46), iOS'ta ise ~10 dakika 50 saniyeden ~6 dakika 30 saniyeye (%40) düşüş gördü; en büyük kazanım, C++ görevlerinin daha önce hiç önbelleğe alınmadığı Android tarafında ortaya çıktı. Özelliği kullanmak isteyenler workflow'a 'Activate React Native Build Cache' adımını ekleyip normal yarn/npx komutlarını 'React Native Run' adımı üzerinden çalıştırarak sonuçları doğrudan Bitrise Insights'ta izleyebiliyor.