• Hakkımızda
  • Yazı Gönder
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
No Result
View All Result
Home DevOps

Flutter CI/CD Süreçleri (Azure DevOps Pipeline) – Part1/iOS

Ali Murat Çevik by Ali Murat Çevik
Mayıs 11, 2023
in DevOps, Flutter
7 min read
0
Flutter CI/CD Süreçleri (Azure DevOps Pipeline) – Part1/iOS
WhatsApp'ta PaylaşTwitter'da PaylaşLinkedIn'de PaylaşTelegram'da Paylaş

Herkese selamlar, bu yazıda yazılım geliştirme süreçlerinin verimliliğini ve çevikliğini artıracak bir konuyu ele almak istedim. Part1 olarak fazlandırdığım bu yazıda Azure DevOps ortamında Flutter ile bir iOS uygulamanın buildini alacağız. İlerleyen yazılarda TestFlight ve AppStore’a uygulamanın gönderilmesini inceleyeceğiz. Mümkün olduğu kadar adımları detaylı aktarmaya çalışacağım. İşlemlere başlamadan önce CI/CD süreçleri hakkında bilgi vermek isterim.
Keyifli okumalar 🚀

CI (Continuous Integration/ Sürekli Entegrasyon) ve CD (Continuous Delivery & Deployment / Sürekli Teslim & Dağıtım)

Geliştirmekte olduğunuz bir projede yaptığınız ufak bir değişikliğin dahi çalışabilir olduğunu test etmeniz ve doğrulamanız gerekmektedir. En basitinden bir imla hatasını dahi düzeltmiş olsanız projede beraber çalıştığınız tester, po veya müşteri tarafında bu değişiklik incelenmek istenebilir ama öncesinde projenin düzgün bir şekilde build alınıp alınmayacağından emin olmanız gerekmektedir. Uygulamanın gün içerisinde defalarca kez manuel olarak build alınıp mail, Firebase App Distribution veya Testflight ile dağıtımını yapmak bir geliştiricinin bazen gün içinde yarı zamanını alabiliyor. CI/CD süreçleri ile bu işlemlerin otomatize edilmesine yarar. Bu işlem genellikle kodların master branch’e açılan pull requestin merge edilmesiyle sağlanır.

Başlayalım 🚀

Azure DevOps ortamında Pipelines kısmına girelim. Daha önceden oluşturulan tüm pipelineları burada görüntülemek ve düzenlemek mümkündür.

Azure DevOps Pipelines Flutter Süreçleri
Sağ üst köşede yer alan “New Pipeline” butonuna tıklayarak yeni bir pipeline oluşturalım. Eğer bu buton sizde pasif ise DevOps yöneticiniz ile iletişime geçebilirsiniz.
Azure DevOps Pipelines Flutter Süreçleri

Açılan bu ekranda repoların hangi ortamda bulunduğunu seçmemiz isteniyor. GitHub, Bitbucket, Azure Repos gibi pek çok sürüm takip ve depolama hizmeti hali hazırda bulunuyor. Ben classic editor ile ilerlemeyi tercih ediyorum. Bir sonraki ekranda kaynak kodlarınızın hangi proje ve branchten çekileceği sorulmaktadır. Gerekli bilgileri seçtikten sonra Continue diyerek devam edelim. Azure tarafında bize pek çok hazır template sunulmaktadır. Gün geçtikçe de bu templatelerin sayısı artmaktadır. Dilerseniz hazır bir template seçebileceğiniz gibi süreçleri manuel de ilerletebilirsiniz. Benim tercihim “Empty pipeline” yönünde.

Yapacağımız işlem bir Flutter uygulamasının test paketini müşteri ve testerlara Apple TestFlight üzerinden Pipeline ile otomatik dağılımını sağlamak olduğu için “Agent Specification” kısmından macos latest seçimi yapmamız gerekmektedir. Yine bu ekrandan pipelineımıza bir isim verebiliriz.

flutter azure pipeline devops ios4

İlerleyen süreçlerde kendi ihtiyaçlarınıza göre pipelineınınızı şekillendireceksinizdir. Bu yazıda en basit haliyle temelden bir pipeline kurulumu gerçekleştiriyoruz. 

Agent job 1 üzerine tıklayarak Demans kısmına bir adet ekleme yapacağız, ismi xcode diyelim ve condition’u exists olarak ayarlayalım.

Azure DevOps Pipelines Flutter Süreçleri

