DevOps ve Sistem Yönetimi

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 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.


İlgili Makaleler

Başa dön tuşu