Sürekli tümleştirmeyi kullanma önerileri
Bu Azure Well-Architected Framework Operasyonel Mükemmellik denetim listesi önerisi için geçerlidir:
OE:04 | Geliştirme ve test için sektörde kanıtlanmış uygulamaları izleyerek yazılım geliştirme ve kalite güvencesi süreçlerini iyileştirin. Net rol belirleme için araçlar, kaynak denetimi, uygulama tasarım desenleri, belgeler ve stil kılavuzları gibi bileşenler genelinde uygulamaları standartlaştırabilirsiniz. |
---|
İlgili kılavuz: Derleme hızını | geliştirmeAraçları ve süreçleri standartlaştırma
Kod geliştirildikçe, güncelleştirildikçe, hatta kaldırıldıkçe, bu değişiklikleri ana kod dalı ile tümleştirmek için sezgisel ve güvenli bir yönteme sahip olmak geliştiricilerin değer sağlamasını sağlar.
Geliştirici olarak küçük kod değişiklikleri yapabilir, bu değişiklikleri bir kod deposuna gönderebilir ve kalite, test kapsamı ve hatalar hakkında neredeyse anında geri bildirim alabilirsiniz. Bu işlem daha hızlı ve daha fazla güvenle ve daha az riskle çalışmanızı sağlar.
Sürekli tümleştirme (CI), yazılım geliştirme ekipleri için otomatik derleme, test ve geri bildirim mekanizmaları sağlamak üzere kaynak denetim sistemlerinin ve yazılım dağıtım işlem hatlarının tümleştirildiği bir uygulamadır.
Temel tasarım stratejileri
Sürekli tümleştirme, geliştiricilerin yazılım güncelleştirmelerini düzenli aralıklarla bir kaynak denetim sistemiyle tümleştirmek için kullandığı bir yazılım geliştirme uygulamasıdır.
Sürekli tümleştirme işlemi, bir mühendis CI sistemine kod değişikliklerinin tümleştirilmeye hazır olduğunu belirten bir GitHub çekme isteği oluşturduğunda başlar. İdeal olan, tümleştirme işlemi kodu çeşitli temellere ve testlere göre doğrular. Daha sonra bu testlerin durumu hakkında istekte bulunan mühendise geri bildirim sağlar.
Temel denetimler ve test iyi giderse, tümleştirme işlemi güncelleştirilmiş yazılımı dağıtacak varlıkları üretir ve hazırlar. Bu varlıklar derlenmiş kod ve kapsayıcı görüntülerini içerir.
Sürekli tümleştirme, aşağıdaki eylemleri gerçekleştirerek yüksek kaliteli yazılımları daha hızlı bir şekilde sunmanıza yardımcı olabilir:
- Hataya neden olan değişikliklerin erken algılanması için koda göre otomatikleştirilmiş testler çalıştırın.
- Kod standartlarını, kalitesini ve yapılandırmasını güvence altına almak için kod analizini çalıştırın.
- Yazılımın bilinen bir güvenlik açığı olmadığından emin olmak için uyumluluk ve güvenlik denetimleri çalıştırın.
- Yazılımın beklendiği gibi çalıştığından emin olmak için kabul veya işlevsel testler çalıştırın.
- Algılanan sorunlar hakkında hızlı geri bildirim sağlayın.
- Uygun olduğunda, güncelleştirilmiş kodu içeren dağıtılabilir varlıklar veya paketler üretin.
Sürekli tümleştirme işlem hatları
Sürekli tümleştirme elde etmek için yazılım çözümlerini kullanarak süreci yönetin, tümleştirin ve otomatikleştirin. Yaygın bir uygulama, sürekli tümleştirme işlem hattı kullanmaktır.
Sürekli tümleştirme işlem hattı, şunları sağlayan bir yazılım parçası (genellikle bulutta barındırılan) içerir:
- Otomatikleştirilmiş testler çalıştırmaya yönelik bir platform.
- Uyumluluk taramaları.
- Raporlama.
- Sürekli tümleştirme işlemini oluşturan diğer tüm bileşenler.
Çoğu durumda işlem hattı yazılımı, çekme istekleri oluşturulduğunda veya yazılım belirli bir dalda birleştirildiğinde sürekli tümleştirme işlem hattı çalıştırılacak şekilde kaynak denetimine eklenir. Kaynak denetimi tümleştirmesi, doğrudan çekme isteklerinde CI geri bildirimi verme fırsatı da sağlar.
Azure Pipelines veya GitHub Actions gibi birçok çözüm, sürekli tümleştirme işlem hatlarının özelliklerini sağlar.
Kaynak denetimi tümleştirmesi
Sürekli tümleştirme işlem hattınızın kaynak denetim sisteminizle tümleştirilmesi, hızlı, self servis kod katkılarına olanak sağlamak için önemlidir.
CI işlem hattı yeni oluşturulan bir çekme isteğinde çalışır. İşlem hattı tüm testleri, güvenlik değerlendirmelerini ve diğer denetimleri içerir. CI test sonuçları, kalite hakkında neredeyse gerçek zamanlı geri bildirim sağlamak için doğrudan çekme isteğinde görünür.
Bir diğer popüler uygulama da, geçerli derleme durumlarını görünür hale getirmek için kaynak denetiminde sunulabilen küçük raporlar veya rozetler oluşturmaktır.
Aşağıdaki görüntüde GitHub ile Azure DevOps işlem hattı arasındaki tümleştirme gösterilmektedir. Bu örnekte, çekme isteği oluşturulması bir Azure DevOps işlem hattını tetikler. İşlem hattı durumu çekme isteğinde görünür.
Test tümleştirmesi
Sürekli tümleştirmenin temel öğelerinden biri, geliştiriciler kod katkıları yaparken kodun sürekli oluşturulması ve test edilmektir. Çekme isteklerini oluşturuldukları anda test etmek, işlemenin hataya neden olan değişiklikler yapmadığına ilişkin hızlı geri bildirim sağlar. Bunun avantajı, sürekli tümleştirme işlem hattındaki testlerin test temelli geliştirme sırasında çalışan testlerin aynı olmasıdır.
Aşağıdaki kod parçacığında Azure DevOps işlem hattından bir test adımı gösterilmektedir. Adım iki görev içerir:
- İlk görev, CI testlerini çalıştırmak için popüler bir Python test çerçevesi kullanır. Bu testler Python koduyla birlikte kaynak denetiminde bulunur. Test sonuçları test-results.xmladlı bir dosyaya gider.
- İkinci görev, test sonuçlarını tüketir ve bunları tümleşik bir rapor olarak Azure DevOps işlem hattında yayımlar.
- script: |
pip3 install pytest
pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
continueOnError: true
- task: PublishTestResults@2
displayName: 'Publish Test Results'
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '**/test-results.xml'
failTaskOnFailedTests: true
testRunTitle: 'Python $(python.version)'
Aşağıdaki görüntüde Azure DevOps portalında görünen test sonuçları gösterilmektedir.
Başarısız testler
Başarısız testler bir dağıtımı geçici olarak engellemeli ve neler olduğunu daha ayrıntılı bir şekilde analiz etmelidir. Başarısız testler de testlerin iyileştirilmesine veya testlerin başarısız olmasına neden olan değişiklikte bir iyileştirmeye yol açmalıdır.
CI sonuç rozetleri
Birçok geliştirici, depolarında durum rozeti görüntüleyerek kod kalitesinin yüksek olduğunu gösterir. Aşağıdaki görüntüde GitHub'da açık kaynak projesi için benioku dosyasında görüntülenen bir Azure Pipelines rozeti gösterilmektedir.
Azure kolaylaştırma
Azure DevOps , işbirliğine dayalı, verimli ve tutarlı bir geliştirme uygulaması oluşturmanıza yardımcı olan bir hizmet koleksiyonudur.
Azure Pipelines , uygulamalarınızın sürekli tümleştirmesini ve sürekli teslimini (CI/CD) desteklemek için derleme ve yayın hizmetleri sağlar.
Azure için Eylemler için GitHub , CI/CD işlemlerinin otomasyonunu sağlar. Dağıtımları basitleştirmek için doğrudan Azure ile tümleşir. Deponuzdaki her çekme isteğini derleyip test eden veya birleştirilmiş çekme isteklerini üretim ortamına dağıtan iş akışları oluşturabilirsiniz.
İlgili bağlantılar
GitHub veya Azure DevOps kullanarak sürekli tümleştirme işlem hattı oluşturmayı öğrenin:
Depolarınızda rozetleri görüntülemeyi öğrenin:
Operasyonel Mükemmellik denetim listesi
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin