GitLab ve fastlane ile iOS uygulamalarını App Store'da yayınlama

GitLab ve fastlane ile iOS uygulamalarını App Store'da yayınlama

Fastlane ile GitLab, iOS uygulamalarını nasıl toplar, imzalar ve App Store'da yayınlar.

Son zamanlarda yaşadık Bir Android uygulamasının hızlı bir şekilde nasıl oluşturulacağı ve çalıştırılacağı hakkında gönderi GitLab ile ve Fastlane. Burada bir iOS uygulamasının nasıl oluşturulacağını, çalıştırılacağını ve TestFlight'ta nasıl yayınlanacağını göreceğiz. Ne kadar havalı olduğuna bakın GitLab Web IDE ile iPad Pro'da değişiklik yapıyorum, montajı alıyorum ve uygulamayı geliştirdiğim iPad Pro'da uygulamanın test sürümüne yönelik bir güncelleme alıyorum.

İşte alacağız Swift'de basit iOS uygulaması, videoyu kiminle kaydettiğim.

Apple Store yapılandırması hakkında birkaç kelime

Her şeyi birbirine bağlamak için bir App Store uygulamasına, dağıtım sertifikalarına ve bir ön hazırlık profiline ihtiyacımız olacak.

Buradaki en zor şey App Store'da imzalama haklarını ayarlamaktır. Umarım bunu kendi başınıza çözebilirsiniz. Yeniyseniz sizi doğru yöne yönlendireceğim, ancak burada Apple sertifikalarını yönetmenin inceliklerinden bahsetmeyeceğiz ve bunlar sürekli değişiyor. Bu yazı başlamanıza yardımcı olacaktır.

Benim uygulamalarım

Yapılandırma için bir kimliğiniz olması için App Store Connect'te bir uygulamaya ihtiyacınız var .xcodebuild. Profil ve uygulama kimliği, test uygulamalarını kullanıcılara dağıtmak için kod yapılarını, fiyatlandırmayı ve kullanılabilirliği ve TestFlight yapılandırmasını birleştirir. Herkese açık test yapmayın; küçük bir grubunuz varsa, kurulumu basitse ve Apple'dan ek izinlere ihtiyacınız yoksa özel testler yeterli olacaktır.

Başlatma profili

Uygulama kurulumuna ek olarak, Apple Geliştirici konsolunun Sertifikalar, Tanımlayıcılar ve Profiller bölümünde oluşturulmuş iOS dağıtım ve geliştirme anahtarlarına ihtiyacınız vardır. Bu sertifikaların tümü bir ön hazırlık profilinde birleştirilebilir.

Kimliği doğrulanacak kullanıcıların sertifika oluşturabilmesi gerekir, aksi takdirde adımlar sertifika ve iç çekiş bir hata göreceksiniz.

diğer seçenekler

Bu basit yöntemin yanı sıra sertifikaları ve profilleri yapılandırmanın başka yolları da vardır. Yani eğer farklı çalışırsanız uyum sağlamanız gerekebilir. En önemli şey yapılandırmaya ihtiyacınız olmasıdır .xcodebuild, gerekli dosyalara işaret edecektir ve koşucunun adı altında çalıştığı kullanıcı için anahtar zincirinin derleme bilgisayarında mevcut olması gerekir. Dijital imza için fastlane kullanıyoruz ve sorun varsa veya daha fazlasını öğrenmek istiyorsanız ayrıntılarına göz atın dijital imzalarla ilgili belgeler.

Bu örnekte yaklaşımı kullanıyorum sertifika ve iç çekiş, ancak gerçek kullanım için muhtemelen daha uygundur maç.

GitLab ve fastlane'i hazırlama

CI Runner'ı Hazırlama

Tüm bu verileri topladıktan sonra MacOS cihazında GitLab çalıştırıcısının konfigürasyonuna geçiyoruz. Ne yazık ki iOS uygulamalarını yalnızca MacOS'ta yapabilirsiniz. Ancak her şey değişebilir ve bu alanda ilerleme bekliyorsanız aşağıdaki gibi projeleri takip edin: xcbuild и imzave dahili görevimiz gitlab-ce#57576.

Koşucunun kurulumu çok basittir. Günceli takip et macOS'ta GitLab Runner'ı kurma talimatları.

Not. Koşucu çalıştırılabilir bir program kullanmalıdır shell. Bu, kapsayıcılar yerine doğrudan kullanıcı olarak çalışacak şekilde macOS üzerinde iOS oluşturmak için gereklidir. Eğer kullanıyorsanız shelloluşturma ve test etme, koşucu kullanıcı olarak doğrudan derleme ana bilgisayarında gerçekleştirilir. Konteynerler kadar güvenli değil, o yüzden göz atsanız iyi olur güvenlik belgeleriböylece hiçbir şeyi kaçırmazsın.

sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner start

Apple Anahtar Zinciri, bu ana bilgisayarda Xcode'un oluşturması gereken anahtarlara erişim sağlayacak şekilde yapılandırılmalıdır. Bunu test etmenin en kolay yolu, derlemeyi çalıştıracak kullanıcı olarak oturum açmak ve onu manuel olarak oluşturmaya çalışmaktır. Sistem anahtarlık erişimi isterse CI'nın çalışması için Her Zaman İzin Ver'i seçin. Artık anahtarlığı istemeyeceklerinden emin olmak için içeri girip ilk birkaç boru hattını izlemek faydalı olabilir. Sorun şu ki, Apple Otomatik modu kullanmamızı kolaylaştırmıyor, ancak bir kez çalıştırdığınızda her şey yoluna girecek.

