Codemagic CLI araçlarıyla build arşiv oluşturma
Tags: flutter, dart, ios, build
Published: 2023-01-03 11:38:26

**Codemagic CLI araçlarıyla build arşiv oluşturmak için:**

Bu adım, bir build arşiv oluşturmayı ve Flutter proje dizinindeki bir terminalde yürütülen Flutter derleme komutlarını ve `Codemagic CLI` Araçlarını kullanarak derlemenizi App Store Connect'e yüklemeyi kapsar. Bu, `login keychain`'den izole edilmiş geçici bir keychain'le dağıtım sertifikalarının (distribution certificates) tam denetimine sahip bir build arşivi oluşturmanıza olanak tanır.


1) Codemagic CLI araçlarını kurun:
`pip3 install codemagic-cli-tools`

2) App Store Connect ile işlemleri otomatikleştirmek için App Manager erişimi olan bir `App Store Connect API Key` oluşturmanız gerekir. Sonraki komutları daha kısa hale getirmek için new key'den şu ortam değişkenlerini ayarlayın: issuer id, key id, and API key file.


```
export APP_STORE_CONNECT_ISSUER_ID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
export APP_STORE_CONNECT_KEY_IDENTIFIER=ABC1234567
export APP_STORE_CONNECT_PRIVATE_KEY=`cat /path/to/api/key/AuthKey_XXXYYYZZZ.p8`
```


3) Bir build arşivini kodlamak ve paketlemek için bir iOS Distribution sertifikasını export etmeniz veya oluşturmanız gerekir.

Mevcut sertifikalarınız varsa, her sertifika için aşağıdaki komutu yürüterek private key'i export edebilirsiniz:

```
openssl pkcs12 -in <certificate_name>.p12 -nodes -nocerts | openssl rsa -out cert_key
```


Veya aşağıdaki komutu uygulayarak yeni bir private key oluşturabilirsiniz:

`ssh-keygen -t rsa -b 2048 -m PEM -f cert_key -q -N ""`


Daha sonra, CLI araçlarının private keyden otomatik olarak yeni bir iOS Dağıtımı oluşturmasını sağlayabilirsiniz.


4) Kod imzalama için kullanılacak yeni bir geçici keychain ayarlayın:
`keychain initialize`

daha sonra bunu çalıştırın: 
`keychain use-login`

Bu, makinenizdeki uygulamalarla ilgili olası kimlik doğrulama sorunlarını önlemek için  `login keychain`'inizi (oturum açma anahtar zincirinizi) varsayılan olarak ayarlar.


5) App Store Connect'ten kod imzalama dosyalarını alın:

```

app-store-connect fetch-signing-files $(xcode-project detect-bundle-id) \
    --platform IOS \
    --type IOS_APP_STORE \
    --certificate-key=@file:/path/to/cert_key \
    --create
```


Burada cert_key, export edilen iOS Distribution certificate private key veya otomatik olarak yeni bir sertifika oluşturan yeni bir private keydir.Sertifika, App Store Connect'te yoksa özel anahtardan oluşturulacaktır.

6) Alınan sertifikaları keychain'ize ekleyin:  
  `keychain add-certificates`

7) Getirilen kod imzalama profillerini kullanmak için Xcode proje ayarlarını güncelleyin: 
   `xcode-project use-profiles`

8) Flutter bağımlılıklarını yükleyin: 
   `flutter packages pub get`

9) CocoaPods bağımlılıklarını yükleyin:  
  `find . -name "Podfile" -execdir pod install \;`

10) Flutter'ı iOS projesini oluşturun:

```
flutter build ipa --release \
    --export-options-plist=$HOME/export_options.plist
```

export_options.plist öğesinin xcode-project use-profiles komutunun çıktısı olduğunu unutmayın.


11) Uygulamayı App Store Connect'te yayınlayın:

```
app-store-connect publish \
    --path $(find $(pwd) -name "*.ipa")
```


12) Daha önce de belirtildiği gibi, makinenizdeki uygulamalarla ilgili kimlik doğrulama sorunlarını önlemek için login keychain'inizi (oturum açma anahtar zincirinizi) default olarak ayarlamayı unutmayın:
`keychain use-login`


30 dakika içinde, yapınızın doğrulandığını ve TestFlight'ta test kullanıcılarına sunulmaya hazır olduğunu bildiren bir e-posta alacaksınız. Bu noktada, TestFlight'ta yayınlamayı veya devam edip uygulamanızı App Store'da yayınlamayı seçebilirsiniz.