Flutter Yayınlarını Fastlane ve GitHub Actions ile Otomatikleştirin

Flutter Yayınlarını Fastlane ve GitHub iddiası ne anlatıyor? Flutter Yayınlarını Fastlane ve GitHub kapsamında, Şunu hayal edin: Cuma günü saat 16:00 ve takımınız sprint için son özelliği birleştirdi. Ancak ürün yöneticiniz, müşterinin hafta sonu inceleyebilmesi için…

36
Paylaş
Flutter Yayınlarını Fastlane ve GitHub Actions ile Otomatikleştirin

Flutter Yayınlarını Fastlane ve GitHub iddiası ne anlatıyor?

Flutter Yayınlarını Fastlane ve GitHub kapsamında, Şunu hayal edin: Cuma günü saat 16:00 ve takımınız sprint için son özelliği birleştirdi. Ancak ürün yöneticiniz, müşterinin hafta sonu inceleyebilmesi için gün sonuna kadar TestFlight’ta yeni bir yapı oluşturulmasını ister.

Flutter Yayınlarını Fastlane ve GitHub kapsamında, xcode’u açarsınız, arşivin bitmesini beklersiniz, dün olmayan bir kod imzalama hatasıyla ilgilenirsiniz, düzeltirsiniz, yeniden arşivlersiniz, tekrar beklersiniz, yüklersiniz ve App Store Connect’in bunu işlemesini beklersiniz. Daha sonra aynısını Android için de yaparsınız, ancak şimdi Android Studio aracılığıyla.

Flutter Yayınlarını Fastlane ve GitHub kapsamında, aPK’yı imzalayın, Firebase App Distribution’da oturum açın, dosyayı sürükleyin, test kullanıcılarını ekleyin, sürüm notlarını yazın ve gönder tuşuna basın. Şu anda saat 18.45. İki saattir bir satır ürün kodu yazmadınız. Bu, her sürüm döngüsünde gerçekleşir. Şimdi alternatifi hayal edin: kodunuzu geliştirme dalına gönderiyorsunuz. GitHub’un sunucuları devraldı.

Flutter Yayınlarını Fastlane ve GitHub

Tasarım ve teknik ayrıntılar

Flutter Yayınlarını Fastlane ve GitHub kapsamında, Birkaç dakika içinde yalıtılmış bir bulut ortamı kodunuzu kontrol etti, Flutter’ı yükledi, imza kimlik bilgilerinizin şifrelenmiş sırlardan kodunu çözdü, APK ve IPA’yı oluşturdu ve aynı anda hem Android test kullanıcıları için Firebase App Distribution’a hem de iOS test kullanıcıları için TestFlight’a dağıttı. Zaten evdesin. Bildirim test kullanıcılarına otomatik olarak gönderilir.

Flutter Yayınlarını Fastlane ve GitHub kapsamında, bu el kitabının oluşturduğu süreç budur. Bu kılavuzun sonuna ulaştığınızda dev seçeneğine bastığınızda, derlemeler otomatik olarak Firebase App Distribution ve TestFlight’a dağıtılır. Üremeye basmak dağıtacak Google Play Store ve Apple App Store’a. Bir daha asla bir IPA’yı manuel olarak dışa aktaramayacak veya bir APK yüklemeyeceksiniz.

Flutter Yayınlarını Fastlane ve GitHub kapsamında, bunu mümkün kılan araçlar, otomasyonu çalıştıran bulut bilgisayarları sağlayan GitHub Actions ve oluşturma, imzalama ve dağıtım mantığını yöneten Fastlane’dir. Bu el kitabı, hem uygulamanın kendisiyle aynı özeni ve belgelendirmeyi hak eden üretim altyapısı olarak ele alınır.

Okuyucu için pratik anlamı

