AWSDevOpsDocker

Simple DevOps CI/CD Project 1

Bu makalemizde temel seviyede bir ci/cd sürecini kapsayan örneği inceleyeceğiz. Örneğimizde Github, Jenkins, Sonarqube ve Docker araçlarını kullanarak bir web uygulamasının publish işlemlerini gerçekleştireceğiz.

Yapacağımız işlemi basitçe özetlemek gerekirse;

  • Ubunut 22.04 serverımız üzerine Jenkins CICD aracımızı kuracağız.
  • Docker Kurulumu yapacağız.
  • Jenkins serverımız üzerinde Sonarqube uygulamamızı container olarak çalıştıracağız.
  • Developer biriminin yazmış olduğu uygulamayı git reposundan Jenkins CI/CD aracımıza indireceğiz.
  • Jenkins aracımızla kodlarımızı SonarQube aracımıza gönderip analizden geçireceğiz.
  • Analiz sonrası kodumuzu “Dockerfile” dosyası ile bir imaja dönüştürüp hostumuz üzerinde docker imajımızı çalıştırarak uygulamamızın publish işlemini gerçekleştireceğiz.

Tüm bu süreçlerimizi yaparken bize Jenkins aracımız yardımcı olacak bu ön bilgilendirme sonrası artık kuruluma geçebiliriz.

Jenkins Server Kurulumu

Jenkins aracımızın çalışması için makinemizde Java kurulu olmalı bu sebeple ilk olarak Linux sunucumuza Java kurulumu yapıyorum.

Java Kurulumu

sudo apt update && sudo apt upgrade -y
sudo apt install -y wget apt-transport-https
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
sudo apt update -y
sudo apt install temurin-17-jdk -y

Java kurulumu tamamlandıktan sonra Jenkins kurulumuna geçebiliriz artık aşağıdaki komutları çalıştırarak kurulumu yapıyoruz.

Jenkins Kurulumu

#Curl aracı kurulum için gerekli
apt-get install curl -y
#git aracı git dosyalarını çekmek için gerekli
apt-get install git -y
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update -y
sudo apt-get install jenkins -y
sudo systemctl start jenkins
sudo systemctl status jenkins

Simple DevOps CI/CD Project 1 2

Kurulum tamamlandıktan sonra http://your_server_ip_or_domain:8080 sunucumuza bağlantı kuruyoruz.

Bizleri aşağıdaki şekilde bir ekran karşılıyor ve burada aşağıdaki komutu jenkins sucumuzda çalıştırarak verdiği parolayı alarak initial admin parolası ile giriş yapıyoruz.

cat /var/lib/jenkins/secrets/initialAdminPassword

Simple DevOps CI/CD Project 1 3

C:\Users\bimhmr09\Desktop\Makale\jenkins 8080.png

Simple DevOps CI/CD Project 1 4 Simple DevOps CI/CD Project 1 5

Simple DevOps CI/CD Project 1 6

Jenkins için bir kullanıcı adı ve parola belirliyoruz.

Simple DevOps CI/CD Project 1 7 Simple DevOps CI/CD Project 1 8

Jenkins kurulumu muzu tamamladık.

Jenkins eklenti kurulumu

Jenkins çok fonksiyonlu bir CI/CD aracıdır ve içerisinde bir çok platformla entegrasyon için eklentiler mevcuttur bunları ihtiyacınıza göre indirip kurmanız gerekir.

Manage Jenkins–>Plugins

C:\Users\bimhmr09\Desktop\Makale\jenkins_05.jpg

Sonarqube eklentisini indiriyoruz.

C:\Users\bimhmr09\Desktop\Makale\jenkins_06.jpg

Jenkins ilk Projeyi oluşturma

New item diyerek yeni bir proje oluşturuyoruz. Burada “Freestyle Project ” diyerek devam ediyoruz. Ben “Auto-Pipeline” isminde bir proje oluşturuyorum.

C:\Users\bimhmr09\Desktop\Makale\jenkins_01.jpg

Bir sonraki ekranda projenin configuration adımları geliyor ilk olarak git depomuzdan dosyamızı indireceğiz.
Source Code Management –>git bölümüne geliyoruz ve aşağıdaki linki yapıştırıyoruz.

https://github.com/serdarbayram01/Simple-DevOps-CI-CD-Project1.git

