CI / CD
CI ve CD DevOps ile ilgilenen herkesin sıklıkla rastlayacağı terimlerdir. Ve uygulama geliştirme ve dağıtım süreçlerinin verimliliğini yüksek oranda artıran önemli metotlardır.
CI (Continuous Integration — Sürekli Entegrasyon)
Sürekli entegrasyon, Grady Booch (UML’i geliştiren mühendislerden biri olarak bilinir) tarafından ilk defa 1991 yılında ortaya atılan bir metottur.
Eski entegrasyon yönteminin insan eforu ve hata payı gibi sebeplerden dolayı kaynak paylaşımını, kod entegrasyonlarını ve uygulama testlerini otomatik hale getirir. Böylelikle karmaşıklıktan kurtulmayı, düşük hata oranı ile test etmeyi ve ana hattı daha hızlı güncelleyerek son kullanıcı ile ürünün daha hızlı buluşmasını sağlar.
CD (Continuous Deployment — Sürekli Dağıtım)
Sürekli Dağıtım, CI ile beraber otomatikleşen proje aşamalarının ürün ortamında paylaşılmasına katkı sağlayan bir otomatik dağıtım süreci metotudur.
Bu süreç halihazırda test edilmiş ve geliştirmesi versiyon için tamamlanmış olan projelerin dağıtımlarını otomatik yapar. Bu sebeple test yapılmasını teşvik eder ve CI sürecini gerekli hale getirir.
Sürekli dağıtım biraz daha zordur çünkü küçük değişiklikler ve geliştirmelerden ziyade büyük değişiklikleri sürekli dağıtıma vermek zaman gerektirebilir. Bazı testlerin kapsamını tekrar tekrar analiz etmek gerekir. Ama genel olarak yüksek verimlilik sağlar.
CI ve CD metotlarını uygulamanızı sağlayan bazı uygulamaları aşağıda görebilirsiniz.
- Jenkins: Açık kaynaklı bir otomasyon sunucusudur ve geniş bir plugin yelpazesi ile CI/CD süreçlerini destekler.
- GitHub Actions: GitHub depoları ile doğrudan entegre olan ve CI/CD işlemlerini otomatikleştiren bir hizmettir.
- GitLab CI/CD: GitLab tarafından sağlanan entegre bir CI/CD aracıdır ve doğrudan GitLab depoları ile çalışır.
- CircleCI: Geliştiricilerin kodlarını hızlı bir şekilde test edip dağıtmalarına olanak tanıyan bir CI/CD platformudur.
- Travis CI: Açık kaynak projeler için ücretsiz olan ve GitHub ile entegre çalışan bir CI hizmetidir.
- Azure DevOps: Microsoft’un sunduğu, CI/CD süreçlerini destekleyen ve çeşitli geliştirme araçları ile entegre olan bir platformdur.
- TeamCity: JetBrains tarafından geliştirilen ve çeşitli özellikleri ile CI/CD süreçlerini destekleyen bir CI sunucusudur.
- Bamboo: Atlassian tarafından sağlanan, CI/CD işlemlerini kolaylaştıran ve diğer Atlassian araçları ile entegre olan bir platformdur.
- Bitbucket Pipelines: Bitbucket depoları ile entegre çalışan ve CI/CD işlemlerini otomatikleştiren bir hizmettir.
- Semaphore: Hızlı ve basit bir CI/CD hizmeti sunarak, özellikle performansa önem veren geliştirme ekipleri için uygundur.