Flutter Yayınlarını Fastlane ve GitHub kapsamında, ve Anahtarlarınızı Oluşturma Firebase Kimlik Bilgilerinizi Apple App Store Connect API Anahtarı Google Play Store Hizmet Hesabı Fastlane Eşleştirme Sertifikaları Depo Arka Plan Şifreleme: Dosyaları Sırlara Dönüştürme Android Anahtar Deposunu Oluşturma Apple API Anahtarını Kodlama GitHub Kimlik Bilgilerini Kodlama Match için Ortam Dosyanızı Kodlama GitHub Eylemlerini Yapılandırma Sırlar Android için Fastlane Kurulumu Gemfile Gradle Özellikler Dosyası Android Uygulama Dosyası Android Eklenti Dosyası Android Fastfile iOS için Fastlane Kurulumu iOS Gemfile iOS Uygulama Dosyası Matchfile iOS Eklenti Dosyası iOS Fastfile GitHub Eylemlerini Yazma İş Akışları Android İş Akışı iOS İş Akışı Ekran Görüntüleri Tam Dağıtım Uçtan Uca Nasıl Çalışır En İyi Uygulamalar Sertifika Deponuzu Özel Tutun ve Erişim -Kontrollü Minimum Yapı Numarası Stratejisi Belirleyin Dal Koruma Kuralları Ekleyin İş Akışınızı Çalıştırma Sürelerini ve Maliyetlerini İzleyin Sürüm Notlarını Sadece Giriş Olarak Değil Bir Dosyada Depolayın Yaygın Hatalar Fastlane’de Çalışma Alanı Yerine Xcode Projesini Kullanmak iOS için Settingsetupci Değil Yeni Bir Proje için Salt Okunur Modda Eşleştirme Çalıştırmak Derleme Numarasını Arttırmanın Unutulması Dosyaları Sonda Bir Yeni Satırla Kodlamak Firebase için Yanlış Dağıtım Türünü Kullanma Google Play Hizmet Hesabına Yetersiz İzin Verme Sonuç Referanslar GitHub Eylemleri Fastlane Apple Google Flutter Önkoşullar Başlamadan önce aşağıdakilerin yerinde olduğundan emin olun.

Flutter Yayınlarını Fastlane ve GitHub kapsamında, bunlardan herhangi birinin atlanması, teşhis edilmesi zor arızalara neden olacaktır. GitHub deposuna sahip mevcut bir Flutter projesi: Proje zaten yerel olarak oluşturuluyor olmalıdır. Flutter build apk –release ve flutter build ios –release –no-codesign’ın her ikisi de makinenizde başarılı olursa hazırsınız demektir.

Yönetici veya Hesap Sahibi rolüne sahip bir Apple Geliştirici hesabı: App Store Connect API anahtarları oluşturmak için buna ihtiyacınız vardır. Geliştirici rolü yeterli değildir. Yayınlanmış bir uygulamanın en azından taslak durumda olduğu bir Google Play Console hesabı: Google Play API, herhangi bir sürümü yüklenmemiş bir uygulamaya aktarım yapamaz.

Flutter Yayınlarını Fastlane ve GitHub iddiası ne anlatıyor?

Uygulamanız yepyeniyse otomasyonun devreye girmesinden önce uygulama listesini oluşturmak için manuel bir yükleme yapmanız gerekir. Fir ile bir Firebase projesi ebase Uygulama Dağıtımı hem Android hem de iOS için etkinleştirildi. Geliştirme makinenizde Ruby yüklü: Fastlane bir Ruby cevheridir. Kontrol etmek için ruby ​​-v komutunu çalıştırın. macOS, Ruby ile birlikte gelir ancak çoğu zaman güncelliğini yitirmiştir.

Homebrew aracılığıyla güncel bir sürümü yükleyin: Brew install Ruby. Fastlane yerel olarak kuruldu: Gem install fastlane ile yükleyin. CI sunucusu devralmadan önce kurulum sırasında bunu terminalinizden kullanacaksınız. MacOS’ta yüklü Homebrew: Bağımlılıkları yerel olarak yüklemek için kullanılır. Rahat edeceğiniz bir terminal: Bu kılavuzdaki her adım, komutların çalıştırılmasını içerir.

Çoğu için GUI alternatifi yok. CI/CD Nedir ve Flutter Uygulamanız Neden Buna İhtiyaç Duyar? CI/CD Konsepti, Sürekli Entegrasyon ve Sürekli Teslimat anlamına gelir. Özünde, kod yazma ile bu kodu kullanıcılara ulaştırma arasındaki adımları otomatikleştirme uygulamasıdır. Sürekli Entegrasyon, her kod değişikliğinin otomatik olarak oluşturulup test edildiği anlamına gelir.

Sürekli Teslimat, her başarılı yapının otomatik olarak dağıtıma hazırlandığı anlamına gelir. Özellikle mobil geliştirme için bu, neredeyse tüm diğer yazılım alanlarından daha önemlidir. Mobil yapılar karmaşıktır: derlemenin başarılı olması için tam olarak doğru şekilde bir araya getirilmesi gereken sertifikalarla kod imzalamayı, profil hazırlama profillerini, anahtar deposu dosyalarını ve API anahtarlarını içerir.

Bunu manuel olarak yapmak hataya açıktır. Otomatikleştirilmesi onu güvenilir ve tekrarlanabilir hale getirir. Neden Manuel Dağıtım Bir Sorundur Dağıtım manuel olduğunda, zaman içinde birçok şey meydana gelir. Öncelikle uzmanlık gerektiren bir beceri haline gelir. Yalnızca bunu daha önce yapan bir veya iki kişi adımları biliyor ve bu adımlar mevcut olmadığında ekip gönderim yapamıyor. İkincisi tutarsızdır.

Bir kişinin dizüstü bilgisayarında ürettiği yapı, başka birinin kendi bilgisayarında ürettiği yapıdan çok farklı ortam değişkenlerine veya Xcode ayarlarına sahip olabilir. Üçüncüsü, yavaş. Derlemeler, arşivler ve yüklemeler, gerçek mühendislik çalışmalarının akışını kesintiye uğratan bekleyen oyunlardır. Otomasyon üçünü de çözer. Adımlar sürüm kontrollü dosyalara yazılır.

Ortam her çalıştırmada aynıdır çünkü bu dosyalardan derlenen yeni bir bulut makinesidir. Ve siz bir sonraki özellik üzerinde çalışırken süreç arka planda çalışır. Mimari: Tüm Parçalar Nasıl Birbirine Bağlanıyor Herhangi bir konfigürasyon dosyasına dokunmadan önce, sistemin tamamını ve her bileşenin birbirine nasıl uyduğunu anlayın.

Bu resim olmadan inşa etmek, nereye bakılacağını bilmeden hata ayıklama hatalarına yol açar. GitHub Actions, koşucular adı verilen bulut tabanlı sanal makineler sağlar. Yapılandırılmış bir şubeye her basışınızda GitHub yeni bir çalıştırıcı başlatır (Android için Ubuntu, iOS için macOS), iş akışı dosyanızdaki adımları yürütür ve işiniz bittiğinde makineyi parçalar.

Makine her seferinde tamamen temiz bir şekilde çalışmaya başlar. Fastlane, açık kaynaklı bir araçtır. r mobil oluşturma ve dağıtım görevlerini otomatikleştirme. GitHub Actions çalıştırıcısının içinde çalışır ve platforma özgü adımları yönetir: uygulama paketini oluşturma, iOS kod imzalamayı yönetme ve ikili dosyaları dağıtım platformlarına yükleme.

GitHub Actions’ın çağırdığı Fastlane “şeritlerini” (adlandırılmış adım dizileri) yazarsınız. Fastlane Match, iOS kod imzalamaya yönelik Fastlane içindeki bir alt sistemdir. iOS uygulamaları, onları oluşturan makineye bir sertifika ve bir temel hazırlık profilinin yüklenmesini gerektirir. Match bunları şifrelenmiş özel bir GitHub deposunda saklar ve derlemeden önce bunları CI çalıştırıcısına indirir.

Bu, sertifikaları birden fazla makinede manuel olarak yönetme kabusunu ortadan kaldırır. Firebase App Distribution, geliştirme ortamı için oluşturulmuş APK ve IPA dosyalarınızı alır ve test kullanıcılarınızı otomatik olarak bilgilendirir. App Store Connect ve Google Play Console, üretim ortamına yönelik üretim yapılarınızı alır. Sertifika deposu, Fastlane Match’in okuduğu ve yazdığı ayrı bir özel GitHub deposudur.

iOS imzalama materyallerinizi yalnızca sizin bildiğiniz bir parolayla şifrelenmiş halde tutar. Kimlik Bilgilerinizi ve Anahtarlarınızı Oluşturma Bu bölüm, CI kanalının ihtiyaç duyduğu kimlik bilgilerini toplamak için birden fazla üçüncü taraf kontrol panelinde gezinmeyi içerir.

Firebase Kimlik Bilgileri Firebase Uygulama Dağıtımı’nın iki bilgiye ihtiyacı vardır: uygulama kimlikleriniz ve bunu sağlayan bir hizmet hesabı. Yapıları yüklemek için CI sunucusunun izni yok. Firebase Konsoluna gidin ve projenizi açın. Proje Ayarları’na gidin (sol kenar çubuğunda Projeye Genel Bakış’ın yanındaki dişli simgesi). Uygulamalarınız bölümüne ilerleyin.