Aslında burada ilerleteceğimiz süreç, sıfır bir macbook cihaza Flutter kurulumu yapıp, projenin kaynak kodlarını derleyip, Apple sertifikalarımız ile Archive almaktan farksız olacaktır. Agent job 1 yanındaki + butonuna tıklayarak yeni bir task yaratacağız. 

Azure DevOps Pipelines Flutter Süreçleri

Yeni taskımızın amacı uzaktaki bir bilgisayara Flutter yüklemek olacak. Açılan listeden Flutter Install’ı seçelim. Dilerseniz Flutter’ın en sonki sürümüyle de devam edebilirsiniz. Ancak benim bu Pipeline için geçerli projemde 3.3.8 sürümü kullanıldı. Customize ederek 3.3.8 sürümüyle devam edeceğim.


Azure DevOps Pipelines Flutter Süreçleri

İsterseniz buraya kadar ki hazırladığımız kısmı bir kaydedip çalıştıralım. Flutter’ın başarıyla kurulduğunu görmek bizi motive edecektir.

Azure DevOps Pipelines Flutter Süreçleri

Kurulumumuz başarıyla tamamlandı. Bundan sonraki süreçte doğrudan Flutter adımlarını sürdürüyor olacağız. Yeni çekilen bir projede Flutter’ın temel komutlarından olan clean ve pub get işlemlerini yapmamız faydalı olacaktır. Agent job 1 yanındaki + butonuna tıklayarak Flutter Command taskını ekleyelim. Arguments kısmına clean yazalım.

Azure DevOps Pipelines Flutter Süreçleri
Command Line Script taskı ile komut satırına yazdığımız komutları pipelineımıza ekleyeceğiz. Yine aynı şekilde yeni bir task oluşturalım bu sefer Command Line Script’i seçelim. Script alanına aşağıdaki komutları yazabiliriz. Aslında çoğu kaynakta Podfile ‘ın da silindiğini görüyoruz ancak proje özelinde yapılan native ayarları kaybetmek istemeyiz. İleride alacağımız hatalara göre bu kararın şekillenmesi daha sağlıklı olacaktır. 

Azure DevOps Pipelines Flutter Süreçleri
rm -Rf ios/Pods
rm -Rf ios/.symlinks
rm -Rf ios/Flutter/Flutter.framework
rm -Rf ios/Flutter/Flutter.podspec
rm ios/Podfile.lock
rm -Rf pubspec.lock

Sıradaki taskımız ise pub get işlemini gerçekleştirmek için ekleyeceğiz 🙂 Flutter’a özgü komutlar için her zaman Flutter Command taskını kullanabilirsiniz. Paketleri çekmek için arguments kısmına pub get yazmanız yeterlidir.
Flutter tarafında iOS / XCode süreçlerinin belki de en kaygılandıran süreci Pods yüklemeleridir. Cocapods için hali hazırda task bulunmaktadır. Bu kısımda Force repo update seçeneğini aktif etmemiz faydalı olacaktır.

Azure DevOps Pipelines Flutter Süreçleri

Sırada Apple süreçleri var. Apple sertifikaları (.p12 uzantılı) ve provisioning profile (.mobileprovision uzantılı) tasklarını ekleyeceğiz. Dilerseniz buraya kadar ki kısmı çalıştırıp deneme yapalım.

flutter azure pipeline devops ios12

Her şey yolunda olduğuna göre Sertifikaları eklemeye başlayabiliriz. Task listesindeki arama kısmına Apple yazdığınız zaman “Install an Apple certificate” ve “Install an Apple provisioning profile” tasklarını görebilirsiniz. Bu taskları da Agent job 1’ ekleyelim. Apple tarafı için son olarak XCode taskını ekleyerek “clean” aksiyonunu gerçekleştirelim.

flutter azure pipeline devops ios13
Bu kısım biraz daha detaylı incelenmelidir. XCode clean taskı için gerekli configürasyonları aşağıdaki gibi tanımladım. Sizin projenizde değişiklik gösteren fieldları kendinize göre değiştirmeniz gerekmektedir.

16

Display name: Xcode clean
Actions: clean
Configuration: Release
SDK: iphoneos
Workspace or project path: ios/Runner.xcworkspace
Scheme: Runner
XCode version: Default
Signing style: Project defaults

Create app package seçeneğini aktif edip Archive path ve Export path alanlarını dolduralım:

