Takip et

Ubuntu 20.04 Üzerine Jenkins Kurulumu: Kapsamlı Bir Rehber

Ubuntu 20.04 Üzerine Jenkins Kurulumu: Kapsamlı Bir Rehber Merhaba teknoloji meraklıları ve DevOps mühendisleri! Günümüz yazılım geliştirm

Ubuntu 20.04 Üzerine Jenkins Kurulumu: Kapsamlı Bir Rehber

Merhaba teknoloji meraklıları ve DevOps mühendisleri! Günümüz yazılım geliştirme süreçlerinde otomasyon, hız ve güvenilirlik olmazsa olmaz unsurlardan biridir. Sürekli Entegrasyon (CI) ve Sürekli Teslimat (CD) pratikleri, bu hedeflere ulaşmada kritik rol oynar. İşte tam bu noktada, Jenkins gibi güçlü bir otomasyon sunucusu devreye girer. Bu makalede, açık kaynak dünyasının en popüler CI/CD araçlarından biri olan Jenkins’i Ubuntu 20.04 işletim sistemi üzerine adım adım nasıl kuracağınızı ve temel yapılandırmalarını nasıl yapacağınızı detaylı bir şekilde ele alacağız.

Jenkins Nedir ve Neden Kullanmalısınız?

Jenkins, yazılım geliştirme süreçlerini otomatikleştirmek için tasarlanmış, Java tabanlı, açık kaynaklı bir otomasyon sunucusudur. Temel amacı, yazılım projelerinin build, test ve deploy aşamalarını otomatikleştirerek geliştiricilerin iş yükünü azaltmak, hataları erken tespit etmek ve yazılımın daha hızlı ve güvenilir bir şekilde pazara sunulmasını sağlamaktır.

Sürekli Entegrasyon (CI) ve Sürekli Teslimat (CD)

* Sürekli Entegrasyon (CI): Geliştiricilerin kod değişikliklerini düzenli olarak merkezi bir depoya (örn. Git) entegre etme pratiğidir. Jenkins, her entegrasyonda otomatik olarak kodu derler, testleri çalıştırır ve entegrasyon hatalarını anında raporlar. Bu sayede, entegrasyon sorunları erkenden fark edilir ve çözülür, “entegrasyon cehennemi” yaşanmaz.
* Sürekli Teslimat (CD): Sürekli Entegrasyon’un bir uzantısıdır. CI aşamasını başarıyla geçen kodun, otomatik olarak test ortamlarına veya üretim ortamlarına dağıtıma hazır hale getirilmesini sağlar. Bu, yazılımın her zaman dağıtılabilir durumda olduğu anlamına gelir. Jenkins, bu dağıtım süreçlerini de otomatikleştirebilir.

Jenkins’in Avantajları:

* Açık Kaynak ve Ücretsiz: Jenkins, tamamen ücretsiz ve açık kaynaklıdır. Bu, maliyet avantajı sağlarken, geniş bir topluluk desteği ve sürekli gelişim imkanı sunar.
* Geniş Plugin Ekosistemi: Jenkins’in en büyük güçlerinden biri, binlerce eklentiden oluşan zengin ekosistemidir. Bu eklentiler sayesinde, neredeyse her türlü sürüm kontrol sistemi (Git, SVN), derleme aracı (Maven, Gradle), test çerçevesi (JUnit, Selenium), dağıtım platformu (Docker, Kubernetes) ve bildirim sistemi (Slack, E-posta) ile entegre olabilir.
* Esneklik ve Genişletilebilirlik: Jenkins, karmaşık iş akışlarını (pipelines) tanımlamanıza olanak tanır. Groovy tabanlı “Jenkins Pipeline” özelliği ile kod olarak tanımlanabilen (Pipeline as Code) bu iş akışları, versiyon kontrol sistemlerinde saklanabilir ve projenin gereksinimlerine göre kolayca özelleştirilebilir.
* Dağıtık Mimari: Jenkins, ana sunucunun (master) yükünü hafifletmek için dağıtık bir mimaride çalışabilir. “Agent” adı verilen yardımcı makineler, derleme ve test işlemlerini üstlenerek ana sunucunun sadece orkestrasyondan sorumlu olmasını sağlar.
* Platform Bağımsızlığı: Java tabanlı olması sayesinde Jenkins, Windows, Linux, macOS gibi farklı işletim sistemlerinde çalışabilir. Bu makalede Ubuntu 20.04’ü tercih etmemizin nedeni, sunucu ortamlarında yaygın olarak kullanılan stabil ve popüler bir Linux dağıtımı olmasıdır.

