{"id":38917,"date":"2026-02-10T16:21:16","date_gmt":"2026-02-10T13:21:16","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/"},"modified":"2026-02-10T16:21:16","modified_gmt":"2026-02-10T13:21:16","slug":"jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/","title":{"rendered":"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?"},"content":{"rendered":"<p>Ubuntu&#8217;ya Jenkins Kurulumu: Ad\u0131m Ad\u0131m Rehber<\/p>\n<p>Jenkins, yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerini otomatikle\u015ftiren, s\u00fcrekli entegrasyon (CI) ve s\u00fcrekli teslimat (CD) i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu i\u015fletim sistemine Jenkins&#8217;i ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, temel yap\u0131land\u0131rmalar\u0131 nas\u0131l yapaca\u011f\u0131n\u0131z\u0131 ve hatta ileri d\u00fczey ipu\u00e7lar\u0131n\u0131 \u00f6\u011freneceksiniz. Modern yaz\u0131l\u0131m geli\u015ftirme pratiklerinin merkezinde yer alan Jenkins, projelerinizin kalitesini art\u0131r\u0131rken geli\u015ftirme d\u00f6ng\u00fclerini h\u0131zland\u0131rman\u0131za olanak tan\u0131r.<\/p>\n<h2>Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen teknoloji d\u00fcnyas\u0131nda, yaz\u0131l\u0131m projeleri giderek daha karma\u015f\u0131k hale gelmekte ve teslimat s\u00fcreleri k\u0131salmaktad\u0131r. Bu dinamik ortamda, geli\u015ftirme ekiplerinin verimlili\u011fini art\u0131rmak ve yaz\u0131l\u0131m kalitesini s\u00fcrekli k\u0131lmak i\u00e7in otomasyon kritik bir rol oynamaktad\u0131r. \u0130\u015fte tam da bu noktada Jenkins devreye giriyor. Jenkins, a\u00e7\u0131k kaynak kodlu, Java tabanl\u0131 bir otomasyon sunucusudur ve \u00f6zellikle s\u00fcrekli entegrasyon (CI) ve s\u00fcrekli teslimat (CD) s\u00fcre\u00e7lerinin orkestrasyonu i\u00e7in tasarlanm\u0131\u015ft\u0131r. Peki, bu &#8220;s\u00fcrekli&#8221; kavramlar ne anlama geliyor ve Jenkins neden bu kadar \u00f6nemli?<\/p>\n<p>S\u00fcrekli Entegrasyon (CI), geli\u015ftiricilerin kod de\u011fi\u015fikliklerini ana kod taban\u0131na d\u00fczenli olarak, genellikle g\u00fcnde birka\u00e7 kez entegre etme prati\u011fidir. Her entegrasyon, otomatik bir derleme ve test s\u00fcreci taraf\u0131ndan do\u011frulan\u0131r. Bu yakla\u015f\u0131m, entegrasyon sorunlar\u0131n\u0131 erken a\u015famada tespit etmeye yard\u0131mc\u0131 olur, b\u00f6ylece sorunlar b\u00fcy\u00fcmeden ve \u00e7\u00f6z\u00fcm\u00fc zorla\u015fmadan \u00f6nce ele al\u0131nabilir. Geli\u015ftiriciler k\u00fc\u00e7\u00fck, art\u0131ml\u0131 de\u011fi\u015fiklikler \u00fczerinde \u00e7al\u0131\u015ft\u0131k\u00e7a, kod taban\u0131 her zaman kararl\u0131 ve da\u011f\u0131t\u0131ma haz\u0131r kal\u0131r. Jenkins, bu otomatik derleme ve test ad\u0131mlar\u0131n\u0131 tetiklemek, \u00e7al\u0131\u015ft\u0131rmak ve sonu\u00e7lar\u0131n\u0131 raporlamak i\u00e7in m\u00fckemmel bir platform sunar. \u00d6rne\u011fin, bir geli\u015ftirici yeni bir \u00f6zellik ekledi\u011finde veya bir hatay\u0131 giderdi\u011finde, kodunu versiyon kontrol sistemine (\u00f6rne\u011fin Git) g\u00f6nderir. Jenkins, bu de\u011fi\u015fikli\u011fi alg\u0131lar, projenin en son halini \u00e7eker, kodu derler ve tan\u0131mlanm\u0131\u015f t\u00fcm birim ve entegrasyon testlerini \u00e7al\u0131\u015ft\u0131r\u0131r. Herhangi bir hata durumunda, ilgili geli\u015ftiriciye ve ekibe an\u0131nda bildirim g\u00f6nderilir. Bu, sorunlar\u0131n h\u0131zla \u00e7\u00f6z\u00fclmesini sa\u011flar ve geli\u015ftirme s\u00fcrecindeki &#8220;entegrasyon cehennemi&#8221; olarak bilinen durumu ortadan kald\u0131r\u0131r.<\/p>\n<p>S\u00fcrekli Teslimat (CD) ise CI&#8217;n\u0131n bir uzant\u0131s\u0131d\u0131r. Ba\u015far\u0131l\u0131 bir \u015fekilde entegre edilmi\u015f ve test edilmi\u015f kodun, otomatik olarak bir depoya (\u00f6rne\u011fin, bir artefakt deposu) da\u011f\u0131t\u0131ma haz\u0131r hale getirilmesi s\u00fcrecidir. Bu, yaz\u0131l\u0131m\u0131n her an \u00fcretime al\u0131nabilecek durumda olmas\u0131n\u0131 sa\u011flar, ancak da\u011f\u0131t\u0131m karar\u0131 manuel olarak verilir. S\u00fcrekli Da\u011f\u0131t\u0131m (Continuous Deployment) ise CD&#8217;nin daha ileri bir ad\u0131m\u0131d\u0131r; burada ba\u015far\u0131l\u0131 bir \u015fekilde test edilmi\u015f her de\u011fi\u015fiklik, insan m\u00fcdahalesi olmadan otomatik olarak \u00fcretime da\u011f\u0131t\u0131l\u0131r. Jenkins, bu da\u011f\u0131t\u0131m ad\u0131mlar\u0131n\u0131 da otomatikle\u015ftirmek i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, testleri ba\u015far\u0131yla ge\u00e7en bir uygulama otomatik olarak bir test ortam\u0131na veya hatta \u00fcretim ortam\u0131na da\u011f\u0131t\u0131labilir. Bu, manuel hatalar\u0131 azalt\u0131r, da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r ve yaz\u0131l\u0131m\u0131n m\u00fc\u015fterilere daha h\u0131zl\u0131 ula\u015fmas\u0131n\u0131 sa\u011flar. Jenkins&#8217;in sundu\u011fu geni\u015f eklenti ekosistemi sayesinde, neredeyse her t\u00fcrl\u00fc da\u011f\u0131t\u0131m hedefine (Docker konteynerleri, Kubernetes k\u00fcmeleri, bulut platformlar\u0131 vb.) entegre olmak m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<p>Jenkins&#8217;in kullan\u0131m\u0131n\u0131n temel faydalar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong>Hata Tespiti ve \u00c7\u00f6z\u00fcm\u00fc:<\/strong> Entegrasyon sorunlar\u0131 erken a\u015famada yakalan\u0131r, bu da hata ay\u0131klama s\u00fcresini ve maliyetini azalt\u0131r.<br \/>\n*   <strong>Geli\u015ftirici Verimlili\u011fi:<\/strong> Otomatik s\u00fcre\u00e7ler sayesinde geli\u015ftiriciler manuel g\u00f6revlerle u\u011fra\u015fmak yerine kod yazmaya odaklanabilirler.<br \/>\n*   <strong>Daha H\u0131zl\u0131 Geri Bildirim:<\/strong> Geli\u015ftiriciler, kod de\u011fi\u015fikliklerinin etkileri hakk\u0131nda an\u0131nda geri bildirim al\u0131rlar.<br \/>\n*   <strong>Yaz\u0131l\u0131m Kalitesi:<\/strong> D\u00fczenli testler ve entegrasyonlar sayesinde yaz\u0131l\u0131m\u0131n genel kalitesi artar.<br \/>\n*   <strong>Daha H\u0131zl\u0131 Teslimat:<\/strong> Otomatik derleme, test ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri, yaz\u0131l\u0131m\u0131n m\u00fc\u015fterilere daha h\u0131zl\u0131 ula\u015fmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>\u015eeffafl\u0131k:<\/strong> T\u00fcm s\u00fcre\u00e7ler izlenebilir ve raporlanabilir, bu da proje durumu hakk\u0131nda net bir g\u00f6r\u00fcn\u00fcm sunar.<\/p>\n<p>\u00d6zetle, Jenkins, modern DevOps pratiklerinin temel ta\u015f\u0131d\u0131r. Projelerinizin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc otomatikle\u015ftirerek, ekiplerin daha h\u0131zl\u0131, daha g\u00fcvenilir ve daha kaliteli yaz\u0131l\u0131mlar sunmas\u0131na olanak tan\u0131r. Bu nedenle, Jenkins&#8217;i \u00f6\u011frenmek ve projelerinize entegre etmek, rekabet\u00e7i kalmak isteyen her yaz\u0131l\u0131m ekibi i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h2>Ubuntu&#8217;da Jenkins Kurulumu \u0130\u00e7in \u00d6n Haz\u0131rl\u0131klar Nelerdir?<\/h2>\n<p>Jenkins&#8217;i Ubuntu sunucunuza kurmadan \u00f6nce, sorunsuz bir kurulum ve \u00e7al\u0131\u015fma deneyimi sa\u011flamak i\u00e7in baz\u0131 \u00f6n haz\u0131rl\u0131k ad\u0131mlar\u0131n\u0131 tamamlaman\u0131z gerekmektedir. Bu ad\u0131mlar, sistem gereksinimlerini kontrol etmekten, gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fcklemeye kadar uzan\u0131r. Bu b\u00f6l\u00fcm, kurulum s\u00fcrecine ba\u015flamadan \u00f6nce dikkat etmeniz gereken kritik noktalar\u0131 detayland\u0131racakt\u0131r.<\/p>\n<p>\u00d6ncelikle, Jenkins bir Java uygulamas\u0131d\u0131r, dolay\u0131s\u0131yla sisteminizde bir Java Geli\u015ftirme Kiti (JDK) kurulu olmas\u0131 \u015fartt\u0131r. Jenkins&#8217;in g\u00fcncel s\u00fcr\u00fcmleri genellikle Java 11 veya \u00fcst\u00fcn\u00fc gerektirir. OpenJDK, Ubuntu&#8217;da yayg\u0131n olarak kullan\u0131lan ve \u00f6nerilen Java da\u011f\u0131t\u0131m\u0131d\u0131r. Kurulumdan \u00f6nce Java s\u00fcr\u00fcm\u00fcn\u00fcz\u00fc kontrol etmek veya kurmak i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz. Ayr\u0131ca, Jenkins&#8217;in d\u00fczg\u00fcn \u00e7al\u0131\u015fabilmesi i\u00e7in yeterli sistem kaynaklar\u0131na sahip bir sunucuya ihtiyac\u0131n\u0131z olacakt\u0131r. Minimum gereksinimler genellikle 256 MB RAM ve 1 GB depolama alan\u0131 olarak belirtilse de, ger\u00e7ek d\u00fcnya senaryolar\u0131nda bu de\u011ferler \u00e7ok yetersiz kalacakt\u0131r. \u00d6zellikle birden fazla e\u015fzamanl\u0131 derleme \u00e7al\u0131\u015ft\u0131racaksan\u0131z veya b\u00fcy\u00fck projelerle u\u011fra\u015f\u0131yorsan\u0131z, daha fazla RAM (en az 4 GB \u00f6nerilir) ve i\u015flemci g\u00fcc\u00fc (2 CPU \u00e7ekirde\u011fi veya \u00fczeri) sa\u011flamak performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r. Depolama alan\u0131 a\u00e7\u0131s\u0131ndan da, derleme artefaktlar\u0131, loglar ve eklentiler zamanla yer kaplayaca\u011f\u0131ndan, en az 10-20 GB bo\u015f disk alan\u0131 ay\u0131rmak ak\u0131ll\u0131ca olacakt\u0131r.<\/p>\n<p>\u015eimdi Java kurulumuna ge\u00e7elim. Ubuntu sisteminizde halihaz\u0131rda bir Java s\u00fcr\u00fcm\u00fc kurulu olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in terminalde \u015fu komutu \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code>\njava -version\n<\/code><\/pre>\n<p>E\u011fer Java kurulu de\u011filse veya Jenkins&#8217;in gerektirdi\u011fi s\u00fcr\u00fcmden daha eski bir s\u00fcr\u00fcmse, OpenJDK 11&#8217;i kurman\u0131z gerekecektir. Ubuntu&#8217;da paket y\u00f6neticisi (APT) arac\u0131l\u0131\u011f\u0131yla Java&#8217;y\u0131 kurmak olduk\u00e7a basittir. \u0130lk olarak, sisteminizin paket listesini g\u00fcncelleyin:<\/p>\n<pre><code>\nsudo apt update\nsudo apt upgrade -y\n<\/code><\/pre>\n<p>Ard\u0131ndan, OpenJDK 11&#8217;i kurun:<\/p>\n<pre><code>\nsudo apt install openjdk-11-jdk -y\n<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Java s\u00fcr\u00fcm\u00fcn\u00fc tekrar kontrol ederek do\u011fru s\u00fcr\u00fcm\u00fcn etkin oldu\u011fundan emin olabilirsiniz:<\/p>\n<pre><code>\njava -version\njavac -version\n<\/code><\/pre>\n<p>Bu komutlar size Java \u00e7al\u0131\u015fma zaman\u0131 ve derleyici s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir. \u00c7\u0131kt\u0131da &#8220;openjdk version &#8220;11.0.x&#8221;&#8221; gibi bir ifade g\u00f6rmelisiniz.<\/p>\n<div class=\"interactive-element\">\n  Uzman \u0130pucu: Birden fazla Java s\u00fcr\u00fcm\u00fc y\u00fckl\u00fcyse, &#8220;sudo update-alternatives &#8211;config java&#8221; komutu ile varsay\u0131lan Java s\u00fcr\u00fcm\u00fcn\u00fc manuel olarak ayarlayabilirsiniz. Bu, Jenkins&#8217;in do\u011fru Java ortam\u0131n\u0131 kullanmas\u0131n\u0131 garantiler.\n<\/div>\n<p>Bir di\u011fer \u00f6nemli \u00f6n haz\u0131rl\u0131k ad\u0131m\u0131, sisteminizin g\u00fcncel olmas\u0131d\u0131r. <code class=\"language-\">sudo apt update<\/code> ve <code class=\"language-\">sudo apt upgrade -y<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak, mevcut paketlerinizi en son s\u00fcr\u00fcmlerine g\u00fcnceller ve olas\u0131 g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapat\u0131r. Bu, hem genel sistem kararl\u0131l\u0131\u011f\u0131 hem de Jenkins&#8217;in ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n do\u011fru bir \u015fekilde kar\u015f\u0131lanmas\u0131 a\u00e7\u0131s\u0131ndan \u00f6nemlidir.<\/p>\n<p>Son olarak, g\u00fcvenlik duvar\u0131 ayarlar\u0131n\u0131z\u0131 kontrol etmeniz gerekebilir. Jenkins varsay\u0131lan olarak 8080 portunu kullan\u0131r. E\u011fer sunucunuzda bir g\u00fcvenlik duvar\u0131 (\u00f6rne\u011fin UFW) etkinse, Jenkins aray\u00fcz\u00fcne d\u0131\u015far\u0131dan eri\u015febilmek i\u00e7in bu portu a\u00e7man\u0131z gerekecektir. Portu a\u00e7mak i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code>\nsudo ufw allow 8080\nsudo ufw enable\nsudo ufw status\n<\/code><\/pre>\n<p>Bu komutlar, 8080 portunu a\u00e7ar ve g\u00fcvenlik duvar\u0131n\u0131n etkin oldu\u011fundan emin olur. <code class=\"language-\">ufw status<\/code> komutu, portun ba\u015far\u0131yla a\u00e7\u0131l\u0131p a\u00e7\u0131lmad\u0131\u011f\u0131n\u0131 do\u011frulaman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Bu \u00f6n haz\u0131rl\u0131k ad\u0131mlar\u0131n\u0131 tamamlad\u0131ktan sonra, Jenkins kurulumuna ge\u00e7meye haz\u0131rs\u0131n\u0131z demektir. Bu ad\u0131mlar, sadece kurulumun kendisi i\u00e7in de\u011fil, ayn\u0131 zamanda Jenkins&#8217;in gelecekteki performans ve g\u00fcvenli\u011fi i\u00e7in de temel olu\u015fturur.<\/p>\n<h2>Jenkins&#8217;i Ubuntu&#8217;ya Ad\u0131m Ad\u0131m Nas\u0131l Kurar\u0131z?<\/h2>\n<p>\u00d6n haz\u0131rl\u0131klar\u0131m\u0131z\u0131 tamamlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi Jenkins&#8217;in Ubuntu sistemimize kurulumuna ge\u00e7ebiliriz. Bu s\u00fcre\u00e7, Jenkins&#8217;in resmi APT deposunu sistemimize eklemek, anahtar\u0131n\u0131 do\u011frulamak ve ard\u0131ndan paketi y\u00fcklemekten olu\u015fur. Ad\u0131mlar\u0131 dikkatlice takip ederek, Jenkins&#8217;i sorunsuz bir \u015fekilde kurabilirsiniz.<\/p>\n<p>\u00d6ncelikle, Jenkins&#8217;in APT deposunu sistemimize eklememiz gerekiyor. Bu, gelecekte Jenkins g\u00fcncellemelerini sistemimizin di\u011fer paketleriyle birlikte kolayca alabilmemizi sa\u011flar. Jenkins, paket b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak i\u00e7in bir GPG anahtar\u0131 kullan\u0131r. Bu anahtar\u0131 indirip sistemimize ekleyerek, indirdi\u011fimiz paketlerin ger\u00e7ekten Jenkins taraf\u0131ndan sa\u011fland\u0131\u011f\u0131n\u0131 do\u011frular\u0131z.<\/p>\n<p>\u0130lk ad\u0131m olarak, Jenkins&#8217;in GPG anahtar\u0131n\u0131 sistemimize indirip ekleyelim:<\/p>\n<pre><code>\ncurl -fsSL https:\/\/pkg.jenkins.io\/debian-stable\/jenkins.io-2023.key | sudo tee \\\n  \/usr\/share\/keyrings\/jenkins-keyring.asc > \/dev\/null\n<\/code><\/pre>\n<p>Bu komut, Jenkins GPG anahtar\u0131n\u0131 <code class=\"language-\">\/usr\/share\/keyrings\/jenkins-keyring.asc<\/code> yoluna kaydeder. <code class=\"language-\">sudo tee<\/code> komutu, indirilen i\u00e7eri\u011fi hem standart \u00e7\u0131kt\u0131ya yazarken hem de belirtilen dosyaya kaydeder. <code class=\"language-\">> \/dev\/null<\/code> k\u0131sm\u0131 ise standart \u00e7\u0131kt\u0131y\u0131 g\u00f6rmezden gelerek sadece dosyaya yaz\u0131lmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Anahtar\u0131 ekledikten sonra, Jenkins APT deposunu sistemimizin kaynak listesine eklememiz gerekiyor. Bu, APT paket y\u00f6neticisinin Jenkins paketlerini nereden indirece\u011fini bilmesini sa\u011flar.<\/p>\n<pre><code>\necho deb [signed-by=\/usr\/share\/keyrings\/jenkins-keyring.asc] \\\n  https:\/\/pkg.jenkins.io\/debian-stable binary\/ | sudo tee \\\n  \/etc\/apt\/sources.list.d\/jenkins.list > \/dev\/null\n<\/code><\/pre>\n<p>Bu komut, Jenkins deposunun adresini ve GPG anahtar\u0131n\u0131n konumunu i\u00e7eren yeni bir dosya (<code class=\"language-\">jenkins.list<\/code>) olu\u015fturur ve <code class=\"language-\">\/etc\/apt\/sources.list.d\/<\/code> dizinine yerle\u015ftirir. <code class=\"language-\">signed-by<\/code> parametresi, APT&#8217;ye bu depodan gelen paketlerin belirtilen anahtar ile imzalanmas\u0131 gerekti\u011fini s\u00f6yler, b\u00f6ylece g\u00fcvenlik sa\u011flan\u0131r.<\/p>\n<p>Depoyu ekledikten sonra, APT paket listemizi g\u00fcncellememiz gerekiyor ki yeni eklenen Jenkins deposundaki paketler hakk\u0131nda bilgi edinebilsin:<\/p>\n<pre><code>\nsudo apt update\n<\/code><\/pre>\n<p>Bu komut, t\u00fcm depolar\u0131n\u0131zdaki paket bilgilerini yeniler. Art\u0131k sistemimiz Jenkins paketini indirmeye haz\u0131rd\u0131r. \u015eimdi Jenkins&#8217;i kurabiliriz:<\/p>\n<pre><code>\nsudo apt install jenkins -y\n<\/code><\/pre>\n<p>Bu komut, Jenkins paketini ve onunla birlikte gelen t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 sisteminize y\u00fckler. <code class=\"language-\">-y<\/code> bayra\u011f\u0131, kurulum s\u0131ras\u0131nda \u00e7\u0131kan onay sorular\u0131na otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 vermenizi sa\u011flar. Kurulum s\u00fcresi internet h\u0131z\u0131n\u0131za ve sisteminizin performans\u0131na ba\u011fl\u0131 olarak de\u011fi\u015fiklik g\u00f6sterebilir.<\/p>\n<p>Kurulum tamamland\u0131ktan sonra, Jenkins servisi otomatik olarak ba\u015flat\u0131lmal\u0131d\u0131r. Ancak, servisin durumunu kontrol etmek ve \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak her zaman iyi bir uygulamad\u0131r:<\/p>\n<pre><code>\nsudo systemctl status jenkins\n<\/code><\/pre>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131, Jenkins servisinin aktif (running) oldu\u011funu g\u00f6stermelidir. E\u011fer servis aktif de\u011filse veya bir hata olu\u015ftuysa, a\u015fa\u011f\u0131daki komutlarla servisi ba\u015flatabilir ve sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flayabilirsiniz:<\/p>\n<pre><code>\nsudo systemctl start jenkins\nsudo systemctl enable jenkins\n<\/code><\/pre>\n<p>Art\u0131k Jenkins sunucunuz Ubuntu \u00fczerinde \u00e7al\u0131\u015f\u0131yor olmal\u0131. Bir sonraki ad\u0131m, Jenkins web aray\u00fcz\u00fcne eri\u015fmek ve ilk yap\u0131land\u0131rmay\u0131 tamamlamakt\u0131r. G\u00fcvenlik duvar\u0131n\u0131z\u0131 daha \u00f6nce yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun (varsay\u0131lan olarak 8080 portu).<\/p>\n<div class=\"interactive-element\">\n  Uzman \u0130pucu: Kurulum s\u0131ras\u0131nda veya sonras\u0131nda herhangi bir sorunla kar\u015f\u0131la\u015f\u0131rsan\u0131z, Jenkins servis loglar\u0131n\u0131 kontrol etmek sorun giderme i\u00e7in \u00e7ok yard\u0131mc\u0131 olacakt\u0131r. Loglar\u0131 a\u015fa\u011f\u0131daki komutla g\u00f6r\u00fcnt\u00fcleyebilirsiniz:<\/p>\n<pre><code>\n  sudo journalctl -fu jenkins\n  <\/code><\/pre>\n<p>  Bu komut, Jenkins servisinin canl\u0131 loglar\u0131n\u0131 g\u00f6sterir ve hatalar\u0131 an\u0131nda tespit etmenizi sa\u011flar.\n<\/p><\/div>\n<p>Bu ad\u0131mlarla Jenkins&#8217;i Ubuntu sisteminize ba\u015far\u0131yla kurmu\u015f olmal\u0131s\u0131n\u0131z. \u015eimdi s\u0131ra, web aray\u00fcz\u00fcne eri\u015fip Jenkins&#8217;i projeniz i\u00e7in yap\u0131land\u0131rmaya geldi.<\/p>\n<h2>Jenkins Aray\u00fcz\u00fcne \u0130lk Eri\u015fim ve Temel Yap\u0131land\u0131rma Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Jenkins kurulumunu ba\u015far\u0131yla tamamlad\u0131ktan sonra, web taray\u0131c\u0131n\u0131z arac\u0131l\u0131\u011f\u0131yla Jenkins aray\u00fcz\u00fcne eri\u015fmeniz ve ilk yap\u0131land\u0131rma ad\u0131mlar\u0131n\u0131 tamamlaman\u0131z gerekmektedir. Bu ilk yap\u0131land\u0131rma, Jenkins&#8217;in g\u00fcvenli\u011fini sa\u011flamak, gerekli eklentileri y\u00fcklemek ve y\u00f6netici kullan\u0131c\u0131 olu\u015fturmak i\u00e7in kritik \u00f6neme sahiptir. Bu b\u00f6l\u00fcm, bu ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayacakt\u0131r.<\/p>\n<p>Jenkins web aray\u00fcz\u00fcne eri\u015fmek i\u00e7in, web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131n ve sunucunuzun IP adresini veya alan ad\u0131n\u0131, Jenkins&#8217;in varsay\u0131lan olarak kulland\u0131\u011f\u0131 8080 portuyla birlikte yaz\u0131n. \u00d6rne\u011fin, e\u011fer sunucunuzun IP adresi <code class=\"language-\">192.168.1.100<\/code> ise, taray\u0131c\u0131n\u0131zda <code class=\"language-\">http:\/\/192.168.1.100:8080<\/code> adresine gidin. E\u011fer Jenkins&#8217;i yerel makinenize kurduysan\u0131z, <code class=\"language-\">http:\/\/localhost:8080<\/code> adresini kullanabilirsiniz.<\/p>\n<p>Bu adrese gitti\u011finizde, Jenkins&#8217;in sizi bir &#8220;Unlock Jenkins&#8221; (Jenkins&#8217;in Kilidini A\u00e7\u0131n) ekran\u0131yla kar\u015f\u0131lad\u0131\u011f\u0131n\u0131 g\u00f6receksiniz. Bu, ilk kurulum s\u0131ras\u0131nda Jenkins&#8217;in g\u00fcvenli\u011fini sa\u011flamak i\u00e7in kullan\u0131lan bir g\u00fcvenlik mekanizmas\u0131d\u0131r. Jenkins, ilk y\u00f6netici parolas\u0131n\u0131 sunucudaki belirli bir dosyaya yazar. Bu parolay\u0131 bulup girmeniz gerekmektedir.<\/p>\n<p>Ekrandaki talimatlarda, parolan\u0131n bulundu\u011fu dosyan\u0131n yolu belirtilecektir. Genellikle bu yol <code class=\"language-\">\/var\/lib\/jenkins\/secrets\/initialAdminPassword<\/code> \u015feklindedir. Bu parolay\u0131 almak i\u00e7in sunucunuzun terminaline d\u00f6n\u00fcn ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nsudo cat \/var\/lib\/jenkins\/secrets\/initialAdminPassword\n<\/code><\/pre>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131, 32 karakterlik alfan\u00fcmerik bir parola olacakt\u0131r. Bu parolay\u0131 kopyalay\u0131n ve Jenkins web aray\u00fcz\u00fcndeki &#8220;Administrator password&#8221; (Y\u00f6netici parolas\u0131) alan\u0131na yap\u0131\u015ft\u0131r\u0131n. Ard\u0131ndan &#8220;Continue&#8221; (Devam) butonuna t\u0131klay\u0131n.<\/p>\n<p>Parolay\u0131 girdikten sonra, Jenkins sizi &#8220;Customize Jenkins&#8221; (Jenkins&#8217;i \u00d6zelle\u015ftirin) ekran\u0131na y\u00f6nlendirecektir. Burada, Jenkins&#8217;in temel i\u015flevselli\u011fini geni\u015fleten eklentileri y\u00fcklemeniz istenir. \u0130ki se\u00e7enek sunulur:<\/p>\n<p>1.  <strong>Install suggested plugins (\u00d6nerilen eklentileri y\u00fckle):<\/strong> Bu se\u00e7enek, Jenkins toplulu\u011fu taraf\u0131ndan en yayg\u0131n kullan\u0131lan ve \u00f6nerilen eklentileri otomatik olarak kurar. \u00c7o\u011fu kullan\u0131c\u0131 i\u00e7in bu en iyi se\u00e7enektir, \u00e7\u00fcnk\u00fc bu eklentiler genellikle versiyon kontrol sistemleri (Git), derleme ara\u00e7lar\u0131 (Maven, Gradle) ve temel bildirim mekanizmalar\u0131 gibi kritik i\u015flevselli\u011fi sa\u011flar.<br \/>\n2.  <strong>Select plugins to install (Y\u00fcklenecek eklentileri se\u00e7):<\/strong> Bu se\u00e7enek, hangi eklentilerin y\u00fcklenece\u011fini manuel olarak se\u00e7menize olanak tan\u0131r. E\u011fer belirli ihtiya\u00e7lar\u0131n\u0131z varsa veya sadece minimum eklenti setini kurmak istiyorsan\u0131z bu se\u00e7ene\u011fi kullanabilirsiniz. Ancak, ba\u015flang\u0131\u00e7ta \u00f6nerilen eklentileri y\u00fcklemek genellikle daha iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<p>&#8220;Install suggested plugins&#8221; se\u00e7ene\u011fini t\u0131klay\u0131n. Jenkins, se\u00e7ilen eklentileri indirmeye ve kurmaya ba\u015flayacakt\u0131r. Bu i\u015flem, internet h\u0131z\u0131n\u0131za ve sunucunuzun performans\u0131na ba\u011fl\u0131 olarak birka\u00e7 dakika s\u00fcrebilir. Kurulum s\u0131ras\u0131nda ilerlemeyi ekranda g\u00f6receksiniz.<\/p>\n<p>Eklenti kurulumu tamamland\u0131ktan sonra, Jenkins sizden bir y\u00f6netici kullan\u0131c\u0131s\u0131 olu\u015fturman\u0131z\u0131 isteyecektir. Bu, gelecekte Jenkins&#8217;e giri\u015f yapmak i\u00e7in kullanaca\u011f\u0131n\u0131z ana hesapt\u0131r. A\u015fa\u011f\u0131daki bilgileri doldurun:<\/p>\n<p>*   <strong>Username (Kullan\u0131c\u0131 Ad\u0131):<\/strong> G\u00fcvenli ve hat\u0131rlamas\u0131 kolay bir kullan\u0131c\u0131 ad\u0131 se\u00e7in (\u00f6rne\u011fin, <code class=\"language-\">admin<\/code> veya <code class=\"language-\">jenkins_admin<\/code>).<br \/>\n*   <strong>Password (Parola):<\/strong> G\u00fc\u00e7l\u00fc bir parola belirleyin.<br \/>\n*   <strong>Confirm password (Parolay\u0131 Onayla):<\/strong> Parolay\u0131 tekrar girin.<br \/>\n*   <strong>Full name (Tam Ad\u0131):<\/strong> Ad\u0131n\u0131z\u0131 ve soyad\u0131n\u0131z\u0131 girin.<br \/>\n*   <strong>E-mail address (E-posta Adresi):<\/strong> Ge\u00e7erli bir e-posta adresi girin. Bu, bildirimler ve parola s\u0131f\u0131rlama i\u015flemleri i\u00e7in kullan\u0131labilir.<\/p>\n<p>Bilgileri doldurduktan sonra &#8220;Save and Continue&#8221; (Kaydet ve Devam Et) butonuna t\u0131klay\u0131n.<\/p>\n<p>Bir sonraki ad\u0131m, &#8220;Jenkins URL&#8221; (Jenkins URL&#8217;si) yap\u0131land\u0131rmas\u0131d\u0131r. Jenkins, projelerinizdeki derleme sonu\u00e7lar\u0131 veya bildirimler i\u00e7in bu URL&#8217;yi kullan\u0131r. Genellikle varsay\u0131lan olarak sunucunuzun IP adresi ve portu ile do\u011fru bir \u015fekilde ayarlanm\u0131\u015f olacakt\u0131r. E\u011fer bir alan ad\u0131 kullan\u0131yorsan\u0131z veya bir ters proxy arkas\u0131nda \u00e7al\u0131\u015f\u0131yorsan\u0131z, bu URL&#8217;yi buna g\u00f6re ayarlaman\u0131z gerekebilir. Do\u011fru URL&#8217;nin ayarland\u0131\u011f\u0131ndan emin olduktan sonra &#8220;Save and Finish&#8221; (Kaydet ve Bitir) butonuna t\u0131klay\u0131n.<\/p>\n<p>Tebrikler! Jenkins kurulumunuz ve temel yap\u0131land\u0131rman\u0131z tamamland\u0131. \u015eimdi &#8220;Start using Jenkins&#8221; (Jenkins&#8217;i kullanmaya ba\u015fla) butonuna t\u0131klayarak Jenkins paneline eri\u015febilirsiniz. Bu, Jenkins&#8217;in ana \u00e7al\u0131\u015fma alan\u0131d\u0131r ve buradan yeni i\u015fler olu\u015fturmaya, eklentileri y\u00f6netmeye ve sistem ayarlar\u0131n\u0131 yap\u0131land\u0131rmaya ba\u015flayabilirsiniz.<\/p>\n<div class=\"interactive-element\">\n  Uzman \u0130pucu: Jenkins kurulumu sonras\u0131nda, sistem g\u00fcvenli\u011fini art\u0131rmak i\u00e7in baz\u0131 ek ad\u0131mlar atman\u0131z \u00f6nemlidir. \u00d6rne\u011fin, Jenkins&#8217;i bir ters proxy (Nginx veya Apache gibi) arkas\u0131nda \u00e7al\u0131\u015ft\u0131rmak, SSL\/TLS \u015fifrelemesi sa\u011flamak ve 8080 portunu do\u011frudan internete a\u00e7maktan ka\u00e7\u0131nmak g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Ayr\u0131ca, d\u00fczenli olarak g\u00fcvenlik eklentilerini ve Jenkins \u00e7ekirde\u011fini g\u00fcncellemeyi unutmay\u0131n.\n<\/div>\n<p>Bu ilk yap\u0131land\u0131rma ad\u0131mlar\u0131, Jenkins&#8217;i g\u00fcvenli ve kullan\u0131ma haz\u0131r hale getirmenin temelini olu\u015fturur. Art\u0131k CI\/CD s\u00fcre\u00e7lerinizi otomatikle\u015ftirmek i\u00e7in Jenkins&#8217;i kullanmaya ba\u015flayabilirsiniz.<\/p>\n<h2>Jenkins ile CI\/CD S\u00fcre\u00e7lerini Nas\u0131l Ba\u015flat\u0131r\u0131z? (Vaka Analizi Dahil)<\/h2>\n<p>Jenkins&#8217;i kurup temel yap\u0131land\u0131rmas\u0131n\u0131 tamamlad\u0131ktan sonra, \u015fimdi as\u0131l amac\u0131na, yani s\u00fcrekli entegrasyon ve s\u00fcrekli teslimat (CI\/CD) s\u00fcre\u00e7lerini otomatikle\u015ftirmeye ge\u00e7ebiliriz. Bu b\u00f6l\u00fcm, Jenkins&#8217;te basit bir pipeline (i\u015flem hatt\u0131) olu\u015fturarak, bir Git deposundaki kod de\u011fi\u015fikliklerini nas\u0131l izleyece\u011finizi, otomatik derleme ve test i\u015flemlerini nas\u0131l tetikleyece\u011finizi bir vaka analizi \u00fczerinden g\u00f6sterecektir.<\/p>\n<p><strong>Vaka Analizi: Basit Bir Java Uygulamas\u0131 i\u00e7in CI\/CD Pipeline&#8217;\u0131<\/strong><\/p>\n<p>Senaryomuzda, bir Java Spring Boot uygulamam\u0131z oldu\u011funu ve bu uygulaman\u0131n kodunun bir Git deposunda (\u00f6rne\u011fin GitHub veya GitLab) tutuldu\u011funu varsayal\u0131m. Amac\u0131m\u0131z, her kod de\u011fi\u015fikli\u011finde (push) Jenkins&#8217;in bu de\u011fi\u015fikli\u011fi alg\u0131lamas\u0131, uygulamay\u0131 Maven ile derlemesi ve temel testleri \u00e7al\u0131\u015ft\u0131rmas\u0131d\u0131r.<\/p>\n<p><strong>Ad\u0131m 1: Yeni Bir Jenkins \u0130\u015flem Hatt\u0131 (Pipeline) Olu\u015fturma<\/strong><\/p>\n<p>Jenkins paneline giri\u015f yapt\u0131ktan sonra, sol men\u00fcden &#8220;New Item&#8221; (Yeni \u00d6\u011fe) se\u00e7ene\u011fine t\u0131klay\u0131n.<br \/>\n*   <strong>Item Name (\u00d6\u011fe Ad\u0131):<\/strong> Uygulaman\u0131za uygun bir isim verin, \u00f6rne\u011fin <code class=\"language-\">SpringBoot-CI-Pipeline<\/code>.<br \/>\n*   <strong>Select a project type (Proje t\u00fcr\u00fc se\u00e7in):<\/strong> &#8220;Pipeline&#8221; se\u00e7ene\u011fini se\u00e7in.<br \/>\n*   &#8220;OK&#8221; butonuna t\u0131klay\u0131n.<\/p>\n<p><strong>Ad\u0131m 2: Pipeline Yap\u0131land\u0131rmas\u0131<\/strong><\/p>\n<p>A\u00e7\u0131lan yap\u0131land\u0131rma sayfas\u0131nda, bir\u00e7ok se\u00e7enek g\u00f6receksiniz. \u015eimdilik en \u00f6nemli k\u0131s\u0131mlara odaklanal\u0131m:<\/p>\n<p>1.  <strong>General (Genel):<\/strong><br \/>\n    *   \u0130ste\u011fe ba\u011fl\u0131 olarak bir a\u00e7\u0131klama ekleyebilirsiniz.<\/p>\n<p>2.  <strong>Build Triggers (Derleme Tetikleyicileri):<\/strong><br \/>\n    *   Burada Jenkins&#8217;in derlemeleri ne zaman tetikleyece\u011fini belirleriz. CI i\u00e7in en yayg\u0131n tetikleyici, versiyon kontrol sistemindeki (Git) bir de\u011fi\u015fikliktir.<br \/>\n    *   &#8220;SCM polling&#8221; (SCM yoklama) veya &#8220;GitHub hook trigger for GITScm polling&#8221; (GitHub kancas\u0131 tetikleyicisi) se\u00e7eneklerinden birini i\u015faretleyebilirsiniz. E\u011fer GitHub kullan\u0131yorsan\u0131z ve webhook kurmak istiyorsan\u0131z ikincisi daha verimlidir. SCM polling se\u00e7ene\u011fini i\u015faretlerseniz, &#8220;Schedule&#8221; (Program) alan\u0131na <code class=\"language-\">H\/5 * * * *<\/code> gibi bir de\u011fer girerek Jenkins&#8217;in her 5 dakikada bir Git deposunu kontrol etmesini sa\u011flayabilirsiniz.<\/p>\n<p>3.  <strong>Pipeline (\u0130\u015flem Hatt\u0131):<\/strong><br \/>\n    *   Bu b\u00f6l\u00fcm, i\u015flem hatt\u0131n\u0131n (pipeline) kodunu tan\u0131mlad\u0131\u011f\u0131m\u0131z yerdir. Jenkins Pipeline, Groovy tabanl\u0131 bir DSL (Domain Specific Language) kullan\u0131r ve bu kod genellikle bir <code class=\"language-\">Jenkinsfile<\/code> i\u00e7inde tutulur. Bu, i\u015flem hatt\u0131n\u0131n versiyon kontrol\u00fc alt\u0131nda olmas\u0131n\u0131 sa\u011flar.<br \/>\n    *   <strong>Definition (Tan\u0131m):<\/strong> &#8220;Pipeline script from SCM&#8221; (SCM&#8217;den Pipeline beti\u011fi) se\u00e7ene\u011fini se\u00e7in. Bu, Jenkins&#8217;in <code class=\"language-\">Jenkinsfile<\/code> dosyas\u0131n\u0131 do\u011frudan Git deponuzdan okuyaca\u011f\u0131 anlam\u0131na gelir.<br \/>\n    *   <strong>SCM:<\/strong> &#8220;Git&#8221; se\u00e7ene\u011fini se\u00e7in.<br \/>\n    *   <strong>Repository URL (Depo URL&#8217;si):<\/strong> Git deponuzun URL&#8217;sini girin (\u00f6rn. <code class=\"language-\">https:\/\/github.com\/kullanici\/repo.git<\/code>).<br \/>\n    *   <strong>Credentials (Kimlik Bilgileri):<\/strong> E\u011fer deponuz herkese a\u00e7\u0131k de\u011filse, buraya Git kimlik bilgilerinizi eklemeniz gerekir. &#8220;Add&#8221; -> &#8220;Jenkins&#8221; butonuna t\u0131klayarak kullan\u0131c\u0131 ad\u0131\/parola veya SSH anahtar\u0131 ekleyebilirsiniz.<br \/>\n    *   <strong>Branches to build (Derlenecek dallar):<\/strong> Genellikle <code class=\"language-\">*\/main<\/code> veya <code class=\"language-\">*\/master<\/code> olarak ayarlan\u0131r.<br \/>\n    *   <strong>Script Path (Beti\u011fin Yolu):<\/strong> Varsay\u0131lan olarak <code class=\"language-\">Jenkinsfile<\/code>&#8216;d\u0131r. E\u011fer dosyan\u0131z farkl\u0131 bir isimdeyse veya farkl\u0131 bir dizindeyse buray\u0131 g\u00fcncelleyin.<\/p>\n<p>Yap\u0131land\u0131rmay\u0131 tamamlad\u0131ktan sonra &#8220;Save&#8221; (Kaydet) butonuna t\u0131klay\u0131n.<\/p>\n<p><strong>Ad\u0131m 3: Jenkinsfile Olu\u015fturma<\/strong><\/p>\n<p>\u015eimdi, Git deponuzun k\u00f6k dizinine <code class=\"language-\">Jenkinsfile<\/code> ad\u0131nda bir dosya olu\u015fturman\u0131z ve i\u00e7ine pipeline kodunu yazman\u0131z gerekiyor. \u0130\u015fte basit bir Java\/Maven projesi i\u00e7in \u00f6rnek bir <code class=\"language-\">Jenkinsfile<\/code>:<\/p>\n<pre><code>\npipeline {\n    agent any \n\n    stages {\n        stage('Checkout') {\n            steps {\n                git 'https:\/\/github.com\/kullanici\/repo.git' \/\/ Depo URL'nizi buraya yaz\u0131n\n            }\n        }\n        stage('Build') {\n            steps {\n                \/\/ Maven ile uygulamay\u0131 derle\n                sh 'mvn clean install -DskipTests' \n            }\n        }\n        stage('Test') {\n            steps {\n                \/\/ Maven ile testleri \u00e7al\u0131\u015ft\u0131r\n                sh 'mvn test'\n            }\n        }\n        stage('Archive Artifacts') {\n            steps {\n                \/\/ Olu\u015fan JAR dosyas\u0131n\u0131 ar\u015fivle\n                archiveArtifacts artifacts: 'target\/*.jar', fingerprint: true\n            }\n        }\n    }\n    post { \n        always { \n            echo 'Pipeline finished.'\n        }\n        success {\n            echo 'Build successful!'\n        }\n        failure {\n            echo 'Build failed!'\n        }\n    }\n}\n<\/code><\/pre>\n<p>Bu <code class=\"language-\">Jenkinsfile<\/code> a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 tan\u0131mlar:<br \/>\n*   <code class=\"language-\">agent any<\/code>: Herhangi bir Jenkins agent&#8217;\u0131nda \u00e7al\u0131\u015f.<br \/>\n*   <code class=\"language-\">Checkout<\/code>: Git deposundan kodu \u00e7eker.<br \/>\n*   <code class=\"language-\">Build<\/code>: Maven kullanarak projeyi derler. <code class=\"language-\">-DskipTests<\/code> bayra\u011f\u0131, derleme s\u0131ras\u0131nda testlerin atlanmas\u0131n\u0131 sa\u011flar, b\u00f6ylece derleme ve test a\u015famalar\u0131n\u0131 ay\u0131rabiliriz.<br \/>\n*   <code class=\"language-\">Test<\/code>: Maven kullanarak testleri \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <code class=\"language-\">Archive Artifacts<\/code>: Derleme sonucunda olu\u015fan <code class=\"language-\">.jar<\/code> dosyas\u0131n\u0131 Jenkins&#8217;in ar\u015fivine kaydeder.<br \/>\n*   <code class=\"language-\">post<\/code> blo\u011fu: Pipeline&#8217;\u0131n sonucuna g\u00f6re (ba\u015far\u0131l\u0131, ba\u015far\u0131s\u0131z, her zaman) belirli eylemleri ger\u00e7ekle\u015ftirir.<\/p>\n<p>Bu <code class=\"language-\">Jenkinsfile<\/code>&#8216;\u0131 Git deponuza ekleyin ve de\u011fi\u015fiklikleri push edin.<\/p>\n<p><strong>Ad\u0131m 4: Pipeline&#8217;\u0131 \u00c7al\u0131\u015ft\u0131rma ve \u0130zleme<\/strong><\/p>\n<p>Jenkins ana paneline geri d\u00f6n\u00fcn ve olu\u015fturdu\u011funuz <code class=\"language-\">SpringBoot-CI-Pipeline<\/code> i\u015fine t\u0131klay\u0131n. Sol men\u00fcden &#8220;Build Now&#8221; (\u015eimdi Derle) butonuna t\u0131klayarak pipeline&#8217;\u0131 manuel olarak tetikleyebilirsiniz. E\u011fer Git webhook&#8217;u kurduysan\u0131z veya SCM polling ayarlad\u0131ysan\u0131z, Git deponuza bir de\u011fi\u015fiklik g\u00f6nderdi\u011finizde pipeline otomatik olarak tetiklenecektir.<\/p>\n<p>Derleme ba\u015flad\u0131ktan sonra, &#8220;Build History&#8221; (Derleme Ge\u00e7mi\u015fi) b\u00f6l\u00fcm\u00fcnde yeni bir derleme kayd\u0131n\u0131n olu\u015ftu\u011funu g\u00f6receksiniz. Bu kayda t\u0131klayarak ve ard\u0131ndan sol men\u00fcden &#8220;Console Output&#8221; (Konsol \u00c7\u0131kt\u0131s\u0131) se\u00e7ene\u011fini se\u00e7erek derlemenin ilerleyi\u015fini ve loglar\u0131n\u0131 canl\u0131 olarak izleyebilirsiniz. Burada, Git checkout, Maven derleme ve test ad\u0131mlar\u0131n\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6receksiniz. Herhangi bir hata durumunda, hatan\u0131n nedenini buradan tespit edebilirsiniz.<\/p>\n<p>Bu vaka analizi, Jenkins ile temel bir CI\/CD pipeline&#8217;\u0131n\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 g\u00f6stermektedir. Ger\u00e7ek d\u00fcnya senaryolar\u0131nda, bu pipeline&#8217;a daha fazla ad\u0131m eklenebilir:<br \/>\n*   <strong>Statik Kod Analizi:<\/strong> SonarQube gibi ara\u00e7larla kod kalitesi kontrol\u00fc.<br \/>\n*   <strong>G\u00fcvenlik Tarama:<\/strong> G\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 tespit etmek i\u00e7in ara\u00e7lar \u00e7al\u0131\u015ft\u0131rma.<br \/>\n*   <strong>Docker \u0130maj\u0131 Olu\u015fturma:<\/strong> Uygulamay\u0131 bir Docker konteynerine paketleme.<br \/>\n*   <strong>Da\u011f\u0131t\u0131m:<\/strong> Test ortam\u0131na veya \u00fcretim ortam\u0131na otomatik da\u011f\u0131t\u0131m.<br \/>\n*   <strong>Bildirimler:<\/strong> Slack, E-posta veya Microsoft Teams&#8217;e derleme sonu\u00e7lar\u0131n\u0131 g\u00f6nderme.<\/p>\n<div class=\"interactive-element\">\n  Uzman \u0130pucu: Jenkins Pipeline&#8217;lar\u0131, kod olarak tan\u0131mland\u0131\u011f\u0131 i\u00e7in (Jenkinsfile), versiyon kontrol sisteminizle birlikte y\u00f6netilebilir. Bu, i\u015flem hatt\u0131 de\u011fi\u015fikliklerinin de izlenebilir, geri al\u0131nabilir ve g\u00f6zden ge\u00e7irilebilir olmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, payla\u015f\u0131ml\u0131 k\u00fct\u00fcphaneler (Shared Libraries) kullanarak karma\u015f\u0131k pipeline ad\u0131mlar\u0131n\u0131 yeniden kullan\u0131labilir hale getirebilir, b\u00f6ylece farkl\u0131 projelerde ayn\u0131 CI\/CD mant\u0131\u011f\u0131n\u0131 kolayca uygulayabilirsiniz.\n<\/div>\n<p>Jenkins&#8217;in g\u00fcc\u00fc, bu t\u00fcr otomasyonlar\u0131 esnek bir \u015fekilde tan\u0131mlayabilme ve geni\u015f bir eklenti ekosistemiyle neredeyse her t\u00fcrl\u00fc geli\u015ftirme arac\u0131na entegre olabilme yetene\u011finden gelir. Bu temel pipeline ile ba\u015flayarak, projelerinizin ihtiya\u00e7lar\u0131na g\u00f6re daha karma\u015f\u0131k ve kapsaml\u0131 CI\/CD s\u00fcre\u00e7leri olu\u015fturabilirsiniz.<\/p>\n<h2>\u0130leri D\u00fczey Jenkins Kullan\u0131m\u0131 ve Optimizasyon \u0130pu\u00e7lar\u0131<\/h2>\n<p>Jenkins&#8217;in temel kurulumu ve bir CI\/CD pipeline&#8217;\u0131 olu\u015fturma ad\u0131mlar\u0131n\u0131 tamamlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi daha deneyimli kullan\u0131c\u0131lar i\u00e7in Jenkins&#8217;ten en iyi \u015fekilde yararlanmalar\u0131n\u0131 sa\u011flayacak ileri d\u00fczey ipu\u00e7lar\u0131na ve optimizasyon stratejilerine odaklanal\u0131m. Bu b\u00f6l\u00fcm, g\u00fcvenlik, performans, \u00f6l\u00e7eklenebilirlik ve mobil uyumluluk gibi kritik konular\u0131 ele alacakt\u0131r.<\/p>\n<h3>Jenkins G\u00fcvenli\u011fini Nas\u0131l Sa\u011flar\u0131z?<\/h3>\n<p>Jenkins, projelerinizin kaynak koduna ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerine eri\u015fim sa\u011flad\u0131\u011f\u0131 i\u00e7in g\u00fcvenlik en \u00f6nemli \u00f6nceliklerden biridir. \u0130\u015fte baz\u0131 ileri d\u00fczey g\u00fcvenlik ipu\u00e7lar\u0131:<\/p>\n<p>*   <strong>Ters Proxy ve SSL\/TLS:<\/strong> Jenkins&#8217;i do\u011frudan 8080 portu \u00fczerinden internete a\u00e7mak yerine, Nginx veya Apache gibi bir ters proxy sunucusu arkas\u0131nda \u00e7al\u0131\u015ft\u0131rmak \u015fiddetle tavsiye edilir. Bu, SSL\/TLS \u015fifrelemesi (HTTPS) kullanarak t\u00fcm trafi\u011fi \u015fifrelemenize, kimlik do\u011frulama katmanlar\u0131 eklemenize ve potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 azaltman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, Nginx i\u00e7in basit bir yap\u0131land\u0131rma \u015f\u00f6yle olabilir:<\/p>\n<pre><code>\n    \n      server {\n          listen 80;\n          server_name jenkins.alanadiniz.com;\n          return 301 https:\/\/$host$request_uri;\n      }\n\n      server {\n          listen 443 ssl;\n          server_name jenkins.alanadiniz.com;\n\n          ssl_certificate \/etc\/letsencrypt\/live\/jenkins.alanadiniz.com\/fullchain.pem;\n          ssl_certificate_key \/etc\/letsencrypt\/live\/jenkins.alanadiniz.com\/privkey.pem;\n\n          location \/ {\n              proxy_pass http:\/\/localhost:8080;\n              proxy_set_header Host $host;\n              proxy_set_header X-Real-IP $remote_addr;\n              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n              proxy_set_header X-Forwarded-Proto $scheme;\n              proxy_read_timeout 90;\n              # Di\u011fer proxy ayarlar\u0131\n          }\n      }\n    \n    <\/code><\/pre>\n<p>    Bu \u00f6rnek, Nginx&#8217;in 80 portundan gelen t\u00fcm HTTP isteklerini 443 portundaki HTTPS&#8217;e y\u00f6nlendirdi\u011fini ve 443 portunda Jenkins&#8217;e bir ters proxy g\u00f6revi g\u00f6rd\u00fc\u011f\u00fcn\u00fc g\u00f6stermektedir. SSL sertifikalar\u0131 i\u00e7in Let&#8217;s Encrypt gibi \u00fccretsiz \u00e7\u00f6z\u00fcmler kullanabilirsiniz.<br \/>\n*   <strong>Kullan\u0131c\u0131 ve Rol Y\u00f6netimi:<\/strong> Jenkins&#8217;in kendi dahili kullan\u0131c\u0131 veritaban\u0131n\u0131 kullanmak yerine, LDAP, Active Directory veya OAuth gibi harici kimlik do\u011frulama sistemleriyle entegre olun. Bu, kullan\u0131c\u0131 y\u00f6netimini merkezile\u015ftirir ve g\u00fcvenlik politikalar\u0131n\u0131z\u0131 daha tutarl\u0131 hale getirir. Ayr\u0131ca, &#8220;Role-based Authorization Strategy&#8221; eklentisini kullanarak kullan\u0131c\u0131lara ve gruplara hassas yetkilendirmeler atay\u0131n. Herkesin her \u015feye eri\u015fimi olmamal\u0131d\u0131r.<br \/>\n*   <strong>G\u00fcvenlik G\u00fcncellemeleri:<\/strong> Jenkins \u00e7ekirde\u011fini ve eklentilerini d\u00fczenli olarak g\u00fcncelleyin. Jenkins projesi, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 h\u0131zla yamalar ve g\u00fcncellemeler genellikle kritik d\u00fczeltmeler i\u00e7erir.<br \/>\n*   <strong>Ba\u011f\u0131ml\u0131l\u0131k Taramas\u0131:<\/strong> G\u00fcvenlik tarama eklentileri (\u00f6rne\u011fin OWASP Dependency-Check) kullanarak projelerinizin ba\u011f\u0131ml\u0131l\u0131klar\u0131ndaki bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 taray\u0131n.<\/p>\n<h3>Performans ve \u00d6l\u00e7eklenebilirlik Optimizasyonu Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>B\u00fcy\u00fcyen projeler ve ekiplerle birlikte Jenkins sunucunuzun performans\u0131n\u0131 ve \u00f6l\u00e7eklenebilirli\u011fini sa\u011flamak \u00f6nemlidir.<\/p>\n<p>*   <strong>Jenkins Master-Agent Mimarisi:<\/strong> Tek bir Jenkins master sunucusu, derleme g\u00f6revlerini y\u00fcr\u00fctmek i\u00e7in yeterli olmayabilir. Master sunucunun ana g\u00f6revi, i\u015fleri zamanlamak, kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc sunmak ve agent&#8217;lar\u0131 y\u00f6netmektir. Ger\u00e7ek derleme ve test i\u015flemleri i\u00e7in &#8220;Jenkins Agent&#8221; (eski ad\u0131yla &#8220;Slave&#8221;) kullan\u0131n. Agent&#8217;lar, farkl\u0131 i\u015fletim sistemlerinde (Linux, Windows, macOS) veya farkl\u0131 ortamlarda (Docker, Kubernetes) \u00e7al\u0131\u015fabilir. Bu, i\u015f y\u00fck\u00fcn\u00fc da\u011f\u0131t\u0131r, kaynak kullan\u0131m\u0131n\u0131 optimize eder ve farkl\u0131 derleme ortamlar\u0131 sa\u011flaman\u0131za olanak tan\u0131r.<br \/>\n*   <strong>Kaynak Tahsisi:<\/strong> Jenkins master sunucunuza yeterli CPU, RAM ve h\u0131zl\u0131 depolama (SSD) sa\u011flay\u0131n. Yo\u011fun I\/O gerektiren derlemeler i\u00e7in h\u0131zl\u0131 diskler kritik \u00f6neme sahiptir. Java Sanal Makinesi (JVM) i\u00e7in uygun bellek ayarlar\u0131 (\u00f6rne\u011fin, <code class=\"language-\">-Xmx<\/code> ve <code class=\"language-\">-Xms<\/code> parametreleri) Jenkins&#8217;in kararl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Derleme Ge\u00e7mi\u015fini Y\u00f6netme:<\/strong> Eski derleme ge\u00e7mi\u015fleri ve artefaktlar zamanla disk alan\u0131n\u0131 doldurabilir ve Jenkins&#8217;in performans\u0131n\u0131 d\u00fc\u015f\u00fcrebilir. \u0130\u015f yap\u0131land\u0131rman\u0131zda &#8220;Discard old builds&#8221; (Eski derlemeleri at) se\u00e7ene\u011fini kullanarak belirli bir say\u0131dan veya s\u00fcreden sonra eski derlemeleri otomatik olarak silebilirsiniz.<br \/>\n*   <strong>Paralel Pipeline A\u015famalar\u0131:<\/strong> Jenkins Pipeline&#8217;larda <code class=\"language-\">parallel<\/code> a\u015famalar\u0131n\u0131 kullanarak ayn\u0131 anda birden fazla g\u00f6revi \u00e7al\u0131\u015ft\u0131r\u0131n. \u00d6rne\u011fin, farkl\u0131 test tiplerini (birim, entegrasyon, UI) e\u015f zamanl\u0131 olarak \u00e7al\u0131\u015ft\u0131rarak derleme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131saltabilirsiniz.<\/p>\n<pre><code>\n    \n      stage('Parallel Tests') {\n          parallel {\n              stage('Unit Tests') {\n                  steps {\n                      sh 'mvn test -Dtest=UnitTests'\n                  }\n              }\n              stage('Integration Tests') {\n                  steps {\n                      sh 'mvn test -Dtest=IntegrationTests'\n                  }\n              }\n          }\n      }\n    \n    <\/code><\/pre>\n<p>*   <strong>Docker ve Kubernetes Entegrasyonu:<\/strong> Jenkins&#8217;i Docker konteynerlerinde \u00e7al\u0131\u015ft\u0131rmak ve Kubernetes ile entegre etmek, \u00f6l\u00e7eklenebilirli\u011fi ve kaynak y\u00f6netimini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Kubernetes&#8217;te Jenkins agent&#8217;lar\u0131 dinamik olarak ba\u015flat\u0131labilir ve i\u015f bitti\u011finde otomatik olarak kapat\u0131labilir, bu da kaynak kullan\u0131m\u0131n\u0131 optimize eder.<\/p>\n<h3>Mobil Uyumluluk ve Kullan\u0131c\u0131 Aray\u00fcz\u00fc \u0130pu\u00e7lar\u0131<\/h3>\n<p>Jenkins&#8217;in varsay\u0131lan web aray\u00fcz\u00fc genellikle masa\u00fcst\u00fc kullan\u0131m i\u00e7in optimize edilmi\u015ftir. Ancak, mobil cihazlardan eri\u015fim veya \u00f6zel dashboard&#8217;lar olu\u015fturma ihtiyac\u0131 do\u011fabilir.<\/p>\n<p>*   <strong>Jenkins Mobil Uygulamalar\u0131:<\/strong> \u00dc\u00e7\u00fcnc\u00fc taraf Jenkins mobil uygulamalar\u0131 (iOS ve Android i\u00e7in) mevcuttur. Bu uygulamalar, derleme durumunu kontrol etmek, i\u015fleri tetiklemek ve loglar\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in daha mobil uyumlu bir aray\u00fcz sunar.<br \/>\n*   <strong>\u00d6zel Dashboard&#8217;lar ve API Kullan\u0131m\u0131:<\/strong> Jenkins&#8217;in g\u00fc\u00e7l\u00fc bir REST API&#8217;si vard\u0131r. Bu API&#8217;yi kullanarak kendi \u00f6zel mobil uyumlu dashboard&#8217;lar\u0131n\u0131z\u0131 veya uygulamalar\u0131n\u0131z\u0131 geli\u015ftirebilirsiniz. \u00d6rne\u011fin, React veya Vue.js ile bir \u00f6n u\u00e7 uygulamas\u0131 yazarak Jenkins API&#8217;s\u0131ndan veri \u00e7ekip mobil cihazlara uygun bir \u015fekilde sunabilirsiniz. Bu t\u00fcr bir uygulamay\u0131 geli\u015ftirirken, responsive tasar\u0131m prensiplerini ve CSS media query&#8217;lerini kullanmak esast\u0131r.<\/p>\n<pre><code>\n    \n      \/* Mobil cihazlar i\u00e7in stil tan\u0131mlamalar\u0131 *\/\n      @media only screen and (max-width: 600px) {\n          body {\n              font-size: 14px;\n          }\n          .container {\n              width: 100%;\n              padding: 10px;\n          }\n          .card {\n              flex-direction: column;\n          }\n      }\n\n      \/* Tabletler i\u00e7in stil tan\u0131mlamalar\u0131 *\/\n      @media only screen and (min-width: 601px) and (max-width: 1024px) {\n          .container {\n              width: 90%;\n          }\n      }\n    \n    <\/code><\/pre>\n<p>    Bu CSS kodu, ekran geni\u015fli\u011fine g\u00f6re farkl\u0131 stil kurallar\u0131 uygulayarak i\u00e7eri\u011fin mobil cihazlarda daha iyi g\u00f6r\u00fcnmesini sa\u011flar. Bu, bir Jenkins eklentisi veya harici bir uygulama geli\u015ftirirken kullan\u0131labilir.<br \/>\n*   <strong>Temalar ve Eklentiler:<\/strong> Jenkins aray\u00fcz\u00fcn\u00fc \u00f6zelle\u015ftirmek i\u00e7in temalar veya UI eklentileri (\u00f6rne\u011fin &#8220;Simple Theme Plugin&#8221;) kullanabilirsiniz. Bu, aray\u00fcz\u00fc markan\u0131za veya tercihlerinize g\u00f6re ayarlaman\u0131za yard\u0131mc\u0131 olabilir.<\/p>\n<p>Bu ileri d\u00fczey ipu\u00e7lar\u0131 ve optimizasyon stratejileri, Jenkins kurulumunuzu daha g\u00fcvenli, daha performansl\u0131 ve \u00f6l\u00e7eklenebilir hale getirmenize yard\u0131mc\u0131 olacakt\u0131r. Jenkins&#8217;in sundu\u011fu esneklik ve geni\u015f eklenti ekosistemi sayesinde, her t\u00fcrl\u00fc CI\/CD ihtiyac\u0131n\u0131za uygun \u00e7\u00f6z\u00fcmler geli\u015ftirebilirsiniz.<\/p>\n<h2>Yayg\u0131n Jenkins Kurulum ve Yap\u0131land\u0131rma Sorunlar\u0131 Nelerdir?<\/h2>\n<p>Jenkins kurulumu ve yap\u0131land\u0131rmas\u0131 genellikle sorunsuz ilerlese de, zaman zaman \u00e7e\u015fitli problemlerle kar\u015f\u0131la\u015fmak m\u00fcmk\u00fcnd\u00fcr. Bu b\u00f6l\u00fcmde, s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan Jenkins sorunlar\u0131n\u0131, olas\u0131 nedenlerini ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele alaca\u011f\u0131z. Sorun giderme yetene\u011fi, bir DevOps m\u00fchendisi veya sistem y\u00f6neticisi i\u00e7in temel bir beceridir.<\/p>\n<h3>1. Jenkins Servisi Ba\u015flam\u0131yor veya Eri\u015filemiyor<\/h3>\n<p>Bu, en yayg\u0131n sorunlardan biridir. Jenkins&#8217;in web aray\u00fcz\u00fcne taray\u0131c\u0131dan eri\u015femiyorsan\u0131z veya servis ba\u015flatma hatas\u0131 al\u0131yorsan\u0131z:<\/p>\n<p>*   <strong>Nedenler:<\/strong><br \/>\n    *   <strong>Java Y\u00fckl\u00fc De\u011fil veya Yanl\u0131\u015f S\u00fcr\u00fcm:<\/strong> Jenkins&#8217;in \u00e7al\u0131\u015fmas\u0131 i\u00e7in do\u011fru Java s\u00fcr\u00fcm\u00fcn\u00fcn (genellikle OpenJDK 11 veya \u00fcst\u00fc) kurulu olmas\u0131 gerekir.<br \/>\n    *   <strong>Port \u00c7ak\u0131\u015fmas\u0131:<\/strong> Jenkins&#8217;in varsay\u0131lan 8080 portu ba\u015fka bir uygulama taraf\u0131ndan kullan\u0131l\u0131yor olabilir.<br \/>\n    *   <strong>Yetersiz Kaynaklar:<\/strong> Sunucuda yeterli RAM veya disk alan\u0131 olmayabilir.<br \/>\n    *   <strong>G\u00fcvenlik Duvar\u0131:<\/strong> 8080 portu g\u00fcvenlik duvar\u0131 taraf\u0131ndan engelleniyor olabilir.<br \/>\n    *   <strong>Hatal\u0131 Yap\u0131land\u0131rma:<\/strong> Jenkins yap\u0131land\u0131rma dosyalar\u0131nda (\u00f6rne\u011fin <code class=\"language-\">\/etc\/default\/jenkins<\/code> veya <code class=\"language-\">\/etc\/systemd\/system\/jenkins.service.d\/override.conf<\/code>) yap\u0131lan hatal\u0131 de\u011fi\u015fiklikler.<\/p>\n<p>*   <strong>\u00c7\u00f6z\u00fcmler:<\/strong><br \/>\n    1.  <strong>Servis Durumunu Kontrol Edin:<\/strong><\/p>\n<pre><code>\n        sudo systemctl status jenkins\n        <\/code><\/pre>\n<p>        Hata mesajlar\u0131na dikkat edin.<br \/>\n    2.  <strong>Jenkins Loglar\u0131n\u0131 \u0130nceleyin:<\/strong><\/p>\n<pre><code>\n        sudo journalctl -fu jenkins\n        <\/code><\/pre>\n<p>        Bu, Jenkins&#8217;in neden ba\u015flamad\u0131\u011f\u0131na dair detayl\u0131 bilgi verecektir. \u00d6zellikle Java ile ilgili hatalara veya port \u00e7ak\u0131\u015fmalar\u0131na bak\u0131n.<br \/>\n    3.  <strong>Java S\u00fcr\u00fcm\u00fcn\u00fc Do\u011frulay\u0131n:<\/strong><\/p>\n<pre><code>\n        java -version\n        <\/code><\/pre>\n<p>        \u00c7\u0131kt\u0131n\u0131n Jenkins&#8217;in gerektirdi\u011fi s\u00fcr\u00fcm oldu\u011fundan emin olun. Gerekirse <code class=\"language-\">sudo update-alternatives --config java<\/code> ile do\u011fru s\u00fcr\u00fcm\u00fc se\u00e7in.<br \/>\n    4.  <strong>Port Kullan\u0131m\u0131n\u0131 Kontrol Edin:<\/strong><\/p>\n<pre><code>\n        sudo netstat -tulnp | grep 8080\n        <\/code><\/pre>\n<p>        E\u011fer 8080 portu ba\u015fka bir PID taraf\u0131ndan kullan\u0131l\u0131yorsa, o servisi durdurman\u0131z veya Jenkins&#8217;in portunu de\u011fi\u015ftirmeniz gerekebilir. Jenkins portunu <code class=\"language-\">\/etc\/default\/jenkins<\/code> dosyas\u0131ndaki <code class=\"language-\">HTTP_PORT<\/code> de\u011ferini d\u00fczenleyerek de\u011fi\u015ftirebilirsiniz.<br \/>\n    5.  <strong>G\u00fcvenlik Duvar\u0131n\u0131 Kontrol Edin:<\/strong><\/p>\n<pre><code>\n        sudo ufw status\n        <\/code><\/pre>\n<p>        8080 portunun a\u00e7\u0131k oldu\u011fundan emin olun. Gerekirse <code class=\"language-\">sudo ufw allow 8080<\/code> komutunu kullan\u0131n.<br \/>\n    6.  <strong>Disk Alan\u0131n\u0131 Kontrol Edin:<\/strong><\/p>\n<pre><code>\n        df -h\n        <\/code><\/pre>\n<p>        <code class=\"language-\">\/var\/lib\/jenkins<\/code> dizininin bulundu\u011fu b\u00f6l\u00fcmde yeterli bo\u015f alan oldu\u011fundan emin olun.<\/p>\n<h3>2. Eklenti Kurulumu Ba\u015far\u0131s\u0131z Oluyor veya Eklentiler \u00c7al\u0131\u015fm\u0131yor<\/h3>\n<p>Jenkins&#8217;in g\u00fcc\u00fc eklentilerinden gelir, ancak bazen eklenti kurulumlar\u0131 sorun \u00e7\u0131karabilir.<\/p>\n<p>*   <strong>Nedenler:<\/strong><br \/>\n    *   <strong>A\u011f Ba\u011flant\u0131 Sorunlar\u0131:<\/strong> Jenkins&#8217;in eklenti sunucular\u0131na eri\u015fememesi.<br \/>\n    *   <strong>Proxy Ayarlar\u0131:<\/strong> \u015eirket a\u011flar\u0131nda proxy sunucusu kullan\u0131l\u0131yorsa Jenkins&#8217;in proxy ayarlar\u0131 do\u011fru yap\u0131lmam\u0131\u015f olabilir.<br \/>\n    *   <strong>Uyumluluk Sorunlar\u0131:<\/strong> Eklentinin Jenkins \u00e7ekirdek s\u00fcr\u00fcm\u00fc veya di\u011fer eklentilerle uyumsuz olmas\u0131.<br \/>\n    *   <strong>Yetersiz Bellek:<\/strong> Eklenti kurulumu s\u0131ras\u0131nda Jenkins&#8217;in belle\u011fi yetersiz kalabilir.<\/p>\n<p>*   <strong>\u00c7\u00f6z\u00fcmler:<\/strong><br \/>\n    1.  <strong>A\u011f Ba\u011flant\u0131s\u0131n\u0131 Kontrol Edin:<\/strong> Jenkins sunucusundan <code class=\"language-\">ping updates.jenkins.io<\/code> gibi bir komutla internet ba\u011flant\u0131s\u0131n\u0131 kontrol edin.<br \/>\n    2.  <strong>Proxy Ayarlar\u0131n\u0131 Yap\u0131land\u0131r\u0131n:<\/strong> Jenkins aray\u00fcz\u00fcnde &#8220;Manage Jenkins&#8221; -> &#8220;Manage Plugins&#8221; -> &#8220;Advanced&#8221; sekmesine gidin. Burada &#8220;Proxy Configuration&#8221; b\u00f6l\u00fcm\u00fcnden proxy ayarlar\u0131n\u0131z\u0131 girin.<br \/>\n    3.  <strong>Jenkins Loglar\u0131n\u0131 Kontrol Edin:<\/strong> Eklenti kurulumu s\u0131ras\u0131nda olu\u015fan hatalar genellikle Jenkins loglar\u0131nda detayl\u0131 olarak belirtilir.<br \/>\n    4.  <strong>Manuel Eklenti Kurulumu:<\/strong> Gerekirse <code class=\"language-\">.hpi<\/code> veya <code class=\"language-\">.jpi<\/code> uzant\u0131l\u0131 eklenti dosyas\u0131n\u0131 manuel olarak indirip &#8220;Manage Plugins&#8221; -> &#8220;Advanced&#8221; sekmesindeki &#8220;Upload Plugin&#8221; se\u00e7ene\u011fini kullanarak kurmay\u0131 deneyin.<\/p>\n<h3>3. Git\/SCM Entegrasyonu Sorunlar\u0131<\/h3>\n<p>Pipeline&#8217;lar\u0131n en temel ad\u0131m\u0131 olan kod \u00e7ekme (checkout) a\u015famas\u0131nda s\u0131k\u00e7a sorunlar ya\u015fanabilir.<\/p>\n<p>*   <strong>Nedenler:<\/strong><br \/>\n    *   <strong>Yanl\u0131\u015f Git URL&#8217;si:<\/strong> Depo URL&#8217;si hatal\u0131 yaz\u0131lm\u0131\u015f olabilir.<br \/>\n    *   <strong>Kimlik Do\u011frulama Sorunlar\u0131:<\/strong> Jenkins&#8217;in Git deposuna eri\u015fmek i\u00e7in gerekli kimlik bilgilerine (kullan\u0131c\u0131 ad\u0131\/parola, SSH anahtar\u0131) sahip olmamas\u0131 veya yanl\u0131\u015f olmas\u0131.<br \/>\n    *   <strong>SSH Anahtar\u0131 \u0130zinleri:<\/strong> SSH anahtar\u0131 kullan\u0131l\u0131yorsa, Jenkins kullan\u0131c\u0131s\u0131n\u0131n anahtar dosyas\u0131na eri\u015fim izinlerinin do\u011fru ayarlanmamas\u0131.<br \/>\n    *   <strong>G\u00fcvenlik Duvar\u0131\/Proxy:<\/strong> Git sunucusuna eri\u015fim engelleniyor olabilir.<\/p>\n<p>*   <strong>\u00c7\u00f6z\u00fcmler:<\/strong><br \/>\n    1.  <strong>Git URL&#8217;sini Do\u011frulay\u0131n:<\/strong> Depo URL&#8217;sinin do\u011fru oldu\u011fundan emin olun.<br \/>\n    2.  <strong>Jenkins Kimlik Bilgilerini Kontrol Edin:<\/strong> Jenkins aray\u00fcz\u00fcnde &#8220;Manage Jenkins&#8221; -> &#8220;Manage Credentials&#8221; b\u00f6l\u00fcm\u00fcnden Git deposu i\u00e7in do\u011fru kimlik bilgilerinin tan\u0131mland\u0131\u011f\u0131ndan ve i\u015fe atand\u0131\u011f\u0131ndan emin olun.<br \/>\n    3.  <strong>SSH Anahtar\u0131 \u0130zinleri:<\/strong> E\u011fer SSH kullan\u0131yorsan\u0131z, Jenkins kullan\u0131c\u0131s\u0131n\u0131n (<code class=\"language-\">jenkins<\/code>) <code class=\"language-\">.ssh<\/code> dizinindeki anahtar dosyalar\u0131na (\u00f6rne\u011fin <code class=\"language-\">id_rsa<\/code>, <code class=\"language-\">id_rsa.pub<\/code>) do\u011fru okuma izinlerine sahip oldu\u011fundan emin olun.<\/p>\n<pre><code>\n        sudo su - jenkins\n        ls -l ~\/.ssh\/\n        <\/code><\/pre>\n<p>    4.  <strong>Git Kurulumunu Kontrol Edin:<\/strong> Jenkins sunucusunda <code class=\"language-\">git<\/code> komutunun kurulu ve \u00e7al\u0131\u015f\u0131r durumda oldu\u011fundan emin olun.<\/p>\n<pre><code>\n        git --version\n        <\/code><\/pre>\n<h3>4. Derleme Ba\u015far\u0131s\u0131zl\u0131klar\u0131 ve Hata Ay\u0131klama<\/h3>\n<p>Pipeline&#8217;lar \u00e7al\u0131\u015f\u0131rken derleme veya test a\u015famalar\u0131nda hatalar almak do\u011fald\u0131r.<\/p>\n<p>*   <strong>Nedenler:<\/strong><br \/>\n    *   <strong>Kod Hatalar\u0131:<\/strong> En yayg\u0131n neden, \u00e7ekilen kodda derleme veya test hatalar\u0131n\u0131n olmas\u0131d\u0131r.<br \/>\n    *   <strong>Ortam De\u011fi\u015fkenleri:<\/strong> Derleme ortam\u0131nda gerekli PATH de\u011fi\u015fkenlerinin veya di\u011fer ortam de\u011fi\u015fkenlerinin eksik olmas\u0131.<br \/>\n    *   <strong>Ba\u011f\u0131ml\u0131l\u0131k Sorunlar\u0131:<\/strong> Maven veya Gradle gibi ara\u00e7lar\u0131n gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 indirememesi.<br \/>\n    *   <strong>Yetersiz Bellek:<\/strong> \u00d6zellikle Java projelerinde derleme s\u0131ras\u0131nda JVM&#8217;in belle\u011fi yetersiz kalabilir.<\/p>\n<p>*   <strong>\u00c7\u00f6z\u00fcmler:<\/strong><br \/>\n    1.  <strong>Konsol \u00c7\u0131kt\u0131s\u0131n\u0131 \u0130nceleyin:<\/strong> Her derlemenin &#8220;Console Output&#8221; b\u00f6l\u00fcm\u00fc, hatan\u0131n nedenini anlamak i\u00e7in en \u00f6nemli kaynakt\u0131r. Hata mesajlar\u0131n\u0131 dikkatlice okuyun.<br \/>\n    2.  <strong>Yerel Olarak Tekrar \u00dcretin:<\/strong> Jenkins&#8217;in yapt\u0131\u011f\u0131 derleme komutunu (\u00f6rne\u011fin <code class=\"language-\">mvn clean install<\/code>) manuel olarak Jenkins sunucusunda <code class=\"language-\">jenkins<\/code> kullan\u0131c\u0131s\u0131 ile \u00e7al\u0131\u015ft\u0131rmay\u0131 deneyin. Bu, ortam kaynakl\u0131 sorunlar\u0131 tespit etmenize yard\u0131mc\u0131 olabilir.<\/p>\n<pre><code>\n        sudo su - jenkins\n        cd \/var\/lib\/jenkins\/workspace\/YourProjectName\n        mvn clean install\n        <\/code><\/pre>\n<p>    3.  <strong>Bellek Ayarlar\u0131n\u0131 Kontrol Edin:<\/strong> E\u011fer <code class=\"language-\">OutOfMemoryError<\/code> gibi Java bellek hatalar\u0131 al\u0131yorsan\u0131z, Jenkins&#8217;in JVM bellek ayarlar\u0131n\u0131 art\u0131rman\u0131z gerekebilir. Bu genellikle <code class=\"language-\">\/etc\/default\/jenkins<\/code> dosyas\u0131ndaki <code class=\"language-\">JAVA_ARGS<\/code> parametresini d\u00fczenleyerek yap\u0131l\u0131r.<br \/>\n    4.  <strong>Eklenti G\u00fcncellemeleri:<\/strong> Bazen bir eklentinin eski bir s\u00fcr\u00fcm\u00fc, derleme arac\u0131n\u0131z\u0131n yeni bir s\u00fcr\u00fcm\u00fcyle uyumsuz olabilir. \u0130lgili eklentileri g\u00fcncellemeyi deneyin.<\/p>\n<div class=\"interactive-element\">\n  Uzman \u0130pucu: Sorun giderme s\u00fcrecinde sab\u0131rl\u0131 olmak ve sistematik bir yakla\u015f\u0131mla ilerlemek \u00e7ok \u00f6nemlidir. Her zaman loglar\u0131 kontrol edin, hata mesajlar\u0131n\u0131 dikkatlice okuyun ve tek bir de\u011fi\u015fkeni de\u011fi\u015ftirerek sorunu izole etmeye \u00e7al\u0131\u015f\u0131n. Jenkins toplulu\u011fu ve d\u00f6k\u00fcmantasyonu da sorun giderme i\u00e7in de\u011ferli kaynaklard\u0131r.\n<\/div>\n<p>Bu yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcm yollar\u0131, Jenkins kurulumunuzu ve CI\/CD s\u00fcre\u00e7lerinizi daha kararl\u0131 hale getirmenize yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n ki her hata bir \u00f6\u011frenme f\u0131rsat\u0131d\u0131r!<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu kapsaml\u0131 rehber boyunca, Jenkins&#8217;in ne oldu\u011fundan, Ubuntu \u00fczerine ad\u0131m ad\u0131m nas\u0131l kurulaca\u011f\u0131na, temel yap\u0131land\u0131rmalar\u0131ndan, bir CI\/CD pipeline&#8217;\u0131 olu\u015fturmaya ve hatta ileri d\u00fczey optimizasyon ipu\u00e7lar\u0131na kadar bir\u00e7ok konuyu ele ald\u0131k. Jenkins, modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda s\u00fcrekli entegrasyon ve s\u00fcrekli teslimat s\u00fcre\u00e7lerinin vazge\u00e7ilmez bir arac\u0131d\u0131r. Otomasyon yetenekleri sayesinde, yaz\u0131l\u0131m ekipleri daha h\u0131zl\u0131, daha g\u00fcvenilir ve daha kaliteli \u00fcr\u00fcnler sunabilirler. Kurulumun ve ilk yap\u0131land\u0131rman\u0131n ard\u0131ndan, projelerinize \u00f6zel pipeline&#8217;lar olu\u015fturarak geli\u015ftirme s\u00fcre\u00e7lerinizi tamamen otomatikle\u015ftirebilirsiniz. Unutmay\u0131n ki Jenkins&#8217;in g\u00fcc\u00fc, geni\u015f eklenti ekosisteminde ve esnek yap\u0131land\u0131rma se\u00e7eneklerinde yatmaktad\u0131r. G\u00fcvenlik, performans ve \u00f6l\u00e7eklenebilirlik konular\u0131na dikkat ederek Jenkins kurulumunuzdan maksimum verim alabilirsiniz.<\/p>\n<p>Jenkins ile yolculu\u011funuz, basit bir derleme otomasyonundan, karma\u015f\u0131k mikroservis mimarilerinin s\u00fcrekli da\u011f\u0131t\u0131m\u0131na kadar uzanabilir. Bu makale, size bu yolculukta sa\u011flam bir ba\u015flang\u0131\u00e7 noktas\u0131 sunmay\u0131 ama\u00e7lam\u0131\u015ft\u0131r. \u00d6\u011frendi\u011finiz bilgileri kendi projelerinizde uygulayarak ve Jenkins&#8217;in sundu\u011fu olanaklar\u0131 ke\u015ffederek yeteneklerinizi geli\u015ftirmeye devam etmelisiniz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>Soru 1: Jenkins i\u00e7in neden Ubuntu tercih edilmeli?<\/strong><br \/>\n<strong>Cevap 1:<\/strong> Ubuntu, geni\u015f bir kullan\u0131c\u0131 taban\u0131na, zengin bir paket deposuna ve g\u00fc\u00e7l\u00fc bir topluluk deste\u011fine sahip pop\u00fcler bir Linux da\u011f\u0131t\u0131m\u0131d\u0131r. Kurulumu kolayd\u0131r, kararl\u0131d\u0131r ve sunucu ortamlar\u0131 i\u00e7in iyi belgelenmi\u015ftir. Bu \u00f6zellikler, Jenkins gibi bir otomasyon sunucusunu bar\u0131nd\u0131rmak i\u00e7in ideal bir platform olmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, bir\u00e7ok geli\u015ftirici ve sistem y\u00f6neticisi Ubuntu&#8217;ya a\u015fina oldu\u011fu i\u00e7in sorun giderme ve y\u00f6netim s\u00fcre\u00e7leri daha kolay olabilir.<\/p>\n<p><strong>Soru 2: Jenkins&#8217;i kurduktan sonra hangi eklentileri ilk olarak y\u00fcklemeliyim?<\/strong><br \/>\n<strong>Cevap 2:<\/strong> \u0130lk kurulumda &#8220;Install suggested plugins&#8221; (\u00d6nerilen eklentileri y\u00fckle) se\u00e7ene\u011fini tercih etmek en iyisidir. Bu, Git, Pipeline, Maven Integration, Credentials, Timestamper gibi temel ve yayg\u0131n olarak kullan\u0131lan eklentileri otomatik olarak kurar. Daha sonra projenizin ihtiya\u00e7lar\u0131na g\u00f6re (\u00f6rne\u011fin Docker, Kubernetes, Slack Notifier, SonarQube Scanner gibi) ek eklentiler y\u00fckleyebilirsiniz. &#8220;Manage Jenkins&#8221; -> &#8220;Manage Plugins&#8221; b\u00f6l\u00fcm\u00fcnden eklentileri arayabilir ve kurabilirsiniz.<\/p>\n<p><strong>Soru 3: Jenkins&#8217;in varsay\u0131lan 8080 portunu nas\u0131l de\u011fi\u015ftirebilirim?<\/strong><br \/>\n<strong>Cevap 3:<\/strong> Jenkins&#8217;in varsay\u0131lan portunu de\u011fi\u015ftirmek i\u00e7in Ubuntu&#8217;da <code class=\"language-\">\/etc\/default\/jenkins<\/code> dosyas\u0131n\u0131 d\u00fczenlemeniz gerekir. Bu dosyada <code class=\"language-\">HTTP_PORT=8080<\/code> sat\u0131r\u0131n\u0131 bulup istedi\u011finiz port numaras\u0131yla (\u00f6rne\u011fin <code class=\"language-\">HTTP_PORT=9090<\/code>) de\u011fi\u015ftirin. De\u011fi\u015fikli\u011fi kaydettikten sonra Jenkins servisini yeniden ba\u015flatman\u0131z gerekmektedir:<\/p>\n<pre><code>\nsudo systemctl restart jenkins\n<\/code><\/pre>\n<p>E\u011fer bir ters proxy (Nginx\/Apache) kullan\u0131yorsan\u0131z, proxy yap\u0131land\u0131rman\u0131z\u0131 da yeni porta g\u00f6re g\u00fcncellemeniz gerekecektir.<\/p>\n<p><strong>Soru 4: Jenkins sunucumu nas\u0131l yedekleyebilirim?<\/strong><br \/>\n<strong>Cevap 4:<\/strong> Jenkins yap\u0131land\u0131rmas\u0131 ve t\u00fcm verileri <code class=\"language-\">\/var\/lib\/jenkins<\/code> dizininde saklan\u0131r. Bu dizinin d\u00fczenli olarak yedeklenmesi kritik \u00f6neme sahiptir. Yedekleme i\u00e7in Jenkins servisini durdurup bu dizini s\u0131k\u0131\u015ft\u0131r\u0131p g\u00fcvenli bir konuma kopyalayabilirsiniz:<\/p>\n<pre><code>\nsudo systemctl stop jenkins\nsudo tar -cvzf jenkins_yedek_$(date +%Y%m%d%H%M%S).tar.gz \/var\/lib\/jenkins\nsudo systemctl start jenkins\n<\/code><\/pre>\n<p>Bu yedekleme dosyas\u0131n\u0131 bulut depolama veya ba\u015fka bir harici depolama birimine ta\u015f\u0131mak, veri kayb\u0131 riskini azaltacakt\u0131r. Ayr\u0131ca, &#8220;Backup Plugin&#8221; gibi eklentileri kullanarak daha otomatik yedekleme \u00e7\u00f6z\u00fcmleri de uygulayabilirsiniz.<\/p>\n<p><strong>Soru 5: Jenkins&#8217;te bir pipeline&#8217;\u0131 tetiklemek i\u00e7in Git webhook&#8217;unu nas\u0131l kurar\u0131m?<\/strong><br \/>\n<strong>Cevap 5:<\/strong> Git webhook&#8217;u kurmak, Jenkins&#8217;in Git deponuzdaki kod de\u011fi\u015fikliklerini an\u0131nda alg\u0131lamas\u0131n\u0131 sa\u011flar ve SCM polling&#8217;e g\u00f6re daha verimlidir. Ad\u0131mlar genellikle \u015funlard\u0131r:<br \/>\n1.  Jenkins taraf\u0131nda, pipeline yap\u0131land\u0131rman\u0131zda &#8220;Build Triggers&#8221; alt\u0131nda &#8220;GitHub hook trigger for GITScm polling&#8221; veya &#8220;Generic Webhook Trigger&#8221; se\u00e7ene\u011fini i\u015faretleyin.<br \/>\n2.  Jenkins URL&#8217;nizin d\u0131\u015far\u0131dan eri\u015filebilir oldu\u011fundan emin olun (ters proxy ve g\u00fcvenlik duvar\u0131 ayarlar\u0131 dahil).<br \/>\n3.  Git deponuzun (\u00f6rne\u011fin GitHub veya GitLab) ayarlar\u0131na gidin. &#8220;Webhooks&#8221; veya &#8220;Integrations&#8221; b\u00f6l\u00fcm\u00fcn\u00fc bulun.<br \/>\n4.  Yeni bir webhook ekleyin. &#8220;Payload URL&#8221; olarak Jenkins sunucunuzun URL&#8217;sini ve genellikle <code class=\"language-\">\/github-webhook\/<\/code> veya <code class=\"language-\">\/generic-webhook-trigger\/invoke<\/code> gibi bir yolu belirtin (\u00f6rne\u011fin <code class=\"language-\">http:\/\/jenkins.alanadiniz.com\/github-webhook\/<\/code>).<br \/>\n5.  Webhook&#8217;un hangi olaylarda tetiklenece\u011fini se\u00e7in (genellikle &#8220;push&#8221; olaylar\u0131).<br \/>\n6.  Webhook&#8217;u kaydedin. Art\u0131k Git deponuza her kod g\u00f6nderdi\u011finizde, Jenkins otomatik olarak pipeline&#8217;\u0131n\u0131z\u0131 tetikleyecektir.<\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu&#8217;ya Jenkins Kurulumu: Ad\u0131m Ad\u0131m Rehber Jenkins, yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerini otomatikle\u015ftiren, s\u00fcrekli entegrasyon (CI) ve s\u00fcrekli teslimat (CD)&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1400],"tags":[],"class_list":{"0":"post-38917","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-devops","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?<\/title>\n<meta name=\"description\" content=\"Ubuntu&#039;ya Jenkins Kurulumu: Ad\u0131m Ad\u0131m Rehber\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?\" \/>\n<meta property=\"og:description\" content=\"Ubuntu&#039;ya Jenkins Kurulumu: Ad\u0131m Ad\u0131m Rehber\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-10T13:21:16+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"35 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?\",\"datePublished\":\"2026-02-10T13:21:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/\"},\"wordCount\":6480,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Devops\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/\",\"name\":\"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-10T13:21:16+00:00\",\"description\":\"Ubuntu'ya Jenkins Kurulumu: Ad\u0131m Ad\u0131m Rehber\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?","description":"Ubuntu'ya Jenkins Kurulumu: Ad\u0131m Ad\u0131m Rehber","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/","og_locale":"tr_TR","og_type":"article","og_title":"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?","og_description":"Ubuntu'ya Jenkins Kurulumu: Ad\u0131m Ad\u0131m Rehber","og_url":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-10T13:21:16+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"35 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?","datePublished":"2026-02-10T13:21:16+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/"},"wordCount":6480,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Devops"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/","url":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/","name":"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-10T13:21:16+00:00","description":"Ubuntu'ya Jenkins Kurulumu: Ad\u0131m Ad\u0131m Rehber","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/jenkins-nedir-ve-neden-kullanilir-ci-cd-kavramlari-nelerdir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Jenkins Nedir ve Neden Kullan\u0131l\u0131r? CI\/CD Kavramlar\u0131 Nelerdir?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38917"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38917\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}