Bu yazıda, Plarium Krasnodar stüdyosunun CI/CD hata ayıklama sürecinde biriktirdiği iOS uygulamalarının derlenmesi ve kullanıcılara sunulması deneyimini paylaşıyoruz.
Eğitim
Apple cihazları için uygulamaların geliştirilmesinde şu veya bu şekilde yer alan herkes, altyapının tartışmalı rahatlığını zaten takdir etmiştir. Zorluklar her yerde bulunur: geliştirici profili menüsünden hata ayıklama ve derleme araçlarına kadar.
İnternette "temel bilgiler" hakkında pek çok makale var, bu yüzden asıl şeyi vurgulamaya çalışacağız. Uygulamanızı başarıyla oluşturmak için ihtiyacınız olan şey:
benzersiz ile oluşturulan uygulama ID (Paket Tanımlayıcının önemine dikkat edilmelidir, çünkü joker karakter kimliğinin kullanılması uygulamanın birçok işlevinin kullanılmasını imkansız hale getirir, örneğin: İlişkili Etki Alanları, Anlık Bildirimler, Apple Oturum Açma ve diğerleri);
Herhangi bir macOS cihazında Anahtar Zinciri aracılığıyla bir geliştirici sertifikası oluşturulmalıdır. Sertifikanın türü çok önemlidir. Uygulama ortamına (Geliştirme, Kalite Güvencesi, Hazırlama, Üretim) ve uygulama imza profilinin türüne bağlı olarak farklılık gösterecektir (Geliştirme veya Dağıtım).
Ana profil türleri:
Geliştirme - geliştirme ekibinin başvurusunu imzalamak için tasarlanmış bir Geliştirme sertifikası kullanılır (tip adı iPhone Geliştiricisi: XXXXX);
Geçici - bir test başvurusunun imzalanması ve QA departmanı tarafından dahili doğrulama yapılması amacıyla geliştiricinin Dağıtım sertifikası kullanılır (tip adı iPhone Dağıtımı: XXXXX);
App Store - TestFlight aracılığıyla harici test yapmak ve App Store'a yüklemek için sürüm sürümü, geliştiricinin Dağıtım sertifikası kullanılır.
Geliştirme ve Özel amaçlı profiller oluşturulurken ayrıca belirtilir aygıt listesi, üzerine kullanıcılar için erişimi daha da kısıtlamanıza olanak tanıyan bir yapı yükleyebilirsiniz. Kapalı beta testi sırasında erişim kontrolü daha sonra tartışılacak olan TestFlight tarafından gerçekleştirildiğinden App Store profilinde cihaz listesi yoktur.
Anlaşılır olması açısından geliştiricinin profilini aşağıdaki tablo şeklinde sunabilirsiniz. Bu, montaj için hangi parametrelere ihtiyacımız olduğunu ve bunları nereden alabileceğimizi anlamamızı kolaylaştırır.
montaj
Montajları projeye ve ortama göre ayırmayı kolaylaştırmak için aşağıdaki gibi profil adlarını kullanırız: ${ProjectName}_${Instance}, yani proje adı + örnek (uygulama ortamına bağlıdır: Dev, QA, GD, Staging, Live vb.).
Yapı sunucusuna aktarıldığında profil, adını benzersiz bir kimliğe dönüştürür ve klasöre taşınır /Users/$Username/Library/MobileDevice/Provisioning Profiles (burada $Username derleme sunucusunun kullanıcı hesabı adına karşılık gelir).
*.ipa dosyası oluşturmanın iki yolu vardır: eski (PackageApplication) ve modern (XcAchive oluşturma ve dışa aktarma yoluyla). Sürüm 8.3'ten bu yana uygulama dosyası paketleme modülü Xcode dağıtımından kaldırıldığı için ilk yöntemin eski olduğu kabul ediliyor. Kullanmak için modülü eski Xcode'dan (sürüm 8.2 ve öncesi) klasöre kopyalamanız gerekir: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/
$Method — teslim yöntemi, uygulama imza profili türüne karşılık gelir; yani Geliştirme için değer geliştirme, Geçici için - geçici ve App Store için - uygulama mağazası olacaktır.
$BundleID — Uygulama ayarlarında belirtilen Uygulama Kimliği. Komutla kontrol edebilirsiniz:
defaults read $ProjectDir/Info CFBundleIdentifier
$DevAccName и $ProfileId — daha önce kullanılmış olan ve dışa aktarma ayarlarındaki değerlerle eşleşmesi gereken geliştirici adı ve imza profili kimliği ayarları.
$TeamID — geliştiricinin adından sonra parantez içinde on haneli kimlik, örneğin: iPhone Geliştiricisi: …… (XXXXXXXXXX); Anahtarlık'ta kontrol edilebilir.
Daha sonra, dışa aktarma komutunu kullanarak gerekli *.ipa dosyasını elde ederiz:
Artık toplanan dosyanın son kullanıcıya teslim edilmesi yani cihaza kurulması gerekiyor.
HockeyApp, AppBlade ve diğerleri gibi Geliştirme ve Özel yapıların dağıtımına yönelik birçok hizmet vardır, ancak bu makalede uygulamaları dağıtmak için bağımsız bir sunucudan bahsedeceğiz.
İOS için uygulamanın kurulumu 2 aşamada gerçekleşir:
Öğeler Hizmeti aracılığıyla uygulama yükleme bildiriminin alınması.
*.ipa dosyasının manifestte belirtilen bilgilere göre HTTPS aracılığıyla kurulumu.
Bu nedenle, öncelikle şu komutla bir kurulum bildirimi (dosya türü *.plist) oluşturmamız gerekir:
Gördüğünüz gibi manifest, uygulamanın oluşturulmasında yer alan hemen hemen tüm parametreleri içerir.
Uygulama sürümü ($AppVersion) şu komutla kontrol edilebilir:
defaults read $ProjectDir/Info CFBundleVersion
Parametre $ipaUrl *.ipa dosyasını indirmek için doğrudan bir bağlantı içerir. İOS'un yedinci sürümünden itibaren uygulamanın HTTPS aracılığıyla yüklenmesi gerekir. Sekizinci versiyonda, bildirimin formatı biraz değişti: gibi uygulama simgelerinin ayarlarının bulunduğu bloklar
<images>
<image>...</image>
</images>
Bu nedenle, uygulamayı yüklemek için aşağıdaki gibi bir bağlantıya sahip basit bir HTML sayfası yeterlidir:
Plarium, geliştirme ve test departmanlarının ihtiyaçları için kendi yapı kurulum uygulamasını oluşturdu ve bu bize şunları sağlıyor:
özerklik ve bağımsızlık,
Erişim kontrolünün merkezileştirilmesi ve dinamik olarak oluşturulan "geçici" bağlantılar aracılığıyla uygulamaların güvenli kurulumu,
genişletilebilir işlevsellik (yani geliştirme ekibi gerekirse eksik işlevleri mevcut bir uygulamaya entegre edebilir).
Test
Şimdi uygulamanın yayın öncesi testlerinden bahsedeceğiz. Test uçuşu.
İndirme için gerekli koşullar, App Store imza profilinin türü ve oluşturulan API anahtarlarının varlığıdır.
Uygulamayı indirmenin birkaç yolu vardır:
Xcode (Organizatör) aracılığıyla,
alttool aracılığıyla,
Xcode'un eski sürümleri (şimdi Transporter) için Uygulama Yükleyici aracılığıyla.
Otomatik indirme için ayrıca iki yetkilendirme yöntemine sahip olan alttool kullanılır:
Uygulamaya Özel Şifre,
API Anahtarı.
Uygulamanın API Anahtarını kullanarak indirilmesi tercih edilir.
API Anahtarını almak için şuraya gidin: bağlantı ve bir anahtar oluşturun. *.p8 formatındaki anahtarın kendisine ek olarak iki parametreye ihtiyacımız olacak: IssuerID ve KeyID.
Daha sonra indirilen anahtarı derleme sunucusuna aktarın:
Nerede apiKey и apiIssuer API anahtar oluşturma sayfasından alan değerlerine sahip olun.
Daha sonra başarılı doğrulamanın ardından uygulamayı şu komutla yüklüyoruz: --upload-app aynı parametrelerle.
Uygulama bir veya iki gün içinde Apple tarafından test edilecek ve ardından harici test uzmanlarına sunulacak: kurulum için bağlantılar e-postayla gönderilecek.
Alttool aracılığıyla bir uygulamayı indirmenin başka bir yolu da Uygulamaya Özel Şifre kullanmaktır.
Uygulamaya Özel Şifreyi almak için şu adrese gitmeniz gerekir: bağlantı ve bunu Güvenlik bölümünde oluşturun.
Daha sonra bu şifre ile Keychain’de build sunucu kaydı oluşturmalısınız. Xcode'un 11. sürümünden itibaren bu şu komutla yapılabilir:
Parametre değeri olarak -p değerini alabilirsin $AppPswd şifrelenmemiş (açık) biçimde.
Ancak, daha önce de belirtildiği gibi, performans açısından, alttool yetkilendirmesi için API Anahtarını seçmek daha iyidir, çünkü Xcode'un farklı sürümlerinde belirli sorunlar vardır ("Anahtarlığı görmüyor", yükleme sırasında yetkilendirme hataları vb.).
Aslında hepsi bu. Herkesin App Store'da başarılı derlemelere ve sorunsuz sürümlere katkıda bulunmasını dilerim.