Simple DevOps CI/CD Project 1 9

Save diyoruz ve aşağıdaki bölümünde “Build Now” dikerek işlemi başlatıyoruz.

C:\Users\bimhmr09\Desktop\Makale\jenkins_03.jpg

Çıktımız yukarıdaki gibi yeşil tik ile sonuçlandıysa herşey yolunda demektir.

Workspace e giderek Jenkins sunucumuza indirmiş olduğumuz dosyaları görüntüleyebiliriz.

C:\Users\bimhmr09\Desktop\Makale\jenkins_04.jpg

Docker Kurulumu

Aşağıdaki komutlarla docker engieen i makinemize yüklüyoruz.

sudo apt-get update
sudo apt-get install docker.io -y
sudo usermod -aG docker ${USER}
sudo usermod -aG docker jenkins
sudo usermod -aG docker ubuntu
newgrp docker
sudo chmod 666 /var/run/docker.sock
docker --version

Sonarqube kurulumu

Jenkins serverımız üzerinde SonarQube uygulamamız container olarak çalışacak aşağıdaki komutu çalıştırıp SQ kurulumunu yapıyoruz.

docker run -d --restart always --name sonarqube-custom -p 9000:9000 sonarqube:lts-community

Sonarqube kurulumunu tamamladık

Aşağıdaki komutla çalışan containerları listeliyoruz.

docker ps -a

Simple DevOps CI/CD Project 1 10

http://sunucu-ip-adresiniz:9000

username :admin
password :admin

yukarıdaki bilgilerle giriş yapıyoruz ve kendimize yeni bir şifre belirliyoruz.
Simple DevOps CI/CD Project 1 11

Sonarqube uygulamamızda analizden geçireceğimiz proje için “Manually” diyerek proje oluşturma adıma başlıyoruz.

Simple DevOps CI/CD Project 1 12

Hangi projeyi analize tabi tutacaksak o projenin adını yazıyorum, karışmaması için jenkins üzerind e”Auto-pipeline” ismini kullanmıştık bunu kullanıyorum.

Simple DevOps CI/CD Project 1 13

Bu bir jenkins uygulaması olduğu için jenkins seçeneğini seçiyorum. Simple DevOps CI/CD Project 1 14

Configure Analaysis diyerek devam ediyoruz.

Simple DevOps CI/CD Project 1 15

“use global settings” seçerek devam ediyorum.

Simple DevOps CI/CD Project 1 16

Simple DevOps CI/CD Project 1 17

Simple DevOps CI/CD Project 1 18

Simple DevOps CI/CD Project 1 19

Burada Kırmızı alan içindeki bölümdeki keyi bir yere not ediyoruz.

Sonarqube token yapılandırması.

Sonarqube için bir token oluşturacağız ve bu token ile sonarqube serverımıza analiz çıktıları vermesi için erişim sağlayabileceğiz. My Account tabına gidiyoruz.

Simple DevOps CI/CD Project 1 20

Security tabına gidiyorum “sonarqube-Token” adında bir token oluşturuyorum ve Global analaysis seçeneğini seçiyorum ki bu token ile her projeyi analizden geçirebilelim. Diğer seçenekte dilerseniz oluşturduğunuz token’u sadece bir projeye özel oluşturarak güvenlik sıkılaştırması yapabilirsiniz.

Simple DevOps CI/CD Project 1 21

Oluşan token numarasını bir yere not ediyoruz.

Simple DevOps CI/CD Project 1 22

Jenkins Sonarqube configuration

Credential Tanımlama

Manage Jenkins→Credential

Simple DevOps CI/CD Project 1 23

Global menüsüne tıklıyoruz.

Simple DevOps CI/CD Project 1 24

Sağ üst bölümdeki “New Credential” butonuna basıyoruz “secret Text” i seçiyoruz ve bir önceki bölümde oluşturduğumuz token bilgisini buraya giriyoruz. ID bölümüne “sonar-cred” yazarak kayıt ediyoruz.

Simple DevOps CI/CD Project 1 25

Dashboard→Manage Jenkins→Tools

C:\Users\bimhmr09\Desktop\Makale\Jenkins_conf01.jpg

SonarQube Scanner alanına geliyoruz ve Sonarqube Scanner objemizin hangi versiyonu kullanacağını seçiyoruz.

