Sürekli Entegrasyon
Sürekli Entegrasyon ve Sürekli Dağıtım (CI/CD) Uygulamaları
Sürekli Entegrasyon ve Sürekli Dağıtım (CI/CD) Uygulamaları
Sürekli Entegrasyon (CI) ve Sürekli Dağıtım (CD), modern yazılım geliştirme süreçlerinin vazgeçilmez parçalarıdır. CI, yazılım geliştirme ekiplerinin kodlarını sık sık, genellikle günde birkaç kez, merkezi bir depoya entegre ettiği bir uygulamadır. Bu entegrasyonlar otomatik testlerle doğrulanır. Amaç, entegrasyon hatalarını erken aşamada tespit etmek ve düzeltmektir. CD ise, yazılımın her değişikliğinin otomatik olarak üretim ortamına dağıtılmasını sağlar. CD’nin iki alt kavramı vardır: Sürekli Dağıtım ve Sürekli Teslimat. Sürekli Dağıtım, her değişikliğin otomatik olarak üretim ortamına aktarılmasıdır, Sürekli Teslimat ise dağıtımın manuel onay gerektirebileceği bir süreçtir.
Sürekli Entegrasyon (CI)
Sürekli Entegrasyon, kodun entegre edilmesini ve test edilmesini otomatikleştirerek yazılım geliştirme sürecini iyileştirir. CI, hataların erken tespit edilmesini sağlar ve geliştiricilerin entegrasyon sorunlarıyla boğuşmasını engeller.
CI Araçları
- Jenkins: Açık kaynaklı otomasyon sunucusu. CI/CD boru hatları oluşturmak için yaygın olarak kullanılır.
- Travis CI: GitHub projeleri için bulut tabanlı bir CI hizmeti.
- CircleCI: Hızlı kurulum ve geniş dil desteği sunan bulut tabanlı CI/CD hizmeti.
- GitLab CI: GitLab ile entegre çalışan CI/CD aracı.
- GitHub Actions: GitHub projeleri için CI/CD iş akışları oluşturmayı sağlayan bir araç.
Jenkins ile CI Örneği
Bu örnek, bir Java projesi için Jenkins kullanarak CI sürecini gösterir. Kod deposuna her yeni kod gönderildiğinde, proje derlenir, test edilir ve sonuçlar raporlanır.
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
sh 'mvn clean install'
}
}
stage('Test') {
steps {
echo 'Testing...'
sh 'mvn test'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
sh 'scp target/my-app.jar user@server:/path/to/deploy'
}
}
}
}
Sürekli Dağıtım (CD)
Sürekli Dağıtım, yazılımın her değişikliğinin otomatik olarak üretim ortamına dağıtılmasını sağlar. Bu, değişikliklerin daha hızlı ve güvenilir bir şekilde kullanıcılara ulaştırılmasını sağlar. Sürekli Teslimat ise, üretim ortamına dağıtımın manuel bir onayla gerçekleştiği bir süreçtir.
CD Araçları
- Jenkins: CI için olduğu gibi CD için de yaygın olarak kullanılır.
- Spinnaker: Netflix tarafından geliştirilen açık kaynaklı sürekli teslimat platformu.
- Argo CD: Kubernetes için GitOps tabanlı sürekli teslimat aracı.
- Octopus Deploy: Dağıtım süreçlerini yönetmek için kullanılır.
- Bamboo: Atlassian tarafından geliştirilen CI/CD aracı.
GitLab CI/CD ile Dağıtım Örneği
Bu örnek, bir GitLab CI/CD boru hattının nasıl oluşturulacağını gösterir. Bu boru hattı, kodun derlenmesi, test edilmesi ve üretim ortamına dağıtılmasını içerir.
stages:
- build
- test
- deploy
build:
stage: build
script:
- echo "Building the application..."
- ./gradlew build
test:
stage: test
script:
- echo "Running tests..."
- ./gradlew test
deploy:
stage: deploy
script:
- echo "Deploying to production server..."
- scp build/libs/my-app.jar user@server:/path/to/deploy
only:
- master
Kısacası özetlemek gerekirse
CI/CD uygulamaları, yazılım geliştirme süreçlerini daha verimli ve hatasız hale getirir. Yukarıdaki örneklerde Jenkins ve GitLab CI/CD kullanarak nasıl sürekli entegrasyon ve sürekli dağıtım yapılacağını gösterdik. Bu araçlar ve benzerleri, otomatikleştirilmiş süreçlerle geliştirme ekiplerinin iş yükünü hafifletir ve yazılım kalitesini artırır.