Github Jenkins Entegrasyonu — Commit Pool Trigger Configuration

Oğulcan Arabacı
4 min readJun 12, 2018

--

Bu yazımda Github-Jenkins entegrasyonu ile GitHub Repository’de bulunan Maven projemizde bir güncelleme (push) yaptığımızda Jenkins’in tetiklenmesi için gerekli konfigürasyonun (Commit Pool Trigger Configuration) nasıl yapılacağından kısaca bahsedeceğim.

Not: Jenkins’in bilgisayarınızda kurulu, GitHub’da ise bir test projenizin olması gerekmektedir.

1) Ngrok ile Localhost Tünelleme

Ngrok, yerel makinanızı tünelleyerek ve size bir subdomain vererek — yerelinizi internet üzerinde yayınlamanıza yardımcı olan bir araçtır. https://ngrok.com/ adresinden işletim sisteminize uygun dosyayı indirebilirsiniz.

Öncelikle yerel makinanızın 80. portunu internete açmak ve bir domain almak için terminale ngrok hhtp 8080 komutunu yazıyoruz.

http://localhost:8080/ yerine ngrok aracılığıyla aldığımız forwarding adresi ile artık 80 portumuzu internete açmış olduk.

2) Jenkins’e Github Integration Plugin’nin Eklenmesi

GitHub ile Jenkins entegrasyonunu yapabilmemiz için GitHub Integration Plugininin Jenkins’te kurulu olması gerekmekte. Kurulum için ilk önce terminalden Jenkins komutunu yazarak Jenkinsi çalıştırıyoruz daha sonra ngrok aracılığıyla aldığımız forwarding adresi ile Jenkins’e giriş yapıyoruz.

Giriş yaptıktan sonra Manage Jenkins -> Manage Plugin -> Available adımlarını takip ederek arama çubuğuna “Github Integration” yazıyoruz ve plugini yüklüyoruz.

3) GitHub Repository Configuration

  • GitHub Repo’muzda bulunan projemizin ayarlarına giriyoruz ve Settings -> Integrations & Services -> Add Services adımlarını takip ederek arama çubuğuna Jenkins yazıyoruz ve Jenkins (Git plugin)’i ekliyoruz.
  • Jenkins Hook Url Tanımlama: Ngrok aracılığıyla aldığımız forwarding adresi’nin sonuna github-webhook ekleyerek oluşan adresi ilgili alana yazıyoruz ve Add service diyerek bu adımımızı tamamlıyoruz.
  • Jenkins’in GitHub Repo’muza erişebilmesi için Deploy Keys tanımlamamız gerekiyor. Aşağıdaki komutları çalıştırarak bir SSH Key elde ediyoruz;

$ ssh-keygen

$ cat /var/lib/jenkins/.ssh/id_rsa.pub

“ssh-rsa” ile başlayan anahtarımızı kopyalayıp ilgili yere aşağıdaki gibi yapıştırıyoruz ve Add key diyerek bu adımımızı da tamamlıyoruz.

Eğer daha önceden aldığınız ssh keyiniz varsa bu adımı yapmanıza gerek kalmadan var olan keyinizi kullanabilirsiniz.

$ ssh git@github.com

En son olarak yukarıdaki komutu çalıştırıp Jenkins kullanıcısı ile GitHub bağalantısının başarılı olup olmadığını kontrol etmekte fayda var. Ekran çıktısında; “Hi ogulcanarbc/JenkinsTrial! You’ve successfully authenticated” gibi bir yazı görüyorsanız bağlantınız başarıyla gerçekleştirilmiş demektir.

4) Jenkins Job Configuration

Yine aynı şekilde terminalden Jenkins yazdıktan sonra, ngrok forwarding adresi ile Jenkins’e giriş yapıyoruz. Ardından aşağıdaki adımları izliyoruz;

  • New Item -> Freestyle Project adımlarını izleyip yeni bir proje oluşturuyoruz.
  • General : GitHub Project seçeneğini seçerek Github Projemizin URL’ni ilgili alana yazıyoruz.
  • Source Code Management : Git seçeneğini seçerek, Repository URL alanına .git uzantılı URL’mizi yazıyoruz.
  • Credentials : Add diyerek GitHub kullanıcı adı ve şifremizi giriyoruz ve authentication işlemini tamamlıyoruz.
  • Build Triggers: “GitHub hook trigger for GITScm polling” seçeneğini seçiyoruz.
  • Build: Execute Shell seçeneğini seçerek

“mvn clean test -Dtest=AmazonTest#searchProductTest test”

maven komutunu veriyoruz.

  • -Dtest=AmazonTest proje içinde hedef gösterilecek class’ı belirtir.
  • #searchProductTest hedef class’ın içinde çalışacak test metodumuzun ismini belirtir.

Save diyerek işlemimizi tamamlıyoruz. Artık Github’ta ilgili projenize bir push işlemi gerçekleştirdiğinizde Jenkins’in tetiklenip testinizi otomatik olarak çalıştırıldığını göreceksiniz.

--

--