Bu çalışamam da Azure Repoyu kullanarak Jenkins de pipeline yapacağız.
Azure repodan commitlendikten sonra jenkinsde otomatik pipeline işlemi başlayacak. Jenkins azure repodan kodları çekip docker build işlemi başlayacak sonra sonarqube analizi yaptıracağız ve push ettikten sonra kubernetes e deploy işlemini gerçekleştireceğiz.
Evet kodlarımız Azure Repoda bulunuyor.
Jenkinsfile dosyamız.
pipeline {
environment {
dockerimagename = "emirhanaydin61/nodeapp"
dockerImage = ""
def scannerHome = tool 'sonarqube'
}
agent any
stages {
stage('Build image') {
steps{
script {
dockerImage = docker.build dockerimagename
}
}
}
stage('AZURE VM SonarQube Code Analysis') {
steps {
withSonarQubeEnv('sonarqube') {
sh "${scannerHome}/bin/sonar-scanner -Dsonar.projectKey=jenkins -Dsonar.projectName=jenkins -Dsonar.projectVersion=1.0"
}
}
}
stage('Pushing Image') {
environment {
registryCredential = 'dockerhublogin'
}
steps{
script {
docker.withRegistry( 'https://registry.hub.docker.com', registryCredential ) {
dockerImage.push("latest")
}
}
}
}
stage('Deploying App to Azure Kubernetes Service') {
steps {
script {
kubernetesDeploy(configs: "deploymentservice.yml", kubeconfigId: "kubernetes")
}
}
}
}
}
Jenkins de bir Job oluşturalım.
Azure Repomuzu bağlayalım.
Repo url ekledik fakat Credentials eklememiz gerekiyor add butonuna basıp azure repoya gidelim Clone butonuna basalım Generate Git Credentials diyelim Username ve passw alalım.
Jenkinse dönüp username password kısmına yapıştıralım.
Azure Devops ile Jenkins entegrasyonunu yapalım
Azure Devopsa girelim Proje settings den service connections girelim.New service connection diyelim.Arama yerine Jenkins yazalım ve gerekli bilgileri yazıp connection kuralım.
Proje settingsden Service Hooks girelim.
Trigger on this type of event bölümünde Code pushed seçeneğini seçiyoruz ve Jenkinsde pipline yapacağımız repomuzu seçiyoruz.
Next diyelim.
Jenkins urlimizi ve username paswwordumuzu giriyoruz finish diyoruz.
Evet azure devops ile jenkins entegrasyonunu sağladık bağlantı başarıyla kuruldu şimdi jenkins tarafına gidip sonarqube docker kubernetes bağlantılarını yapalım.
Sonarqube Jenkins entegrasyonu
Sonarqube gidelim My Account > Security > Generate Tokens kısmından token oluşturalım.
Tokenı kopyalayalım.
Sonarqubede bir proje yaratalım
Jenkinse geçelim şimdi.Pluginlerden Sonarqube Scannerı yükleyelim ve jenkinsi restart edelim.
Kopyaladığımız tokenla jenkinse gidip Kontrol Merkezi>Jenkinsi yönet>Credentials>System>Global credentials a gelip yeni credentials ekleyelim.
Jenkins’i Yönet > Configrue System > SonarQube servers sekmesine gidin. Ayarlarınızı aşağıdaki gibi yapın.
Jenkins’i Yönet > Global Tool Configuration adımlarını takip ederek “SonarQube Scanner” kısmına gidin. Ardından SonarQube Scanner Installations… butonuna tıklayın. Ayarlarınızı aşağıdaki gibi yaptıktan sonra “Save” butonuna basıp kaydedin.
Jenkins Pipline Süreci
Evet biz Azure Repomuzu Jenkinse bağladık Sonarqube entegremizi yaptık Docker işlemi için
docker eklentisini yükledik şimdi dockerhub login olması için credentialsımızı oluşturup pipeline başlatalım.
Pluginlerden Docker Pipeline eklentisini indirip jenkinsi restart edelim.
Jenkinse tekrar login olduktan sonra
Kontrol Merkezi>Jenkinsi yönet>Credentials>System>Global credentials gelip dockerhub bilgilerinizi yazın.
Kubernetese deploy için kubernetesimizi bağlayalım.Kubernetesin tüm işlemlerini burada yapıyorum çünkü burası kritik eklentisini manuel dosya ile yükleyeceğiz.
Dosyayı bu linkten indirebilirsiniz.
Deploy deyip yüklüyoruz.Jenkins restart olduktan sonra Kubernetesimizi
ekleyelim.
Kontrol Merkezi>Jenkinsi yönet>Credentials>System>Global credentials gelip kind kubernetes configurationa gelip gerekli bilgileri dolduruyoruz.
Ve artık Pipline başlatabiliriz.
Evet Azure Repoma gitti kodları aldı build etti sonarqube analizi yaptı push işlemi gerçekleşti sonrasında Azure Kubernetesime deployum yapıldı podlarım ayakta.
Herhangi birşey commit edelim otomatik olarak jenkinsde pipline başlatacak.
Evet pipline başladı.
Sonarqube Analizi
Kubernetes çıktım
ve deployum sorunsuz olduğunu test ettik
Comments