Sürekli tümleştirmeyi kullanma önerileri

Bu Azure İyi Tasarlanmış Çerçeve operasyonel mükemmellik denetim listesi önerisi için geçerlidir:

OE:04 Geliştirme ve test için endüstride 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ştirme Araç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ına olanak tanır.

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 bir tempoda 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 olarak, tümleştirme işlemi kodu çeşitli temellere ve testlere göre doğrular. Ardından istekte bulunan mühendise bu testlerin durumu hakkında 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ı sağlamak için kod analizini çalıştırın.
  • Yazılımın bilinen güvenlik açıkları 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.

İşlem hatları ile sürekli tümleştirmeyi otomatikleştirme

Sürekli tümleştirme elde etmek için, süreci yönetmek, tümleştirmek ve otomatikleştirmek için yazılım çözümlerini kullanın. 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ş testleri ç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 ayrıca doğrudan çekme istekleri hakkında 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.

İşlem hatlarını kaynak denetimiyle tümleştirme

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. çekme isteğinde işlem hattı durumu görüntülenir.

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

Otomatikleştirilmiş testleri birleştirme

Sürekli tümleştirmenin temel öğelerinden biri, geliştiriciler kod katkıları yaparken kodun sürekli oluşturulması ve test edilmesidir. Çekme isteklerinin oluşturuldukları şekilde test edilmesi, 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. Bu adımda iki görev vardır:

  • İ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.xml adlı 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üntülenen test sonuçları gösterilmektedir.

Azure DevOps portalında 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ğu hakkında daha derin bir analize yol açmalıdır. 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.

Derleme durumunu yayımlama

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'daki açık kaynak proje için benioku dosyasında görüntülenen bir Azure Pipelines rozeti gösterilmektedir.

GitHub'daki bir 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 üretime 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