CI(Continuous Integration) / CD(Continuous Delivery)
CI/CD, istediğiniz zaman sürdürülebilir bir şekilde yayınlayabileceğiniz yazılım geliştirme yoludur.
Yazılım
projelerinde son aşamaya gelindiğinde yazdığımız projeyi test veya
production(son kullanıcı/müşteri tarafından aktif olarak kullanılan) ortama
göndermek istediğimizde, yaptığımız yeni geliştirme ve değişikliklerin mevcut
yapıyı bozmadığından emin olmak önemlidir. Ayrıca, yapılan geliştirmelerin
kurulumu sırasında kimi zaman insan kaynaklı hatalar(eksik/hatalı dosya, fazla
dosya silme vs.) da yaşanabilmektedir.
Neden CI/CD ihtiyacı duyarız?
- Tekrar eden işleri otomatize hale getirir.
- Tüm testlerin kontolünü sağlar. Kod kalitesini arttırır.
- Büyük projelerde uzun süren kurulum süreçlerinde insan payını indirir
ve zamandan tasarruf sağlar.
- Paketin kuruluma hazır olup olmadığını denetler.
Continuous Integration Nedir?
Yaptığımız yeni geliştirmelerin kendi
belirlediğimiz koşul doğrultusunda (master'a merge geldiğinde, pull request
açıldığında, manuel tetikleme, vs.) bir takım kontrollerden geçtiği ve
paketin düzgün derlenip derlenmediğinin de kontrol edildiği süreçtir. Örneğin
kod yazarken test'lerini de yazıyorsanız, bu süreç içerisinde mevcut ve
yeni eklenen testler ile beraber projenin kontrol edilmesini sağlayabilirsiniz.
Code coverage(yazılan testlerin, projenin yüzde kaçını kontrol ettiği)
konusunda dikkat ettiğiniz bir projeyse, kapsamın belli bir yüzdenin altına
düştüğü durumlarda onay vermeyebilir, ilgili kişilere mail ile bilgilendirme
yapabilirsiniz.
CI, kod üzerinde yapılan değişiklik
sonrasında sistemin çalışır durumda olduğunu, yapılan değişikliğin sorunlara
yol açmadığını tespit etmek için kullanılan yöntemdir. Sorunları ve kırılmaları
tespit edebilmek için birim testleri kullanılır. Yapılan değişiklikler yeni bir
yapının parçası olduğundan dolayı testlerde oluşan hatalar, yapılan
değişikliğin sistemi kırdığı anlamına gelmektedir. Bu durumda tüm programcılar
bilgilendirilerek hatanın bir an önce giderilmesi sağlanır. Sürekli entegrasyon
ile programcılar tarafından kod üzerinde yapılan çalışmalar neticesinde her
zaman çalışır bir sürümün oluşması sağlanmış olur.
Continuous Delivery & Continuous Deployment
Nedir?
CD süreci içerisinde tanımlanıp
birbirine yakın kavramlar olan Delivery ve Deployment süreçlerindeki farkı
kısaca açıklayacak olursam eğer:
Continuous
Delivery; yeni geliştirmeler
yapılan yeni kod paketinin CI sürecinden geçtikten sonra build alınıp deploya
hazır hale gelmesini sağlayan aşamadır.
Continuous
Deployment; hazır hale gelmiş yeni paketi sunuculara kurulmasını sağlayan
aşamadır.
Bazı
firmalarda bu süreç manuel olarak yapılabildiği gibi bazı firmalarda ise bu
süreç de otonom bir hale gelmiştir ve CI sürecinden geçen kod doğrudan
production ortamına kurulumu yapılabilmektedir.
Yaygın olarak kullanılan CI/CD araçları
CI/CD süreçlerini bir arada
yönetebileceğiniz çeşitli araçlar yaygın olarak kullanılmaktadır. Bunlardan
bazıları;
Jenkins (yaygın
olarak kullanılan open-source tool),Travis CI,CircleCI,Jetbrains TeamCity,Atlassian Bamboo,GitLab,Codeship,Buddy,Semaphore
Alıntıdır kaynak : https://caylakyazilimci.com/post/ci-cd-nedir
Yorumlar
Yorum Gönder