Bu makalede Jenkins’i Ubuntu 20.04 üzerine kurarak, projelerinizin otomasyon yolculuğuna ilk adımı atmanızı sağlayacağız. Hazırsanız, kuruluma geçelim!

Ön Gereksinimler

Jenkins kurulumuna başlamadan önce, sisteminizin belirli gereksinimleri karşıladığından emin olmalıyız. Bu, sorunsuz bir kurulum süreci için kritik öneme sahiptir.

Sistem Gereksinimleri:

* İşletim Sistemi: Ubuntu 20.04 LTS (Long Term Support). Temiz bir kurulum önerilir, ancak mevcut bir sunucu da kullanılabilir.
* RAM: Minimum 2 GB RAM (Jenkins’in kendisi için 256 MB, ancak projeleriniz ve eklentiler için daha fazlası önerilir). Büyük projeler veya çok sayıda eş zamanlı iş için 4 GB veya daha fazlası idealdir.
* CPU: Minimum 1 çekirdekli işlemci (2 çekirdek veya daha fazlası önerilir).
* Disk Alanı: Minimum 10 GB boş disk alanı (Jenkins kurulumu ve varsayılan yapılandırmalar için 1 GB yeterli olsa da, derleme çıktıları, arşivler ve loglar için daha fazlası gereklidir).
* Ağ Bağlantısı: İnternet erişimi, paketleri indirmek ve güncellemeleri almak için gereklidir.
* Kullanıcı Yetkileri: sudo ayrıcalıklarına sahip bir kullanıcı hesabı.

Java Geliştirme Kiti (JDK):

Jenkins bir Java uygulaması olduğu için, çalışabilmesi için bir Java Runtime Environment (JRE) veya Java Development Kit (JDK) gereklidir. Jenkins’in LTS (Uzun Süreli Destek) sürümleri genellikle OpenJDK 11’i önerir. Bu makalede OpenJDK 11’i kuracağız.

* OpenJDK 11: Jenkins’in resmi olarak desteklediği ve önerdiği Java sürümüdür.

Bu ön gereksinimleri sağladığınızdan emin olduktan sonra, kurulum adımlarına geçebiliriz.

Jenkins Kurulumu: Adım Adım Rehber

Jenkins’i Ubuntu 20.04 üzerine kurmak için resmi Jenkins APT deposunu kullanacağız. Bu yöntem, Jenkins’i sistem paket yöneticiniz aracılığıyla kolayca kurmanızı ve güncellemenizi sağlar.

Adım 1: Sistem Güncelleme ve Gerekli Paketlerin Kurulumu

Kuruluma başlamadan önce, sisteminizin paket listesini güncellemeli ve mevcut paketleri yükseltmelisiniz. Ayrıca, Jenkins’in çalışması için gerekli olan Java Development Kit’i (JDK) kuracağız.

sudo apt update
sudo apt upgrade -y

Bu komutlar, sisteminizdeki paket bilgilerini güncelleyecek ve yüklü paketleri en son sürümlerine yükseltecektir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı vermeyi sağlar.

Şimdi OpenJDK 11’i kuralım:

sudo apt install openjdk-11-jdk -y

Kurulum tamamlandıktan sonra, Java’nın doğru bir şekilde kurulup kurulmadığını kontrol edebilirsiniz:

java -version

Çıktı olarak openjdk version "11.0.x" benzeri bir şey görmelisiniz. Bu, Java’nın başarıyla kurulduğunu gösterir.

Adım 2: Jenkins Deposu Anahtarını Ekleme

Jenkins paketlerini doğrulamak için sisteminize Jenkins’in GPG anahtarını eklemeniz gerekir. Bu, indirdiğiniz paketlerin orijinal ve güvenilir olduğunu garanti eder.

curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo gpg --dearmor -o /usr/share/keyrings/jenkins-keyring.gpg

Bu komut:
* curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key: Jenkins’in resmi GPG anahtarını indirir. -fsSL bayrakları, curl’ün sessiz, başarısızlık durumunda hata veren ve yönlendirmeleri takip eden bir şekilde çalışmasını sağlar.
* | sudo gpg --dearmor -o /usr/share/keyrings/jenkins-keyring.gpg: İndirilen anahtarı gpg --dearmor komutu ile dönüştürür ve /usr/share/keyrings/jenkins-keyring.gpg dizinine kaydeder. Bu, APT’nin paketleri doğrulamak için kullanacağı standart bir konumdur.

Adım 3: Jenkins Deposu Ekleme

GPG anahtarını ekledikten sonra, sisteminize Jenkins APT deposunu eklemelisiniz. Bu, apt paket yöneticisinin Jenkins paketlerini nereden indireceğini bilmesini sağlar.

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.gpg] https://pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

Bu komut:
* echo deb ... binary/: Jenkins deposunun tanımını oluşturur. signed-by=/usr/share/keyrings/jenkins-keyring.gpg kısmı, APT’ye bu depodan gelen paketlerin az önce eklediğimiz GPG anahtarı ile imzalandığını bildirir.
* | sudo tee /etc/apt/sources.list.d/jenkins.list: Oluşturulan depo tanımını /etc/apt/sources.list.d/jenkins.list dosyasına yazar. tee komutu, hem ekrana çıktı verir hem de belirtilen dosyaya yazar.
* > /dev/null: tee komutunun ekrana verdiği çıktıyı gizler.

Adım 4: Jenkins Kurulumu

Depoyu ekledikten sonra, apt paket listesini tekrar güncellemeniz ve ardından Jenkins’i kurmanız gerekir.

sudo apt update
sudo apt install jenkins -y

Bu komutlar, yeni eklenen Jenkins deposundan paket bilgilerini alacak ve Jenkins sunucusunu sisteminize kuracaktır.

Adım 5: Jenkins Servisini Başlatma ve Durumunu Kontrol Etme

Jenkins kurulumu tamamlandığında, servis otomatik olarak başlamalıdır. Ancak, emin olmak için durumunu kontrol edebilir ve gerekirse manuel olarak başlatabilirsiniz.

Jenkins servisini başlatın:

sudo systemctl start jenkins

Jenkins servisini sistem başlangıcında otomatik olarak başlaması için etkinleştirin:

sudo systemctl enable jenkins

Jenkins servisinin durumunu kontrol edin:

sudo systemctl status jenkins

Çıktıda active (running) ibaresini görmelisiniz. Bu, Jenkins sunucusunun başarıyla çalıştığı anlamına gelir.

Adım 6: Güvenlik Duvarını Yapılandırma (UFW)

Eğer sunucunuzda UFW (Uncomplicated Firewall) etkinse, Jenkins’in varsayılan olarak kullandığı 8080 portuna gelen bağlantılara izin vermeniz gerekir. Aksi takdirde, web tarayıcınızdan Jenkins’e erişemezsiniz.

Jenkins’in varsayılan portu olan 8080’e izin verin:

sudo ufw allow 8080

Güvenlik duvarının durumunu kontrol edin:

sudo ufw status

Çıktıda 8080 portunun izin verildiğini görmelisiniz. Eğer UFW etkin değilse ve kullanmak isterseniz:

sudo ufw enable

Bu komut, güvenlik duvarını etkinleştirecek ve mevcut kuralları uygulayacaktır.

Adım 7: Jenkins Kurulumunu Tamamlama (Web Arayüzü)

Tüm arka plan kurulumları tamamlandıktan sonra, bir web tarayıcısı aracılığıyla Jenkins’e erişebilir ve ilk yapılandırmayı yapabilirsiniz.