Kayıtlı Android ve iOS uygulamalarınızın listelendiğini göreceksiniz. Her birinin Uygulama Kimliğini bulun ve kopyalayın. Android Uygulama Kimlikleri 1:1234567890:android:abc123def456 gibi görünür. iOS Uygulama Kimlikleri 1:1234567890:ios:abc123def456 gibi görünür. Proje Ayarlarında kalın ve Hizmet hesapları sekmesine tıklayın. Yeni özel anahtar oluştur’a tıklayın ve iletişim kutusunu onaylayın.

Makinenize bir .json dosyası indirilir. Bu dosya hizmet hesabı kimlik bilgisidir. Onu güvende tutun ve herhangi bir depoya taahhüt etmeyin. Apple App Store Connect API Anahtarı Apple, parola tabanlı API erişimini API anahtarlarıyla değiştirdi. Fastlane’in Apple ID kimlik bilgilerinize ihtiyaç duymadan App Store Connect ile iletişim kurmasına izin vermek için bir taneye ihtiyacınız var.

App Store Connect’e gidin ve üst gezinme bölümünde Kullanıcılar ve Erişim’e gidin. Entegrasyonlar sekmesini tıklayın ve ardından sol kenar çubuğunda App Store Connect API’yi seçin. Yeni bir anahtar oluşturmak için + düğmesine tıklayın. GitHub Actions CI gibi net bir ad verin. Erişim düzeyini Uygulama Yöneticisi olarak ayarlayın.

Anahtarı oluşturduktan sonra, sayfanın üst kısmında gösterilen Düzenleyici Kimliğini ve anahtar satırında gösterilen Anahtar Kimliğini not edin. .p8 dosyasını kaydetmek için API Anahtarını İndir’e tıklayın. Bu dosyayı yalnızca bir kez indirebilirsiniz. Eğer kaybedersen, yaratman gerekir yeni bir anahtar.

Google Play Store Hizmet Hesabı Google Play API, yüklemelerin kimliğini doğrulamak için bir hizmet hesabı (Google Cloud’daki makine kimliği) kullanır. Google Cloud Console’u açın ve Play Console’unuza bağlı projede olduğunuzdan emin olun. Sol kenar çubuğunda IAM ve Yönetici’ye gidin, ardından Hizmet Hesapları’nı tıklayın. Hizmet Hesabı Oluştur’a tıklayın. Ona github-actions-play-store gibi net bir ad verin.

Hizmet Hesabı Kullanıcısı rolünü atayın. Yaratılışı tamamlayın. Listede yeni oluşturulan hizmet hesabına tıklayın. Anahtarlar sekmesine gidin. Anahtar Ekle’yi ve ardından Yeni anahtar oluştur’u tıklayın. JSON biçimini seçin. Bir .json dosyası indirilir. Şimdi bu hizmet hesabını Play Console’a bağlayın. Google Play Console’a gidin, uygulamanızı açın ve Kurulum’a, ardından API erişimine gidin.

Uygulamanızda minimum Sürüm yöneticisi izniyle hizmet hesabına erişim izni verin. Fastlane Match Sertifika Havuzu Fastlane Match, iOS imzalama malzemelerinizi özel bir GitHub deposunda saklar. Şimdi yepyeni, tamamen boş, özel bir depo oluşturun. Uygulama sertifikalarınız gibi bir ad verin. Herhangi bir dosyayla başlatmayın.

Daha sonra, Fastlane’in CI çalıştırıcısından bu depodan okuyabilmesi ve bu depoya yazabilmesi için bir Kişisel Erişim Belirteci oluşturun. GitHub hesabınızın Ayarlarına gidin, aşağıya doğru kaydırın ve Geliştirici ayarları’na tıklayın, ardından Kişisel erişim belirteçleri’ne ve ardından Belirteçler (klasik)’e tıklayın. Yeni bir klasik oluştur belirteç. Fastlane-match-ci gibi açıklayıcı bir ad verin.

Kapsamları seç altında, repo kapsamını (tam depo erişimi sağlar) kontrol edin. Son kullanma tarihini en az bir yıl olarak veya güvenlik politikanız buna izin veriyorsa süre sonu olmayacak şekilde ayarlayın. Belirteci oluşturun ve hemen kopyalayın. GitHub bunu bir daha göstermeyecek.

Yeni oluşturulan belirteç: Arka Plan Şifrelemesi: Dosyaları Sırlara Dönüştürmek GitHub Eylemleri Sırları yalnızca düz metin dizelerini kabul eder. İmzalama kimlik bilgileriniz ikili dosyalardır: Android .jks anahtar deposu, Apple .p8 anahtar dosyası ve Firebase .json hizmet hesabı.

İkili dosyaları sır olarak saklamak için bunları, herhangi bir ikili veriyi yazdırılabilir ASCII karakterleri dizisi olarak temsil etmenin bir yolu olan Base64’e dönüştürürsünüz. Bu bölümdeki her komut terminalinizde çalışır. Her komutu çalıştırdıktan sonra ortaya çıkan .txt dosyasını açın, tüm içeriğini kopyalayın ve bu dizeyi güvenli bir yere kaydedin (bir parola yöneticisi iyi çalışır).

Kopyalandıktan sonra .txt dosyasını silin. Android Anahtar Deposunu Oluşturma Android anahtar deposu, uygulamanızın Play Store’daki kriptografik kimliğidir. Belirli bir anahtar deposuna sahip bir uygulamayı yayınladığınızda, her güncelleme için sonsuza kadar aynı anahtar deposunu kullanmanız gerekir. Bunu kaybetmek, mevcut uygulamanıza güncellemeleri aktaramayacağınız anlamına gelir.

Oluşturun ve güvenli bir şekilde yedekleyin.

keytool -genkey -v -anahtar deposu sürümü-anahtar deposu.jks -keyalg RSA -anahtar boyutu 2048 -geçerlilik 10000 -takma ad YOUR_KEY_ALIAS -dname “CN=Adınız, OU=Uygulama, O=Şirketiniz, L=Şehriniz, ST=Eyaletiniz, C=ABD” -storepass “YOUR_SECURE_PASSWORD” -keypass “YOUR_SECURE_PASSWORD” anahtar aracı, Java Geliştirme Kitinin bir parçasıdır ve Java şifreleme anahtar depolarını yönetmek için standart araçtır.

-keystore sürüm-keystore.jks çıktı dosyasını adlandırır. -keyalg RSA ve -keysize 2048, Android imzalama için standart seçenekler olan şifreleme algoritmasını ve anahtar uzunluğunu belirtir. -validity 10000, sertifika geçerliliğini yaklaşık 27 yıla ayarlar; bu, Play Store anahtarları için genellikle önerilen değerdir. -alias YOUR_KEY_ALIAS, anahtar deposunun içinde bu anahtara başvuracağınız addır.

Uygulama adınız gibi anlamlı bir şeyle değiştirin. -dname, sertifika sahibini tanımlamak için kullanılan Ayırt Edici Addır. Tüm değerleri kendi bilgilerinizle değiştirin. -storepass ve -keypass sırasıyla anahtar deposu dosyasını ve içindeki anahtarı koruyan şifrelerdir. GitHub Secrets yapılandırmasını basitleştiren aynı değer olabilirler.

Şimdi anahtar deposu dosyasını GitHub Secrets’ın depolayabileceği bir Base64 dizesine dönüştürün: base64 -i yayın-keystore.jks > yayın-keystore-base64.txt base64 -i yayın-keystore.jks, ikili .jks dosyasını okur ve bunu bir Base64 dizesi olarak kodlar. > operatörü, çıktıyı terminale yazdırmak yerine, Release-keystore-base64.txt dosyasına yönlendirir. Bu fi’yi aç

Editörün Notu

Otomatikleştirilmiş yayın süreçleri, geliştirme hızını artırırken hata riskini azaltır; Fastlane ve GitHub Actions entegrasyonlarıyla tekrarlayan manuel adımlardan kurtulup, daha verimli ve güvenilir sürüm yönetimi sağlayabilirsiniz.

Emre Demir
Yazar

Yazılım Editörü

Yazılım editörü ve full-stack geliştirici. Uygulama incelemeleri, kodlama rehberleri ve verimlilik araçları üzerine yazıyor. Açık kaynak projelere katkıda bulunuyor; karmaşık konuları yeni başlayanların anlayacağı şekilde anlatmaya özen gösteriyor.

Tüm yazıları gör →