Tabii, işte bu işlemleri gerçekleştiren bir Jenkins Pipeline için bir Jenkinsfile örneği:
groovypipeline { 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:
- Checkout: GitHub'dan kodu çeker.
- Lint: SonarLint ile kodu analiz eder.
- Test: Birim ve entegrasyon testlerini çalıştırır.
- Build Docker Image: Maven ile proje build edilir ve Docker image oluşturulur.
- Push Docker Image: Oluşturulan Docker image, Docker Hub'a yüklenir.
- 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
veyour-kubernetes-context
değerlerini kendi ortamınıza göre ayarlamalısınız.kubectl set image
komutundayour-deployment
veyour-container
değerlerini kendi Kubernetes dağıtımınıza göre düzenlemelisiniz.