Web tarayıcınızı açın ve sunucunuzun IP adresini veya alan adını 8080 portuyla birlikte girin:

http://your_server_ip_or_domain:8080

İlk eriştiğinizde, Jenkins sizden “Unlock Jenkins” ekranında bir yönetici parolası isteyecektir. Bu parola, Jenkins kurulumu sırasında otomatik olarak oluşturulur ve güvenli bir dosyada saklanır.

Parolayı bulmak için sunucunuzda aşağıdaki komutu çalıştırın:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Bu komutun çıktısı, Jenkins web arayüzüne girmeniz gereken 32 karakterlik alfanümerik parolayı içerecektir. Parolayı kopyalayın ve web arayüzündeki “Administrator password” alanına yapıştırın, ardından “Continue” butonuna tıklayın.

Eklentilerin Kurulumu:

Parolayı girdikten sonra, Jenkins size eklentileri kurmanız için iki seçenek sunacaktır:

* Install suggested plugins: Jenkins’in en yaygın kullanılan ve önerilen eklentilerini otomatik olarak kurar. Çoğu kullanıcı için bu seçenek en iyi başlangıç noktasıdır.
* Select plugins to install: Kurmak istediğiniz eklentileri manuel olarak seçmenize olanak tanır. Eğer belirli bir ihtiyacınız varsa bu seçeneği kullanabilirsiniz.

Genellikle “Install suggested plugins” seçeneğini seçmek iyi bir başlangıçtır. Jenkins, gerekli eklentileri indirip kurmaya başlayacaktır. Bu işlem, internet bağlantınızın hızına bağlı olarak birkaç dakika sürebilir.

İlk Yönetici Kullanıcısını Oluşturma:

Eklentilerin kurulumu tamamlandıktan sonra, Jenkins sizden ilk yönetici kullanıcısını oluşturmanızı isteyecektir. Bu, Jenkins’e giriş yapmak için kullanacağınız kimlik bilgileridir.

* Username: Kullanıcı adınızı girin (örn. admin).
* Password: Güçlü bir parola belirleyin.
* Confirm password: Parolayı tekrar girerek onaylayın.
* Full name: Adınızı ve soyadınızı girin.
* E-mail address: E-posta adresinizi girin.

Bu bilgileri girdikten sonra “Save and Continue” butonuna tıklayın.

Jenkins URL Yapılandırması:

Son adım, Jenkins’in URL’sini yapılandırmaktır. Varsayılan olarak, Jenkins sunucunuzun IP adresi ve 8080 portunu kullanacaktır. Bu ayarı genellikle olduğu gibi bırakabilirsiniz, ancak bir ters proxy (Nginx veya Apache) kullanmayı planlıyorsanız veya bir alan adı üzerinden erişiyorsanız daha sonra değiştirebilirsiniz.

“Save and Finish” butonuna tıklayın.

Tebrikler! Jenkins kurulumunuz başarıyla tamamlandı. “Start using Jenkins” butonuna tıklayarak Jenkins paneline erişebilirsiniz. Artık ilk CI/CD işlerinizi oluşturmaya hazırsınız.

Ek Yapılandırmalar ve Önemli Notlar

Jenkins kurulumunu tamamladık, ancak daha verimli ve güvenli bir kullanım için bazı ek yapılandırmalar ve önemli noktalar bulunmaktadır.

Jenkins Servisini Yönetme

Jenkins bir systemd servisi olarak çalıştığı için, onu systemctl komutuyla kolayca yönetebilirsiniz:

* Jenkins servisini durdurma:

sudo systemctl stop jenkins

* Jenkins servisini yeniden başlatma:

sudo systemctl restart jenkins

* Jenkins servisinin durumunu kontrol etme:

sudo systemctl status jenkins

* Sistem başlangıcında Jenkins’in otomatik başlamasını devre dışı bırakma:

sudo systemctl disable jenkins

Jenkins Kullanıcı ve Dizinleri

Jenkins, varsayılan olarak jenkins adlı özel bir kullanıcı altında çalışır. Bu kullanıcı, güvenlik amacıyla diğer sistem kullanıcılarından izole edilmiştir.