Archive path: $(system.defaultworkingdirectory)/ios/output/archive
Export path: $(system.defaultworkingdirectory)/ios/output/release
Export options için Plist seçip, plist dosyasını ios/ExportOptions.plist yolunu verebiliriz.

Pipeline’ın final kısmına geldik. Son olarak ekleyeceğimiz task “Publish Pipeline Artifact” taskı olacak. File or directory path kısmına gelecek olan ipa dosyayı daha kolay bulabilmek adına ios dizinindeki output kısmına gönderebiliriz.

17

$(system.defaultworkingdirectory)/ios/output/release/UygulamanizinAdi.ipa

Buraya kadar başarılı bir şekilde .ipa uzantılı çıktımızı elde ettik. Yazının devamında alınan ipa dosyanın otomatik olarak AppStore’a gönderilmesini işleyeceğim.

Bir sonraki yazıda Android için aynı adımları gerçekleştireceğim.
İyi çalışmalar dilerim.

alim cevik
Tags: AzureCI/CDDevOpsFlutterPipelines
SendTweet6Share2Share
Önceki Gönderi

Risk Yönetimi ve Tehdit Modelleme

Sonraki Gönderi

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

İlgili Yazılar

Flutter Festivali İçin Buluşmaya Son Günler! 🥳

Flutter Festivali İçin Buluşmaya Son Günler! 🥳

by Ali Murat Çevik
Nisan 12, 2022
0

 Google’ın mobil, web ve masaüstü için güzel, native olarak derlenmiş uygulamaları tek bir kod tabanından hazırlamakta kullanılan Flutter için harika...

Flutter Animasyon İşlemleri

Flutter Animasyon İşlemleri

by Ali Murat Çevik
Nisan 5, 2022
0

Herkese merhaba, bu yazıda Flutter’daki animasyon işlemlerine göz atacağız. Mobil uygulamalarınızın daha efektif görünüm kazanması ve kullanıcı üzerinde güzel izlenimler...

Azure DevOps Rest Api ile Çalışmak

Azure DevOps Rest Api ile Çalışmak

by Mercan Karacabey
Ocak 28, 2022
0

Bu yazıyı, projede kullanırken özellikle kaynak sıkıntısı yaşamış olduğum için, ekstra bir kaynak türetebilmek amacıyla yazmak istedim. Microsoft’un kendi yayınlamış...

AdMob’a En İyi Alternatif: AdColony SDK ve Flutter Kurulumu

AdMob’a En İyi Alternatif: AdColony SDK ve Flutter Kurulumu

by Ali Murat Çevik
Aralık 20, 2021
1

Google’ın pabucu dama mı atılıyor? Google AdMob’a yönelik artan şikayetler doğrultusunda doğal bir davranış olarak kullanıcılarda yeni ağlar keşfetmek eylemi...

Azure Application Insights

Azure Application Insights

by Mercan Karacabey
Aralık 18, 2021
0

Azure Application Insights, Monitoring için kullanılır. Azure monitoringin bir özelliği olan Application Insights, geliştiriciler ve DevOps uzmanları için genişletilebilir bir Uygulama Performansı...

Next Post
Yazılım Geliştiriciler İçin Yapay Zeka Araçları

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

OKR (Objectives and Key Results) Nedir ve Nasıl Uygulanır?

OKR (Objectives and Key Results) Nedir ve Nasıl Uygulanır?

  • Popüler
  • Yorumlar
  • En Yeniler
Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Temmuz 26, 2021
B Ağaçları (B Trees)

B Ağaçları (B Trees)

Ağustos 24, 2020
Gini Index Kullanılarak Karar Ağacının (Decision Tree)  Oluşturulması

Gini Index Kullanılarak Karar Ağacının (Decision Tree) Oluşturulması

Ağustos 20, 2020
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

Mayıs 18, 2018
2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

6
Magento 2 Detaylı Kurulum & Hatalar

Magento 2 Detaylı Kurulum & Hatalar

5
Flutter’da TFLite Kullanımı

Flutter’da TFLite Kullanımı

4
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

2
Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Mart 19, 2025
Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Mart 10, 2025
Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Şubat 10, 2025
OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

Aralık 14, 2024

Reklam

Yazılım Karavanı | Bilim – Teknoloji – Mühendislik

Bilgi Teknolojileri alanına meraklı herkesin buluşma noktası!

No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar

© 2020 Yazılım Karavanı Kaynak gösterilmesini rica ederiz.