hızlı şerit başlangıcı

Fastlane'i bir projede kullanmak için çalıştırın fastlane init. Sadece takip et fastlane'i yükleme ve çalıştırma talimatlarıözellikle ilgili bölümde Gem dosyası, çünkü otomatikleştirilmiş bir CI hattı aracılığıyla hızlı ve öngörülebilir bir lansmana ihtiyacımız var.

Proje dizininizde şu komutları çalıştırın:

xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init

fastlane temel bir yapılandırma isteyecek ve ardından projede üç dosya içeren bir fastlane klasörü oluşturacaktır:

1. fastlane/Appfile

Burada karmaşık bir şey yok. Apple Kimliğinizin ve Uygulama Kimliğinizin doğru olduğundan emin olun.

app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address

2. fastlane/Fastfile

Fastfile oluşturma adımlarını tanımlar. Fastlane'in birçok yerleşik özelliğini kullanıyoruz, dolayısıyla burada da her şey net. Sertifikaları alan, montajı gerçekleştiren ve TestFlight'a yükleyen bir satır oluşturuyoruz. Gerekirse bu süreci farklı görevlere bölebilirsiniz. Bütün bu işlemler (get_certificates, get_provisioning_profile, gym и upload_to_testflight) zaten fastlane'e dahil edilmiştir.

Etkinlik get_certificates и get_provisioning_profile imzalama yaklaşımıyla ilgili sertifika ve iç çekiş. eğer kullanıyorsanız maç ya da her neyse, değişiklik yapın.

default_platform(:ios)

platform :ios do
  desc "Build the application"
  lane :flappybuild do
    get_certificates
    get_provisioning_profile
    gym
    upload_to_testflight
  end
end

3. fastlane/Gymfile

Bu isteğe bağlı bir dosyadır, ancak varsayılan çıktı dizinini değiştirmek ve çıktıyı geçerli klasöre yerleştirmek için bunu manuel olarak oluşturdum. Bu CI'yi basitleştirir. Eğer ilgileniyorsanız, okuyun gym ve parametreleri belgeleme.

https://docs.fastlane.tools/actions/gym/

Bizim .gitlab-ci.yml

Yani proje için bir CI çalıştırıcımız var ve boru hattını test etmeye hazırız. Bakalım elimizde neler var .gitlab-ci.yml:

stages:
  - build

variables:
  LC_ALL: "en_US.UTF-8"
  LANG: "en_US.UTF-8"
  GIT_STRATEGY: clone

build:
  stage: build
  script:
    - bundle install
    - bundle exec fastlane flappybuild
  artifacts:
    paths:
    - ./FlappyBird.ipa

Все отлично! Fastlane için formatı gerektiği gibi UTF-8 olarak ayarladık, stratejiyi kullan clone yürütme programı ile shell, böylece her montaj için temiz bir çalışma alanımız olur ve aramanız yeterlidir. flappybuild fastlane, yukarıda görüldüğü gibi. Sonuç olarak TestFlight'ta en son montajın montajını, imzasını ve dağıtımını alıyoruz.

Ayrıca eseri alıp montajla birlikte kaydediyoruz. Lütfen formatın .ipa simülatörde çalışmayan imzalı bir ARM yürütülebilir dosyasıdır. Simülatör için çıktı istiyorsanız, onu üreten derleme hedefini eklemeniz ve ardından bunu yapıt yoluna eklemeniz yeterlidir.

Diğer ortam değişkenleri

Burada her şeyin çalışmasını sağlayan birkaç ortam değişkeni var.

FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD и FASTLANE_SESSION

Fastlane kimlik doğrulaması, App Store'da kimlik doğrulaması yapmak ve TestFlight'a yüklemek için gereklidir. Bunu yapmak için CI'da kullanılacak uygulama için bir şifre oluşturun. Detaylar burada.

İki faktörlü kimlik doğrulamanız varsa bir değişken oluşturun FASTLANE_SESSION (talimatlar orada).

FASTLANE_USER и FASTLANE_PASSWORD

O sertifika ve iç çekiş istek üzerine başlatma profili ve sertifikalar olarak adlandırıldığında değişkenleri ayarlamanız gerekir FASTLANE_USER и FASTLANE_PASSWORD. Detaylar burada. Farklı bir imzalama yöntemi kullanıyorsanız bu gerekli değildir.

Sonuç olarak

Her şeyin nasıl çalıştığını görebilirsiniz basit örneğimde.

Umarım bu yararlı olmuştur ve bir GitLab projesinde iOS yapılarıyla çalışmanız için size ilham vermiştir. İşte bir tane daha CI ipuçları her ihtimale karşı fastlane için. Kullanmak isteyebilirsiniz CI_BUILD_ID (artımlı derlemeler için) sürümü otomatik olarak artır.

Fastlane'in bir başka harika özelliği de otomatik ekran görüntüleri Kurulumu çok kolay olan App Store için.

Deneyiminizle ilgili yorumlarınızı bize bildirin ve iOS uygulama geliştirme için GitLab'ı iyileştirmeye yönelik fikirlerinizi paylaşın.

Kaynak: habr.com

Yorum ekle