adına “sonar-scanner” diyerek kayıt ediyoruz.

Simple DevOps CI/CD Project 1 26

Manage Jenkins→System Menüsüne geçiyoruz.

C:\Users\bimhmr09\Desktop\Makale\Jenkins_conf03.jpg

SonarQube Serverımızın ip adres bilgilerini Jenkins serverımıza ekliyoruz.

Add butonuna basarak SonarQube hesap bilgilerimizi tanımlayacağımız panele geçiyoruz.

Simple DevOps CI/CD Project 1 27

“SonarQube Server” bölümünde sonarqube sunucumuzun bilgilerini giriyoruz biz jenkins makinemizin üzerinde çalıştırdığımız için sonar qube makinemizi local host giriyorum eğer farklı bir sunucuda çalıştırıyorsanız o sunucunun ip adresini ve port bilgisini buraya girmeniz gerekiyor . Ayrıca Credential bölümünde sonar token bilgilerimizi girmiştik burada o bilgileri “sonar-cred” adı altında ekliyoruz.

SonarQube Test

Sonar Qube entegrasyonunu tamamladık şu an bir test başlatıp kodumuzu analizden geçirebilir durumdayız.

Şimdi bunu test edeceğiz.

oluşturmuş olduğumuz “Auto-pipline” projesini açıp configure diyoruz ve aşağıdaki adımları takip ediyoruz.

Build triggers→Execute SonarQube Scanner

Simple DevOps CI/CD Project 1 28

SonarQube üzerinde proje oluştururken elde ettiğimiz key bilgisini aşağıdaki alana giriyoruz ve confiğimizi kayıt ediyoruz.

Simple DevOps CI/CD Project 1 29

Jenkis jobumuzu çalıştırıyoruz.

Simple DevOps CI/CD Project 1 30

Console çıktısı

Simple DevOps CI/CD Project 1 31

Eğer tüm adımları doğru yapılandırdıysanız yukarıda gördüğünüz gibi success bilgisini(yeşil tik) görüntüleyeceksiniz.

Sonar Qube çıktsına baktığımızda kodumuz analizden geçirilmiş ve aşağıdaki şekilde bir raporun oluşmuş olduğunu göreceksiniz.

Simple DevOps CI/CD Project 1 32

Docker Project Run

Şimdi sıra indirdiğimiz ve analizden geçirdiğimiz bu uygulamamızı Dockerfile ı kullanarak Docker imajı haline getirerek container olarak çalıştırmak.

Projemizi config bölümünde “Build Step” bölümüne yeni bir adım daha ekliyoruz “Execute shell” i seçiyoruz.

Bu seçenek ile jenkins yani docker hostumuz üzerinde shell komutlarını çalıştırıyor olacağız dolayısıyla bu araç ile gui üzerinden shell komutlarını giriyor olacağız.

Simple DevOps CI/CD Project 1 33

Burada eklediğimiz adımların önemi bulunmakta bu adım sonarqube işleminden sonra devam edecek adım oluyor.

docker build -t mywebsite . 
docker run -d -p 8000:8000 --name=First-WebSite mywebsite

Uygulamamız oldukça basit tasarlanmış 8000 portundan yayın yapan bir container üzerinde one-page bir web sayfası.

Simple DevOps CI/CD Project 1 34

Save diyerek değişiklikleri kayıt ediyoruz.

Projemizi çalıştırdığımızda işlemin tamamlandığını görebilirsiniz.

Not: ” /var/run/docker.sock: connect: permission denied” hatasını alırsanız “sudo chmod 666 /var/run/docker.sock” komutunu çalıştırmanız gerekiyor.

Simple DevOps CI/CD Project 1 35

Simple DevOps CI/CD Project 1 36

CLI üzerinden docker containerlara baktığımızda kodumuzun imajı derleyip container ı run ettiğini görebilirsizin.

Simple DevOps CI/CD Project 1 37

Sitemizi browser üzerinden artık görüntüleyebiliriz.

Simple DevOps CI/CD Project 1 38

Serdar Bayram

Bu yazı blog üzerinde Serdar Bayram tarafından hazırlanıp paylaşılmıştır. 2009 yılında açılan blogum kısa zaman içerisinde paylasımları ile dikkat cekip büyük bir izleyici kitlesine sahip olmuştur.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Göz Atın
Kapalı
Başa dön tuşu