Azure Devops ile Continuous Integration (CI)
0

Devops süreçlerinde Continuous Integration (CI) nedir? paylaşılmış bir repository’e developerların gün içerisind birden fazla yeni kod eklemesidir. Eklenen veya commit edilen kodun otomatik olarak build olması, otomatik test edilmesidir. Bu sayede uygulamalara daha hızlı yeni özellikler kazandırılır, kod içerisindeki hatalar daha hızlı bulunur ve tüm süreç güvenli, denetlenebilir şekilde geliştirilmiş olur. CI süreci kodda ki hataların bulunması veya sorunların çözülmesi için harcanan sürenin daha hızlı yeni özellik eklemek için development süreçlerine aktarır.

CI ile code buildler daha hızlı, testler otomatik hale gelir. Aynı zamanda CI süreci merkezi repository yapısı otomasyon süreci ile, kod geliştirmenin daha güvenli ve denetlenebilir olmasını sağlar.

Azure Devops CI süreçleri için oldukça çeşitli özellikler, politikalar ve eklentiler sağlar. CI sürecinin doğru bir şekilde tasarlanması ile beraber, commit edilen her kod otomatik olarak Azure Devops ürünü üzerinde istediğiniz ortamda build edilir.

Azure Devops ürününda Build veya release pipeline oluşturmak için kodunuzun Azure Repos üstünde olmasına gerek yoktur. Kodlarınız github, bitbucket veya git destekleyen herhangi bir yerde olabilir. Devops süreçlerinde Devops pipelineları iki aşamada gerçekleşir önce CI süreci tamamlanır ve daha sonrasında CD sürecine geçilir. Biz bu yazımızda Azure Devops üzerinde nasıl CI sürecini oluşturduğumuzu inceleyeceğiz.

Azure Devops ürününde daha önce nasıl versiyon kontrol yapıldığını incelemiştik. Mshowto içerisinde Azure Devops ile git versiyon kontrol makalelerini inceleyebilirsiniz.

CI sürecini oluşturmamız için öncelikle bir build pipeline oluşturmamız gerekiyor. Pipelineları Devops sürecinde ki üretim hatları olarak düşünebilirsiniz.

Resim-1

Azure Devops içerisinde sol taraftan pipeline kısmını tıklayıp, build menüsününü açıyoruz. Gördüğünüz gibi herhangi bir build pipeline mevcut değil. New pipeline tuşuna tıklıyoruz.

Resim-2

Gördüğünüz üzere yukarıda kodumuzun nerde olduğunu soruyor. Kodumuz daha öncede bahsettiğim gibi Azure Repos üzerinde olmak sorunda değil.

Bu makalede yaml bazlı pipeline oluşturmayacağım, dolayısı ile Classic editor seçeneğini seçiyorum.

Resim-3

Kodumun nerde olduğunu seçiyorum, Azure Devops içerisinde ki Azure Repo seçeneğini seçiyorum, benim kodların Azure Repos içerisinde. Azure Devops üzerinde ki Proje ismimi seçiyorum. Pipeline bu proje içerisine oluşturulacak.

Hangi branch için pipeline oluşturacağımı seçiyorum ve Continue tuşuna tıklıyorum.

Resim-4

Azure Devops build pipeline içerisinde maven, python, Xamarin, php vs. gibi bir çok build template mevcut. Search alanından search edip istediğiniz build tipini bulabilirsiniz.

Benim kodum ASP.NET Core. Ve buna uygun bir build template seçiyorum. Sağ altta “Apply” tuşu göreceksiniz. Apply tuşuna tıklıyoruz.

Resim-5

Bu templateler gördüğünüz üzere bize ilgili proje tipi için build sürecinin şablonunu veriyor. Ama siz sıfırdan boş bir template oluşturabilir veya yukarıda ki süreçte farklı adımlarda farklı işler yapmak istiyorsanız yeni adımlar ekleyebilirsiniz.

Yukarıda ki ekranda pipeline özelliklerini görüyorsunuz. Pipeline’ımın ismi, build yapacak Agent özelliklerim, build parametrelerim bu alanda girili. Mesela bu pipeline işine ben bir Ubuntu 16.04 platformunda yapıyorum.

Azure Devops içerisinde farklı şekillerde ajanlar olabilir. Benim kullandığım hosted, Azure Devops tarafında yönetilen bir ajan. Aynı şekilde Windows veya farklı platformlar içinde Azure devops tarafında hosted ajanlar mevcut. Bu ajanlar ile tek tek veya parallel build işlemi gerçekleştirebilirsiniz.

Aynı zamanda build ortamınızı özelleştirmek istiyorsanız Azure devops size kendi sunucunuz veya işletim sisteminiz üzerinde Azure Devops ajanı kurarak build yapma imkanı sunuyor.

Resim-6

Aşağı tarafta ise gördüğünüz üzere pipeline’ımda gerçekleştirilecek olan işlerim mevcut. Bu işler bize seçtiğimiz şablondan geldi. Biz kendi custom işlerimiz ekleyebilir veya mevcutta işimize yaramayanları kaldırabiliriz.

Yeni bir iş eklemek için “Agent Job” ‘un sağında ki “+” işaretine tıklıyoruz.

Resim-7

Gördüğünüz bir çok iş tipi için farklı işler var bunları ekleyip çıkararak build pipeline’ımızı düzenleyebiliriz.

Benim projem Visual Studio 2019 içerisinden gelen ASP.NET Core 2.2 MVC uygulama template’I çok özel bir ayar veya deşiklik yapmayacağım mevcut pipeline benim işimi görüyor.

Yukarıda ki “Save&Queue” tuşuna tıklıyorum.

Resim-8

Bu işlem oluşturduğumuz pipeline’I Azure Devops hosted agent’I üzerinde kuyruğa alıyor. Kuyrukta sıra bu pipeline’a geldiğinde pipeline oluştururken gösterdiğimiz kod’a yukarıda ki işlemler yapılıyor.

Resim-9

Bu işlem çok uzun süren bir işlem değil. Buradaki hızı parallel işlemler satin alarak da daha hızlı build olmasını sağlayabilirsiniz.

Resim-10


Resim-10

İşlemler sırası ile bitiriliyor ve build işlemimiz gerçekleşiyor. Bu aşamada CI sürecimizin Build pipeline kısmını halletmiş olduk.

Ama bir ideal bir Devops ortamında sürekli entegrasyon (CI) istediğimiz için, proje ekibinin veya firmanın politikalarına göre ilgili branch’e commit geldiği zaman otomatik olarak pipeline’ın çalışarak build edilmesini, test edilmesini ve hatta deploy edilmesini istiyoruz.

Şu an odak noktamız CI süreci olduğu için bu adımı otomatik yapalım.

Build pipeline’ımıza gidiyoruz ve yeniden editliyoruz.

Resim-11


Resim-12

Editleme alanında triggers seçeneğine gidiyoruz ve Continuous Integration (CI) enable ediyoruz. Bu ayar ile gösterdiğimiz repository’e herhangi bir commit geldiğinde yukarıda kurduğumuz pipeline otomatik olarak kuyruklanıp, çalıştırılacak. Bunu tüm repo için yapmak zorunda değilsiniz. İsterseniz belirli bir branch için de yapabilirsiniz. Veya bunu zamanlanmış bir iş olarak da yapabilirsiniz.

Örneğin dev/test ortamları için otomatik, prod ortamları için zamanlanmış olabilir.

Repomdan basit bir commit gönderiyorum.

Resim-13

Ve daha sonra yine Build Pipeline alanına gidiyorum.

Resim-14

Gördüğünüz gibi yaptığım commit işlemi için yeniden build işlemi başladı.

CI/CD süreçleri Devops süreçlerinin vazgeçilmez iki ana unsuru. Buradaki temel nokta ise sürecin maksimum otomatize edilmiş olması. Bu otomasyon seçenekleri için Azure Devops içerisinde bir çok ayar ve politika mevcut. Azure Devops ile tüm CI/CD süreçlerinizi oluşturup yönetebilirsiniz.

 

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

 

Referanslar

www.mshowto.org

 

TAGS: Azure, Azure Devops, Build Pipeline, Continuous Integration (CI), Continuous Delivery (CD), git, git commit, Devops pipeline, Devops, .net core, asp.net core, Devops agent,Continuous Integration (CI) nedir?

Bu İçeriğe Tepkin Ne Oldu?
  • 3
    harika_
    Harika!!
  • 1
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Onur Yüksektepeli - Chief Technology Architect | Micosoft MVP Onur Yüksektepeli Nephocraft firmasının kurucusu aynı zamanda kendi firmasında teknoloji çözümleri mimarıdır. 15 Yıldan fazla IT tecrübesi ile temel uzmanlık alanı olan Platform ve diğer teknolojiler için müşterilerine ürün ve hizmetler sunmaktadır. Microsoft MVP ünvanına sahip Onur Yüksektepeli birçok IT etkinliğinde aktif konuşmacı olarak ve IT topluluklarında yönetici olarak aktif rol üstlenmektedir. Nephocraft firmasın da yönetici olarak oluşturduğu çözümlerde yeni teknoloji gelişmelerini de göz önünde bulundurarak, müşterilerine esnek, yenilikçi, akıllı ve üretken iş çözümleri üretmektedir.Onur Yüksektepeli bulut, platform, data, devops, development gibi konularda aktif danışmanlık ve IT eğitmenliğine de devam etmektedir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir