Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Azure Pipelines ile sürekli tümleştirme ve sürekli dağıtım (CI/CD) işlem hattı oluşturmaya yönelik bir temel mimari sunulur. Azure'da hazırlama ve üretim ortamlarında uygulama oluşturmayı, test etme ve dağıtmayı otomatikleştirmeniz gerekiyorsa bu mimariyi başlangıç noktası olarak kullanın. Mimari, üç iş akışını — çekme isteği (PR), sürekli tümleştirme (CI) ve sürekli dağıtım (CD) — tanımlar ve uygulamalarınızı güvenli bir şekilde doğrulamak, derlemek ve dağıtmak için bunların Azure Repos, Azure Key Vault ve Azure İzleyici ile birlikte nasıl çalıştığını gösterir.
Mimarlık
CI/CD işlem hattının Azure Pipelines kullanarak mimari diyagramı
Bu mimarinin Visio dosyasını indirin.
Not
Bu makale uygulama değişiklikleri için CI/CD'yi kapsasa da Azure Pipelines, kod olarak altyapı (IaC) değişiklikleri için CI/CD işlem hatları oluşturmak için de kullanılabilir.
Dataflow
Veriler senaryo boyunca aşağıdaki gibi akar:
çekme isteği işlem hattı - Azure Repos Git'e yönelik çekme isteği (PR), çekme isteği işlem hattını tetikler. Bu işlem hattı hızlı kalite denetimleri çalıştırır. Bu denetimler şunları içermelidir:
- Bağımlılık yönetim sisteminden bağımlılıkları çekmeyi gerektiren kodu oluşturma.
- Statik kod analizi, lint ve güvenlik taraması gibi kodu analiz etmek için araçların kullanılması
- Birim testleri
Denetimlerden herhangi biri başarısız olursa işlem hattı çalıştırması sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir. Tüm denetimler başarılı olursa işlem hattı bir PR incelemesi gereklidir. PR incelemesi başarısız olursa işlem hattı sona erer ve geliştirici gerekli değişiklikleri yapmak zorunda kalır. Tüm denetimler ve PR incelemeleri geçerse, PR başarılı bir şekilde birleşir.
CI işlem hattı - Azure Repos Git'e birleştirme işlemi ci işlem hattını tetikler. Bu işlem hattı, PR işlem hattıyla aynı denetimleri ve tümleştirme testlerini çalıştırır. CI işlem hattı iki nedenden dolayı PR işlem hattı yerine tümleştirme testleri çalıştırır:
- Tümleştirme testleri yoğun kaynak kullanabilir, bu nedenle birleştirme işleminden sonra çalıştırmak hata algılama ile geliştirme hızını dengeler.
- Bir PR’de testlerin geçmesi, birleştirmeden sonra da geçeceklerini garanti etmez; çünkü ana daldaki değişiklikler, yalnızca birleştirme sonrası testlerde ortaya çıkan yeni sorunlara yol açabilir.
Derleme yapıtları henüz oluşturulmadığından, bu entegrasyon testleri çözümün dağıtılmasını gerektirmemelidir. Bir test gizli anahtarlar gerektiriyorsa, işlem hattı bunları Azure Key Vault’tan alır. Herhangi bir denetim başarısız olursa işlem hattı sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir. Bu işlem hattının başarıyla çalıştırılması, derleme çıktılarını oluşturur ve yayımlar.
CD işlem hattı tetikleyicisi - yapıtların yayımlanması CD işlem hattınıtetikler.
CD yayınını hazırlama aşaması - CD işlem hattı, CI işlem hattında oluşturulan derleme öğelerini indirir ve çözümü bir hazırlık ortamına dağıtır. İşlem hattı daha sonra dağıtımı doğrulamak için hazırlama ortamında kabul testleri çalıştırır. Herhangi bir kabul testi başarısız olursa işlem hattı sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir. Testler başarılı olursa, bir kişinin veya grubun dağıtımı doğrulamasını ve işlem hattına devam etmesini sağlamak için el ile bir doğrulama görevi uygulanabilir.
CD sürümünün üretime - El ile müdahale devam ettirilirse veya el ile müdahale uygulanmazsa, işlem hattı çözümü üretime sürer. Pipeline, yayının beklendiği gibi çalıştığından emin olmak için üretimde duman testleri çalıştırmalıdır. El ile müdahale adımı iptale neden olursa, yayın başarısız olursa veya duman testleri başarısız olursa yayın geri alınır, işlem hattı sona erer ve geliştiricinin gerekli değişiklikleri yapması gerekir.
İzleme - Azure İzleyici, operatörün sistem durumu, performans ve kullanım verilerini analiz edebilmesi için günlükler ve ölçümler gibi gözlemlenebilirlik verilerini toplar. Application Insights, izleme verileri gibi izler de dahil olmak üzere, uygulamaya özgü tüm izleme verilerini toplar. Azure Log Analytics tüm bu verileri depolamak için kullanılır.
Bileşen
Azure Repos Git deposu, sürüm denetimi sağlayan bir kod deposu ve işbirliğine dayalı projeler için bir platform görevi görür.
Azure Pipelines uygulama ve altyapı kodu oluşturma, test etme, paketleme ve yayınlamanın bir yolunu sağlar. Bu örnekte aşağıdaki sorumluluklara sahip üç ayrı işlem hattı vardır:
- PR işlem hatları, bir PR'ın birleştirilmesine izin vermeden önce kodu linting, derleme ve birim testi aracılığıyla doğrular.
- Kod birleştirildikten sonra CI işlem hatları çalışır. Çekme isteği işlem hatlarıyla aynı doğrulamayı gerçekleştirirler, ancak tümleştirme testi eklerler ve her şey başarılı olursa oluşturma çıktılarını yayımlarlar.
- CD işlem hatları derleme çıktıları dağıtır, kabul testlerini çalıştırır ve üretime sürer.
Azure Artifacts akışları Maven, npm ve NuGet gibi yazılım paketlerini yönetmenize ve paylaşmanıza olanak sağlar. Akışlar, paketleri sürüm oluşturma, yükseltme ve kullanımdan kaldırma dahil olmak üzere paketlerinizin yaşam döngüsünü yönetmenize olanak sağlar. Bu sayede ekibiniz bağımlılıklarınızın en son ve en güvenli sürümlerini kullanır.
Key Vault gizli diziler, şifreleme anahtarları ve sertifikalar dahil olmak üzere çözümünüz için güvenli verileri yönetmenin bir yolunu sağlar. Bu mimaride uygulama sırlarını depolamak için kullanılır. Bu sırlar işlem hattı üzerinden erişilir. Gizli dizilere Azure Pipelines tarafından bir Key Vault göreviyle veya Anahtar Kasasıgelen gizli dizileri bağlama yoluyla erişilebilir.
İzleyici, Azure hizmetleri için ölçümleri ve günlükleri, uygulama telemetrisini ve platform ölçümlerini toplayan ve depolayan bir gözlemlenebilirlik kaynağıdır. Uygulamayı izlemek, uyarıları, panoları ayarlamak ve hataların kök neden analizini gerçekleştirmek için bu verileri kullanın.
Application Insights, web uygulamalarınızın performansı ve kullanımı hakkında gerçek zamanlı içgörüler sağlayan bir izleme hizmetidir.
Log Analytics çalışma alanı, Azure kaynakları, uygulamaları ve hizmetleri dahil olmak üzere birden çok kaynaktan verileri depolayabileceğiniz, sorgulayabileceğiniz ve çözümleyebileceğiniz merkezi bir konum sağlar.
Alternatif
Bu makale Azure Pipelines'a odaklansa da şu alternatifleri göz önünde bulundurabilirsiniz:
Azure DevOps Server şirket içi yerine kullanılabilir.
Jenkins, derlemeleri ve dağıtımları otomatikleştirmek için kullanılan açık kaynak bir araçtır.
GitHub Actions CI/CD iş akışlarınızı doğrudan GitHub'dan otomatikleştirmenizi sağlar.
GitHub Depoları kod deposu olarak değiştirilebilir. Azure Pipelines, GitHub depolarıyla sorunsuz bir şekilde tümleşir.
Bu makale, Azure Pipelines ile genel CI/CD uygulamalarına odaklanır. Dağıtmayı düşünebileceğiniz bazı işlem ortamları şunlardır:
App Service, web uygulamalarını, REST API'leri ve mobil arka uçları barındırmaya yönelik HTTP tabanlı bir hizmettir. En sevdiğiniz dilde geliştirme yapabilirsiniz ve uygulamalar hem Windows hem de Linux tabanlı ortamlarda kolayca çalışır ve ölçeklendirilir. App Service, hazırlama ve üretim gibi dağıtım yuvalarını desteklediğinden, bir uygulamayı hazırlama yuvasına dağıtabilir ve üretim yuvasına bırakabilirsiniz.
Azure Sanal Makineler, yüksek düzeyde denetim gerektiren veya App Service ile mümkün olmayan işletim sistemi bileşenlerine ve hizmetlerine bağlı iş yüklerini işler.
Azure Power Platform, kullanıcıların altyapı veya teknik uzmanlığa gerek kalmadan uygulama oluşturmasına, dağıtmasına ve yönetmesine olanak tanıyan bir bulut hizmetleri koleksiyonudur.
Azure İşlevleri, uygulama oluşturmak için kullanabileceğiniz sunucusuz bir işlem platformudur. İşlevler ile, hizmetleri tümleştirmek için tetikleyicileri ve bağlamaları kullanabilirsiniz. İşlevler ayrıca hazırlama ve üretim gibi dağıtım yuvalarını da destekler. Bir uygulamayı hazırlama yuvasına dağıtabilir ve üretim yuvasına bırakabilirsiniz.
Azure Kubernetes Service (AKS), Azure'da yönetilen bir Kubernetes kümesidir. Kubernetes, açık kaynak kapsayıcı düzenleme platformudur.
Azure Container Apps, kapsayıcılı uygulamaları sunucusuz bir platformda çalıştırmanıza olanak tanır.
Senaryo ayrıntıları
Uygulama veya altyapı değişikliklerini dağıtmak için kanıtlanmış CI ve CD uygulamalarının kullanılması aşağıdakiler gibi çeşitli avantajlar sağlar:
- Daha kısa yayın döngüleri - Otomatik CI/CD işlemleri, el ile gerçekleştirilen uygulamalardan daha hızlı dağıtım yapmanızı sağlar. Birçok kuruluş günde birden çok kez dağıtım yapmaktadır.
- Daha iyi kod kalitesi - Lint ve birim testi gibi CI işlem hatlarındaki kalite geçitleri daha yüksek kaliteli koda neden olur.
- Yayın riski azaltıldı - Uygun CI/CD uygulamaları, dağıtım yayınlanmadan önce test edilebildiğinden yeni özellikleri yayınlama riskini önemli ölçüde azaltır.
- Artan üretkenlik - Otomatik CI/CD, geliştiricilerin yeni özelliklere odaklanabilmeleri için el ile tümleştirmeler ve dağıtımlar üzerinde çalışmalarına engel olur.
- Geri Almaları Etkinleştirme - Uygun CI/CD uygulamaları, yayımlanan hata veya geriye dönüş sayısını azaltsa da yine de meydana gelmektedir. CI/CD, önceki sürümlere otomatik geri almayı etkinleştirebilir.
Olası kullanım örnekleri
Aşağıdakiler için Azure Pipelines ve CI/CD işlemlerini göz önünde bulundurun:
- Uygulama geliştirme ve dağıtım yaşam döngülerini hızlandırma.
- Otomatik derleme ve yayın sürecine kalite ve tutarlılık oluşturma.
- Uygulama kararlılığını ve çalışma süresini artırma.
Dikkatler
Bu önemli noktalar, bir iş yükünün kalitesini artırmak için kullanabileceğiniz bir dizi yol gösteren ilke olan Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Daha fazla bilgi için bkz. Microsoft Azure Well-Architected Framework .
Operasyonel mükemmellik
Altyapınızı tanımlamak ve işlem hatlarınızda dağıtmak için Kod Olarak Altyapı (IaC) uygulamayı göz önünde bulundurun.
Ortamlarınızın yapılandırma değişikliklerini yönlendirmek için yayın tanımlarınızda Yayın Değişkenleri'ni kullanın. Yayın değişkenleri, yayının tamamına veya belirli bir ortama göre kapsamlendirilebilir. Gizli bilgiler için değişkenleri kullanırken asma kilit simgesini seçtiğinizden emin olun.
Güvenli bir sanal ağda çalışan kaynaklara dağıtım yapıyorsanız veya çok sayıda derleme çalıştırıyorsanız kendi kendine barındırılan aracılar kullanmayı göz önünde bulundurun. Şirket içi aracılar, derlemeleri geniş ölçekte maliyet açısından verimli bir şekilde hızlandırmanıza yardımcı olabilir.
Application Insights ve diğer izleme araçlarını yayın işlem hattınızda mümkün olduğunca erken kullanmayı göz önünde bulundurun. Birçok kuruluş yalnızca üretim ortamında izlemeye başlar. Diğer ortamlarınızı izleyerek, geliştirme sürecinin önceki bölümlerinde hataları tanımlayabilir ve üretim ortamınızdaki sorunlardan kaçınabilirsiniz.
Üretim için ayrı izleme kaynakları kullanmayı göz önünde bulundurun.
Klasik arabirim yerine YAML işlem hatlarını kullanmayı göz önünde bulundurun. YAML işlem hatları diğer kodlar gibi işlenebilir. YAML işlem hatları, örneğin sürüm kontrolüne eklenebilir ve versiyonlanabilir.
Yeniden kullanımı teşvik etmek ve işlem hatlarını basitleştirmek için YAML Şablonları kullanmayı göz önünde bulundurun. Örneğin, PR ve CI işlem hatları benzerdir. Her iki işlem hattı için de tek bir parametreli şablon kullanılabilir.
El ile kullanıcı kabul testi, performans ve yük testi ve geri alma gibi etkinlikleri desteklemek için hazırlama ve üretim dışında ortamlar oluşturmayı göz önünde bulundurun.
Maliyet iyileştirme
Maliyet iyileştirmesi, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramaktır. Daha fazla bilgi için bkz. Maliyet iyileştirme sütununa genel bakış.
Azure DevOps maliyetleri, kuruluşunuzda erişim gerektiren kullanıcı sayısına ve gerekli eşzamanlı derleme/yayın sayısı ve test kullanıcılarının sayısı gibi diğer faktörlere bağlıdır. Daha fazla bilgi için bkz. Azure DevOps fiyatlandırma .
Bu fiyatlandırma hesaplayıcısı, Azure DevOps'un 20 kullanıcıyla çalıştırılmasına yönelik bir tahmin sağlar.
Azure DevOps, kullanıcı başına aylık olarak faturalandırılır. Daha fazla test kullanıcısı veya kullanıcı temel lisansına ek olarak, gereken eşzamanlı işlem hatlarına bağlı olarak daha fazla ücret uygulanabilir.
Güvenlik
Microsoft tarafından barındırılan aracıların mı yoksa şirket içinde barındırılan aracıların mı kullanılacağını seçerken Microsoft tarafından barındırılan aracıları kullanmanın güvenlik avantajlarını göz önünde bulundurun.
Ortamlarda yapılan tüm değişikliklerin işlem hatları aracılığıyla yapıldığından emin olun. Rol tabanlı erişim denetimlerini (RBAC) en az ayrıcalık ilkesine göre uygulayarak kullanıcıların ortamlara erişmesini önleyin.
Bağımlılıkları izlemek, lisansları yönetmek, güvenlik açıklarını taramak ve bağımlılıkları güncel tutmak için Azure Pipelines adımlarını tümleştirmeyi göz önünde bulundurun.
Sonraki adımlar
İlk işlem hattınızı oluşturma.NET Core projelerini derleme, test etme ve dağıtmaNode.js web uygulaması oluşturma ve dağıtma