Codemagic ile CI/CD Part1

Osman Yılmaz
Team Kraken
Published in
4 min readApr 12, 2021

--

Merhaba, bu hafta Team Kraken olarak CI/CD (Continuous Integration-Continuous Delivery / Deployment) süreçlerimizi yönettiğimiz Codemagic’ten bahsedeceğim. CI/CD süreci çok derin bir konu olduğu için Parçalara Bölmeye karar verdim ilk parçada entegrasyon kısmına değineceğim diğer makalelerde Flutter ve Native IOS/Android için detaylı konfigürasyon aşamalarını anlatmaya çalışacağım.

CI — Sürekli Entegrasyon (Continuous Integration)

Projenizde yaptığınız her bir değişikliğin, diğer modüllere olan etkisini tespit etmenize sağlayan ve bu sayede kod kalitenizi sürekli geliştirmenize yardımcı olan bir süreçtir. Örneğin Yaptığınız ufak bir geliştirme, uygulamanızın farklı kısımlarını etkileyebilir hatta çalışamaz hale getirebilir. Tüm birim testlerinin CI süreci içerisinde koşturulması sayesinde, bu sorun hemen tespit edilip çözülebilir.

CD — Sürekli Teslimat / Dağıtım (Continuous Delivery / Deployment)

CI süreçlerinden geçmiş bir paketin, güvenli, hızlı ve otomatik bir şekilde hedeflenen ortama dağıtımını kapsayan süreçtir. Örneğin App Store veya Google Play için bir release almak istiyorsunuz. Bu işlem için adım adım versiyon yükseltmeniz, build alıp paket çıkarmanız, Store’a yüklemeniz ve onaya göndermeniz gerekiyor. Bu süreci manuel bir şekilde yapmak son kullanıcıya gidecek pakette hatalar oluşmasına ve sürekli versiyon çıkartılan projelerde gereksiz bir geliştirme eforu oluşturabilir.

Özetle CI/CD, geliştirilen her bir kod parçasının kalitesini iyileştirmek , daha kontrollü ve daha hızlı bir release alabilmek için tasarlanan bir süreçtir.

Büyük ölçekli şirketlerde bu süreçleri devOps ekipleri yönetmektedir. Bu süreci yönetmek için kullandıkları bir çok ürün vardır. Bu ürünler ile alakalı karşılaştırma linkini de aşağı ekliyorum. Merak ediyorsanız inceleyebilirsiniz.

https://www.lambdatest.com/learning-hub/cicd

Popüler CI/CD toolları
https://codemagic.io

Team kraken olarak, mobil odaklı işler yaptığımız için ve devOps ekiplerine ihtiyaç duymadan bu süreçlerimizi kurgulamak istedik ve tercihimiz Codemagic oldu.

Codemagic, tamamen mobil projeler için tasarlanmış CI/CD süreçlerinizi yönetebileceğiniz cloud based (bulut tabanlı) bir servis sağlayıcıdır.

Nasıl Kullanılır?

Codemagic giriş ve kayıt sayfası

GitHub, Bitbucket or GitLab hesaplarınız varsa direk bu hesaplarla üyelik işlemlerini tamamlayıp , git platformlarınızdaki projelerinize anında ulaşabilirsiniz. Codemagic bu adımı gayet kolaylaştırmış fakat kendinize ait bit git sunucunuz varsa bu nokta bir entegrasyon yapmanız gerekmektedir. Aşağıdaki adımları takip ederek bunu da kolayca halledebilirsiniz.

1- Bunun için sağ üst köşedeği Add Repository’e tıklayıp, git URL’inizi girmeniz gerekmektedir.

2- Sunucularınız üzerinde bir public erişim var ise public repository seçip kullanıcı adı ve şifre ile projelerinize erişebilirsiniz.

https://example.com/path/to/repository.git.

3- Eğer sunucunuzda Firewall gibi bir kısıtınız var ise 2 adımlık bir işlem yapmalısınız.

a- Aşağıdaki IP adreslerinizi whitelist’e eklemelisiniz.

34.74.234.56 , 199.7.162.128/29

b- Aşağıdaki görselde de gösterildiği üzere bir private key ekleyebilirsiniz veya Generate Key Pair’e tıklayıp bir SSH key üretip , sunucunuzdaki SSH keylere eklemelisiniz.

c- Erişim sağladıktan ve kodlarınızın senkronizasyonu tamamlandıktan sonra projenize anasayfada göreceksiniz.

Projelerinizin listelendiği kısım

Build(Derleme) adımları

1- YAML dosyanızı oluşturmak.

Codemagic üzerinden standart süreçlerinizi kurgulamak için projenize codemagic.yaml dosyası eklemeniz gerekmektedir. Tek bir .yaml dosyası üzerinden tüm konfigürasyonunuzu yapabilir , apple store, google play, birim test gibi entegrasyonlarınızı bu dosyadan üzerinden yönetebilirsiniz.

codemagic.yaml standart yaml syntax kullanmaktadır. Detaylı incelemek için Syntax Yaml

Bir sonraki makalelerde YAML dosyası üzerinden tüm entegrasyonu anlatacağım:)

aşağıdaki linkten detalarını inceleyebilirsiniz.

2- Work Flow (İş-Derleme Akışı)oluşturmak

Derleme paketinizi hangi git reponuzdan almak istediğinizi, hangi flutter versiyonunda derlemek istediğinizi , hangi platformlarda(IOS-Android) ve hangi ortamlar (test,canlı) için derlenmesini buradan değiştirebilirsiniz. Sağ üst köşede bulunan derleme işlemiyle süreçlerinizi başlatabilirsiniz.

Work Flow

3- Slack entegrasyonu

Derlediğiniz kodunuzun sonuçlarını takip edebilmek ve ekibinizi bilgilendirmek için slack entegrasyonunu kullanabilirsiniz.

Slackte gösterilen codemegic derleme sonucu

Merak ettiğiniz konular veya aklınıza takılan sorular var ise bizimle iletişime geçmekten çekinmeyin. Bir sonraki makalede görüşmek üzere.

Bizi takip etmeyi unutmayın!

https://twitter.com/osmannyilmaz

https://twitter.com/_teamkraken_

--

--