Spring cloud ile yazdığım microservisi, github'dan kod değişikliği ile tetiklenen, sonarlint ile linting yapan, birim ve entegresyon testlerini koşan (maven kullanıyorum), docker imageini oluşturan, private docker hub'a yükleyen, ardından bu docker imagini kubernetes-openshift ortamına deploy eden Jenkins piplenını JenkinsFile ile oluştur

Spring cloud ile yazdığım microservisi, github'dan kod değişikliği ile tetiklenen, sonarlint ile linting yapan, birim ve entegresyon testlerini koşan



Tabii, işte bu işlemleri gerçekleştiren bir Jenkins Pipeline için bir Jenkinsfile örneği:

groovy
pipeline { agent any environment { DOCKER_CREDENTIALS_ID = 'docker-credentials' // Docker Hub credential ID DOCKER_HUB_REPO = 'your-docker-repo' KUBECONFIG_CREDENTIALS_ID = 'kubeconfig-credentials'
// Kubernetes credentials ID KUBERNETES_CONTEXT = 'your-kubernetes-context' } stages { stage('Checkout') { steps { // GitHub'dan kodu çek checkout scm } } stage('Lint') { steps { // SonarLint ile linting yap sh 'mvn sonar:sonar' } } stage('Test') { steps { // Birim ve entegrasyon testlerini koş sh 'mvn test' } } stage('Build Docker Image') { steps { script { dockerImage = docker.build("${DOCKER_HUB_REPO}:
${env.BUILD_NUMBER}") } } } stage('Push Docker Image') { steps { script { docker.withRegistry('https://index.docker.io/v1/',
DOCKER_CREDENTIALS_ID) { dockerImage.push() } } } } stage('Deploy to Kubernetes') { steps { script { withCredentials([file(credentialsId: KUBECONFIG_CREDENTIALS_ID,
variable: 'KUBECONFIG')]) { sh """ kubectl config use-context ${KUBERNETES_CONTEXT} kubectl set image deployment/your-deployment
your-container=${DOCKER_HUB_REPO}:${env.BUILD_NUMBER} --record """ } } } } } post { success { echo 'Pipeline completed successfully!' } failure { echo 'Pipeline failed.' } } }

Bu Jenkinsfile, şu adımları gerçekleştirir:

  1. Checkout: GitHub'dan kodu çeker.
  2. Lint: SonarLint ile kodu analiz eder.
  3. Test: Birim ve entegrasyon testlerini çalıştırır.
  4. Build Docker Image: Maven ile proje build edilir ve Docker image oluşturulur.
  5. Push Docker Image: Oluşturulan Docker image, Docker Hub'a yüklenir.
  6. Deploy to Kubernetes: Yüklenen Docker image, Kubernetes/OpenShift ortamına deploy edilir.

Bu pipeline'ı kullanmadan önce:

  • Docker Hub için gerekli kimlik bilgilerini Jenkins'e eklemelisiniz (docker-credentials).
  • Kubernetes/OpenShift için kubeconfig dosyasını Jenkins'e eklemelisiniz (kubeconfig-credentials).
  • your-docker-repo ve your-kubernetes-context değerlerini kendi ortamınıza göre ayarlamalısınız.
  • kubectl set image komutunda your-deployment ve your-container değerlerini kendi Kubernetes dağıtımınıza göre düzenlemelisiniz.

Hiç yorum yok

Rastgele İçerik

DonanımHaber

© tüm hakları saklıdır
made with by templateszoo