Azure Pipelines Nedir?
Azure Pipelines, Microsoft tarafından sağlanan bir bulut tabanlı platformdur ve sürekli entegrasyon (CI) ve sürekli dağıtım (CD) süreçlerini birleştirerek projelerimizi derleyip, test edebilmemizi ve bir hedefe dağıtabilmemizi sağlar.
Hem bulut hem de yerinde bir çözümdür.
Azure Pipelines Yapısının Avantajları Nelerdir?
- Birçok programlama diline sorunsuz entegre olabilir.
- İşletim sisteminden bağımsız olarak Windows, MacOS ve Linux cihazlarından erişilebilir.
- Projelerin derleme, dağıtma ve test süreçlerini otomatik hale getirerek zaman ve iş gücü tasarrufu sağlar.
- Aynı anda birden çok proje dağıtımı yapılabilir.
- Projelerdeki versiyon kontrol sorunlarına destek sağlar.
- Projelerdeki paketleri yükleyip erişilebilir kılar ve başkalarının erişimine sunabilir.
Şimdi, Azure Pipelines yapısını bir projeye CI ekleyerek oluşturalım:
Azure DevOps, Docker ve Kubernetes gibi container build ve deployment işlemlerini destekler. Pipeline oluşturma süreci, YAML kullanma gibi birden fazla yöntem içerir. Azure DevOps, sürükle ve bırak yöntemiyle de pipeline oluşturmaya izin verir.
Bu örnekte, hız odaklı olarak sürükle ve bırak yöntemini kullanarak bir pipeline oluşturacağız. Basit bir .NET Core API projemizi Git üzerinden alıp derleyeceğiz.
Projemizin deposuna gittikten sonra, sol menüdeki Pipelines sekmesine gidip "Create Pipelines" diyerek süreci başlatıyoruz.
Azure DevOps, bize build ve release süreçlerini basitleştirmek amacıyla YAML tasarımcısı sağlar. Ancak biz "Classic Editor" ile devam ediyoruz.
- Birden fazla kaynak kontrol sistemini destekleyen Azure'u seçiyoruz (git, svn, tfs vb.).
- Projemizi seçiyoruz.
- Proje deposunu seçiyoruz.
- Hangi branch'taki commit işlemleriyle süreci çalıştırmak istiyorsak onu seçip devam ediyoruz.
Bu adımda projemizin build ve test süreci için bir şablon seçmemiz gerekiyor. Kullandığım proje ASP.NET Core olduğu için, bu şablonu seçerek devam ediyorum.
İlk olarak üst menüde bulunan sekmeleri inceliyoruz:
- Task sekmesinde, pipeline ve agent oluşturulması ve yapılandırılması gibi işlemleri yapıyoruz.
- Variables sekmesinde, build işlemi sırasında kullanacağımız parametreleri yapılandırıyoruz.
- Triggers sekmesinde, belirlediğimiz branch'tan commit atıldığında, belirlediğimiz zamanda veya zaman aralıklarında, belirlediğimiz başka bir pipeline çalışmasını tamamladıktan sonra gibi yapılandırmaları yapıyoruz.
- Options sekmesinde build iş akışı ile ilgili ayarlar yapabildiğimiz sekmedir.
- History sekmesinde geçmişte yaptığımız değişiklikleri görüntüleyebiliriz.
Agent cihazları, Azure DevOps sistemleriyle iletişim kurabilen cihazlardır. Agent Job başlığından + tuşuyla ilgili aracı ekliyoruz. Ardından projemizde sırasıyla:
Dotnet Sdk versiyonumuzu ayarlıyoruz.
Dotnet Restore işlemini yapıyoruz.
Dotnet Build komutunu ekliyoruz.
Dotnet Publish komutuyla projemizin paketlerini çıkartıyoruz.
Publish Artifact komutuyla çıkartılan paketleri isteğe bağlı olarak hedefe veya belirleyeceğimiz bir klasöre yönlendiriyoruz (Artifact publish location). Örneğin, ftp ya da disk vb.
Son olarak "Save & Queue" yaparak pipeline'ı kaydediyor ve "Save and Run" diyerek çalıştırıyoruz.
Oluşturduğumuz Agent Job 1'e tıklayarak detaylarını izleyebiliriz. Bu işlem, proje boyutu ve ilk pipeline çalıştırmada dosyaların tamamını yüklediğinden dolayı biraz uzun sürebilir. Ancak daha sonra sadece değişiklik olan dosyaların yüklemesini gerçekleştirdiğinden işlem süreleri kısalmaktadır.
Bu yapılan pipeline işleminin en güzel yanı, çalışan sistem üzerinde kesintiyi minimuma indirerek 5 dakika gibi bir sürede build işlemini tamamlayabilmektir.
Umarım bu paylaşım faydalı olur. Herkese iyi çalışmalar dilerim. Sağlıklı günler!