Aracılığıyla paylaş


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.

GitHub deposundaki Azure DevOps durum rozetinin ekran görüntüsü.

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.

Azure DevOps portalındaki Azure DevOps işlem hattı testlerinin ekran görüntüsü.

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.

GitHub'daki benioku dosyasındaki Azure Pipelines rozetinin ekran görüntüsü.

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.

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