* Jenkins ana dizini (Home Directory): /var/lib/jenkins
Bu dizin, Jenkins’in tüm yapılandırma dosyalarını, işlerini, eklentilerini ve derleme geçmişini sakladığı yerdir. Bu dizinin düzenli olarak yedeklenmesi kritik öneme sahiptir.
* Jenkins yapılandırma dosyası: /etc/default/jenkins
Bu dosya, Jenkins’in başlangıç parametrelerini (örneğin, Java yolları, bellek ayarları, port numarası) içerir.

Java Versiyonunu Değiştirme (Opsiyonel)

Eğer sisteminizde birden fazla Java versiyonu yüklüyse ve Jenkins’in belirli bir versiyonu kullanmasını istiyorsanız, bunu yapılandırabilirsiniz.

Öncelikle, sisteminizdeki mevcut Java versiyonlarını listeleyin:

sudo update-alternatives --config java

Bu komut, size yüklü Java versiyonlarını ve her birinin önceliklerini gösterecektir. İstediğiniz versiyonu seçmek için numarasını girip Enter tuşuna basabilirsiniz.

Jenkins’in belirli bir Java versiyonunu kullanmasını sağlamak için /etc/default/jenkins dosyasını düzenleyebilirsiniz. Bu dosyada JAVA_HOME değişkenini bulup, kullanmak istediğiniz Java’nın ana dizinini belirtmelisiniz:

sudo nano /etc/default/jenkins

Dosyada JAVA_HOME satırını bulun (genellikle yorum satırı olarak bulunur) ve aşağıdaki gibi güncelleyin (örneğin OpenJDK 11 için):

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

Değişiklikleri kaydettikten sonra Jenkins servisini yeniden başlatmayı unutmayın:

sudo systemctl restart jenkins

Jenkins Portunu Değiştirme (Opsiyonel)

Jenkins varsayılan olarak 8080 portunu kullanır. Eğer bu port başka bir uygulama tarafından kullanılıyorsa veya farklı bir port kullanmak isterseniz, bunu değiştirebilirsiniz.

/etc/default/jenkins dosyasını düzenleyin:

sudo nano /etc/default/jenkins

Dosyada HTTP_PORT değişkenini bulun ve istediğiniz port numarasını girin (örneğin, 9000):

HTTP_PORT=9000

Değişiklikleri kaydettikten sonra, Jenkins servisini yeniden başlatın:

sudo systemctl restart jenkins

Eğer güvenlik duvarı (UFW) kullanıyorsanız, yeni porta da izin vermeyi unutmayın:

sudo ufw allow 9000
sudo ufw delete allow 8080 # Eski portu kapatmak isterseniz

Ters Proxy (Nginx/Apache) ile Yapılandırma

Üretim ortamlarında Jenkins’e doğrudan 8080 portu üzerinden erişmek yerine, genellikle bir ters proxy (Reverse Proxy) sunucusu (Nginx veya Apache gibi) kullanılması önerilir. Bunun birkaç nedeni vardır:

* SSL/TLS Şifrelemesi: Ters proxy, Jenkins trafiğini HTTPS üzerinden şifrelemenizi sağlar. Bu, hassas verilerin güvenliğini artırır.
* Standart Portlar (80/443): Kullanıcıların Jenkins’e standart web portları (HTTP için 80, HTTPS için 443) üzerinden erişmesini sağlar, port numarasını belirtmeye gerek kalmaz.
* Birden Fazla Uygulama Yönetimi: Aynı sunucu üzerinde birden fazla web uygulaması çalıştırıyorsanız, ters proxy farklı uygulamaları farklı alan adları veya alt yollar üzerinden yönlendirmenize olanak tanır.
* Yük Dengeleme ve Güvenlik: Ters proxy, ek güvenlik katmanları sağlayabilir ve yük dengeleme gibi gelişmiş özellikler sunabilir.

Bu makalenin kapsamı dışında olsa da, Nginx veya Apache ile ters proxy yapılandırması genellikle aşağıdaki adımları içerir:

1. Nginx veya Apache’yi kurun.
2. Jenkins için bir sanal host veya sunucu bloğu oluşturun.
3. Gelen istekleri Jenkins’in çalıştığı 8080 portuna yönlendiren proxy kuralları ekleyin.
4. SSL sertifikası (Let’s Encrypt gibi) yapılandırarak HTTPS’i etkinleştirin.

Güvenlik İpuçları

Jenkins, CI/CD süreçlerinizin kalbi olduğu için güvenliği son derece önemlidir.

* Güçlü Parolalar ve Kullanıcı Yönetimi: İlk yönetici kullanıcısı için güçlü bir parola kullanın ve Jenkins’e erişen tüm kullanıcılar için güçlü parolalar zorunlu tutun. Gereksiz kullanıcıları silin veya yetkilerini kısıtlayın.
* Rol Tabanlı Erişim Kontrolü (RBAC): Jenkins’in yerleşik rol tabanlı erişim kontrolünü kullanarak kullanıcılarınıza sadece ihtiyaç duydukları izinleri verin.
* SSL/TLS Kullanımı: Jenkins’e her zaman HTTPS üzerinden erişim sağlayın. Ters proxy kullanarak veya Jenkins’in kendi içindeki ayarlarıyla SSL’i etkinleştirin.
* Jenkins Güncellemeleri: Jenkins’i ve eklentilerini düzenli olarak güncelleyin. Güncellemeler genellikle güvenlik yamaları ve hata düzeltmeleri içerir.
* Eklenti Güvenliği: Sadece güvenilir kaynaklardan eklentiler kurun ve kullanmadığınız eklentileri kaldırın.
* Sunucu Güvenliği: Jenkins’in çalıştığı Ubuntu sunucusunun da güvenliğini sağlayın. Düzenli sistem güncellemeleri, güvenlik duvarı yapılandırması ve SSH anahtar tabanlı kimlik doğrulama gibi standart sunucu güvenlik uygulamalarını uygulayın.
* Yedekleme: /var/lib/jenkins dizinini düzenli olarak yedekleyin. Bu, felaket durumunda Jenkins yapılandırmalarınızı ve işlerinizi kurtarmanızı sağlar.

Yükseltme (Upgrade) İşlemi

Jenkins’i yükseltmek oldukça basittir, çünkü APT deposunu kullanıyoruz:

sudo apt update
sudo apt upgrade jenkins -y

Yükseltme öncesinde her zaman /var/lib/jenkins dizininin yedeğini almanız şiddetle tavsiye edilir. Büyük yükseltmelerde olası uyumluluk sorunlarına karşı hazırlıklı olmak önemlidir.

Sonuç

Bu kapsamlı rehberde, Ubuntu 20.04 işletim sistemi üzerine Jenkins otomasyon sunucusunu adım adım nasıl kuracağınızı öğrendiniz. Java kurulumundan güvenlik duvarı yapılandırmasına, Jenkins’in web arayüzünden ilk yönetici kullanıcı oluşturmaya kadar tüm kritik adımları başarıyla tamamladık. Artık geliştirme süreçlerinizi otomatikleştirme ve CI/CD pratiklerini uygulama konusunda güçlü bir araca sahipsiniz.

Jenkins’in esnekliği ve geniş eklenti ekosistemi sayesinde, projelerinizin özel ihtiyaçlarına göre onu yapılandırabilir ve iş akışlarınızı optimize edebilirsiniz. Unutmayın ki Jenkins, sadece bir kurulumdan ibaret değildir; sürekli öğrenme, yapılandırma ve iyileştirme gerektiren dinamik bir araçtır.

Şimdi sıra sizde! İlk Jenkins işinizi (job) oluşturarak Git deponuzdan kod çekmeyi, derlemeyi ve basit testleri çalıştırmayı deneyin. Jenkins’in potansiyelini keşfetmek için çeşitli eklentileri inceleyin ve CI/CD yolculuğunuzda yeni ufuklar açın. Başarılar dileriz!

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version