Jenkinsfile ile Spring Cloud Microservis CI/CD Pipeline: GitHub Tetiklemesi, Linting, Testler, Docker ve Kubernetes Deploy



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.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال