macOS Sierra Üzerine Jenkins Kurulumu

Merhaba. Bu yazıda DevOps sürecinde kullanılan araçlardan biri olan Jenkins’in macOS Sierra üzerine kurulumu konusu üzerinde duracağız. DevOps’u ne olduğu hakkında şu kaynaklara göz atabilirsiniz:

Jenkins Nedir?

Jenkins açık kaynak kodlu  bir Sürekli Entegrasyon (Continious Integration – CI) aracıdır. Jenkins kullanılarak projeler versiyon kontrolden otomatik olarak alınabilir, derlenebilir ve ilgili yerlere gönderilebilir. Örneğin bir Android uygulaması derlenmesi, Jenkins’in versiyon kontrol değişiklik takibi ile otomatik olarak başlayabilir, derlenir, testi koşabilir, kodu analiz edilebilir, imzalanıp versiyonlanabilir ve  Google Play Store’a direkt yüklenebilir.  Bütün bir işleri koşullara bağlabilirsiniz; örneğin testten geçmediği durumda Google Play Store yüklemesini iptal edip buildi fail durumuna düşürebilirsiniz, build başarısız olduğu durumda mail göndertebilir veya HipChat’teki bir odaya mesaj göndertebilirsiniz. Yazılım otomasyonu adına ihtiyaçlarınızı geniş plugin desteği ile çözebilirsiniz.

Örneğin; Smartface’de kurduğumuz sistemde bu süreci şöyle işletiyorduk:

  • Jenkins üzerinde bulunan Alpha taskı, versiyon kontrol üzerindeki develop branchini 30 dakikada bir takip ediyor. Eğer son commit kendine ait değilse buildi başlatır.
  • Kaynak dosyaları pull ettikten sonra SonarQube ile kaynak dosyaları analiz eder, versiyonlama işlemini yapar (alpha sürümünü yükseltir).
  • Kaynak dosyaları private npm’e publish eder.
  • JSDuck ile API Docs oluşturur, onu da private Maven Repository‘e yükler.
  • Versiyon kontrol sisteminde versiyon kaynaklı değişikliğini commitler ve o commiti versiyon ile tagler. Bunu da versiyon kontrol sistemine gönderir.
  • Başarılı veya başarısız olduğu durumlarda kurulu Philips Hue’nun yeşil ışıkları yakar, HipChat’ten mesaj ve ilgili kişilere mail gönderir.

Veya Yordam’da süreci şu şekilde işletiyorum;

  • Jenkins üzerinde bulunan Beta taskı, versiyon kontrol üzerindeki pre-release branchini 30 dakikada bir takip ediyor. Eğer son commit kendine ait değilse buildi başlatır.
  • Kaynak dosyaları pull ettikten sonra SonarQube ile kaynak dosyaları analiz eder, versiyonlama işlemini yapar (beta sürümünü yükseltir).
  • Kaynak proje Cep Kütüphanem uygulamasının iOS ve Android derlemelerini yapar.
  • Derlediği uygulamaları imzalar (sign) ve onları da private Maven Repository‘e yükler.
  • Derlenen uygulamalar Apple TestFlight ve Google Play Store Beta üzerinden servis edilir.
  • Versiyon kontrol sisteminde değişiklikleri commitler ve o commiti versiyon ile tagler. Bunu da versiyon kontrol sistemine gönderir.
  • Başarılı veya başarısız olduğu durumlarda mail gönderir.

macOS Sierra Üzerine Jenkins Kurulumu

Jenkins’i kurmadan önce:

  • Root yetkisi olan (administrator – yönetici) kullanıcısı hesabında olduğunuzdan emin olun.
  • Sisteminizde minimum JRE 7 veya JDK 7 kurulu olduğundan emin olun. Java versiyonu öğrenmek için Terminal uygulamasına “java -version” yazabilirsiniz.

1- Jenkins’i aşağıdaki yöntemlerle sisteminize yükleyebilirsiniz.

  • Jenkins’in MacOS sürümünü buradan indirebilirsiniz (Link kırılırsa şuradan Mac OS X’i seçip indirebilirsiniz).
  • MacOS paket yönetim programı olan Homebrew ile kurabilirsiniz. Homebrew ile kurulumdan sonra 4. adıma atlayabilirsiniz.
    • Son versiyon için:
      brew install jenkins
    • LTS (Uzun Dönemli Destek) versiyonu için
      brew install jenkins-lts
  • Jenkins’i Docker Image ile de kullanabilirsiniz. Bu yöntem bu yazının kapsamı dışındadır. Bunun için şu makaleye göz atabilirsiniz.

2- İndirdiğiniz jenkins-VERSION.pkg dosyasını tıklayarak çalıştırın.

3 Continue ile devam edin, şifre istediği durumda bilgileri girin ve kurulumu tamamlayın.

4- Kurulumu tamamladıktan sonra tarayıcınızı açın ve localhost:8080 adresine girin. 8080, Jenkins’in bu versiyonunda kullanılan varsayılan porttur. Karşınıza aşağıdaki gibi “Unlock Jenkins” yazan bir ekran çıkacaktır.

Bu ekran çıkmadığı durumda Terminal’den “sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist” komutu ile Jenkins’i başlayabilirsiniz.

Jenkins, kurulumu yaptıktan sonra MacOS sürümlerinde başlangıç için bir şifre üretir ve bu şifreyi gösterdiği dosyaya ulaşarak bir kerelik girmeniz gerekmektedir.

5- Ekranda gösterilen dizinde “secrets/” dizinine kadar Finder ile gidin. secrets klasöründe bir işaret olduğunu görürseniz bu klasör için okuma/yazma yetkinizin olmadığını anlayabilirsiniz. Klasörüne sağ tık yapıp Get Info‘ya (Özellikler) tıklayın.

6- Ardından sağ aşağıda bulunan kilit simgesine tıklayarak özellikleri değiştirmeyi açın. Ardından Sol aşağıda bulunan Sharing & Permissions (Paylaşma ve İzinler) “+” simgesine tıklayarak kendi kullanıcınızı (şu an oturumu açık olan yönetici kullanıcısı) ekleyin.

7- Kullanıcınıza klasör erişim yetkisi verdikten sonra klasörün içine girip initialAdminPassword dosyasını bir metin editörü ile (TextEdit, SublimeText gibi) açın. İçerisindeki şifreyi kopyalayıp tarayıcınızda ilgili alana yapıştırın ve Continue butonuna tıklayın. Dosyayı açarken “Dosyayı okuma izniniz yok” gibi bir hata alırsanız 6. adımı bu dosya için tekrarlayın.

  

8- Karşınıza Customize Jenkins yazılı ekran gelecektir. Hızlı kurulum için Install Suggested Plugins seçeneğini seçebilir veya  Select plugins to Install ile seçerek kendiniz yüklenecek eklentileri belirleyebilirsiniz.

Eğer hangi pluginlere ihtiyacınız olduğu konusunda emin değilseniz, Install Suggested Plugins seçeneği ile ilerleyebilirsiniz. Kurulum sonrasında ihtiyacınıza göre Manage Jenkins (Jenkins’i Yönet) > Manage Plugins (Eklentileri Yönet) sayfasından eklentileri yükleyip kaldırabilirsiniz.

Benim ihtiyaçlarıma göre yüklediğim eklentiler şu şekilde:

  • Authentication Tokens API Plugin
  • Folders Plugin
  • Build Timeout Plugin
  • Credentials Binding Plugin
  • Timestamper
  • Workspace Cleanup Plugin
  • Gradle Plugin
  • Pipeline
  • Git plugin
  • SSH Slaves Plugin
  • Matrix Authorization Plugin
  • Mailer Plugin
  • Email Extension Plugin
  • Config File Provider Plugin
  • Conditional BuildStep
  • Parameterized Plugin
  • Multijob Plugin
  • Bitbucket Plugin
  • Copy Artifact Plugin
  • Environment Injector Plugin
  • Google OAuth Credentials plugin
  • Google Play Android Publisher Plugin
  • jira-ext Plugin
  • Run Condition Extras Plugin
  • SonarQube Scanner for Jenkins
  • Xcode integration

9- Eklentiler yüklendikten sonra Create First Admin User (İlk Yönetici Hesabı Oluşturekranı gelecektir. Burada Jenkins paneline erişmek için kullanıcı bilgilerini girin. Eğer yerel ağ dışarısından erişme açacaksanız güçlü bir şifre belirlemenizi öneririm.

Bu aşamayı da tamamladıktan sonra macOS Sierra üzerinde çalışan Jenkins kurulumunu tamamladık. Artık yeni yeni iş yaratabilir ve otomasyonu başlatabilirsiniz.

Jenkins Kullanıcısının Ayarlanması

Jenkins kurulumunu tamamladıktan sonra Jenkins kullanıcısına hem bır şifre hem de root yetkisi vermeniz gerekmektedir. Bunun sebebi özellikle ortamınızı ayarlamak olacaktır; gerekli olan ayarları yükleyecek, iOS build için KeyChain ayarlarınızı yapacaksınız gibi.

1- System Preferences‘a (Sistem Ayarları) girin. Ardından Users and Groups‘a (Kullanıcılar ve Gruplar) girin.

2- Sol altta bulunan kilit simgesine tıklayarak şifre istemesi durumunda şifrenizi girerek ayarları değiştirmeyi aktifleştirin.

3- Jenkins kullanıcısını seçin ve Administator (Yönetici) alanını işaretleyin, ardından şifresini belirleyin. Özellikle bu CI makinesine uzaktan (özellikle ssh) ile bağlanacaksanız şifresini güçlü bir şifre seçmenizde fayda var; istenmeyen misafirlerin ayarlarınızı değiştirip hatta proje kodlarınızı vs. çalmasını istemezsiniz.

Ardından sisteminizi yeniden başlatın ve şu anki kullanıcıza tekrar girin. Yapılacak ufak bır ayarlama daha var.

Jenkins’i Launch Daemons Olarak Belirleme

Bir CI makinesi kurduğumuz için, bu makinenin Jenkins, SonarQube veya Sonatype Nexus Repository gibi araçlarını kendisi başlatabilmesi gerekir. Jenkins, bunun için kendisini varsayılan olarak”Launch Daemon” olarak belirler. Fakat bazı durumlarda bu gerçekleşmez ve Jenksin sistem başladığında başlamaz. Bu durumda Jenkins’s el ile Launch Daemon olarak belirlemek gerekir.

Burada, “Launch Agent” ile “Launch Deamon” arasındaki farka kısaca değinmek gerekir.

Launch Daemon

Sistem boot olduktan ve kernel çalışır hale geldikten sonra launchd sistemi yüklemek için çalışır. Launch Deamon’lar:

  • /System/Library/LaunchDaemons/” ve “/Library/LaunchDaemons/” dizinlerinde property list file (.plist) parametrelerine göre yüklenirler.
  • Herhangi bir kullanıcıya bağlı değildir. boot sonrası sistemde herhangi bir kullanıcı oturumu açılmasını beklemeden neredeyse sistemle birlikte yüklenirler
  • GUI (Kullanıcı Arayüzü) ile etkileşimde olmazlar.

Launch Agent

Herhangi bir kullanıcı oturum açtıktan sonra launchd kullanıcı için çalışır. Launch Agent’lar:

  • /System/Library/LaunchAgents“, “/Library/LaunchAgents“, ve her kullanıcının dizininde bulunan “~/Library/LaunchAgents” dizinlerinde property list file (.plist) parametrelerine göre yüklenirler.
  • Her kullanıcıya ve sistemin ayarlarına bağlıdır. Yani sistemin her kullanıcı için ortak çalıitırdıkları ve her kullanıcının kendi dizininde bulunan kendine ait çalıştırdıkları vardır. Kullanıcı oturumu açılmadan yüklenmez.
  • GUI (Kullanıcı Arayüzü) ile etkileşimde olabilirler.

Launch Daemons ve Agents hakkında daha detaylı bilgi için Apple Developer – Creating Launch Daemons and Agents makalesini okuyabilir, launchd için şuraya göz atabilirsiniz.

/Library/LaunchDaemons/” dizinin kontrol edin ve “org.jenkins-ci.plist” dosyasının varolduğundan emin olun. Eğer bu dosya mevcut değilse Jenkins boot sonrasında başlatılmayacak demektir. Bunu çözmek için kendi yönetici hesabınıza girin ve “/Library/Preferences/org.jenkins-ci.plist” dizinindeki dosyayı “/Library/LaunchDaemons/” dizinine kopyalayın. Bunun için Terminal’de aşağıdaki kod parçasını çalıştırabilirsiniz:

sudo cp /Library/Preferences/org.jenkins-ci.plist /Library/LaunchDaemons/

Sisteminizi yeniden başlatmayı unutmayın.

Bu yazı Jenkins 2.73.3 sürümü kullanılarak yazılmıştır. Farklı versiyonlarda ekran görüntüler ve yapılması gereken işlemler farklılık gösterebilir. Jenkins’in resmi yükleme dökümantasyonuna Jenkins User Documentation – Installing Jenkins linkinden ulaşabilirsiniz.

Sonraki yazılarda Jenkins’i özelleştirme, job oluşturma, basit ve gelişmiş konfigürasyon, karşılaştığım problemlerle ve kullandığım diğer araçların kurulum ve özelleştirmeleriyle devam edeceğiz. Sormak istediğiniz bir soru olursa bu yazının altına yorum yazabilir veya metehantoksoy@gmail.com adresimden bana e-posta atabilirsiniz.

Bir sonraki yazıda görüşmek dileğiyle. Takipte kalın!

 

Reklamlar

macOS Sierra Üzerine Jenkins Kurulumu” üzerine bir yorum

  1. Geri bildirim: macOS Sierra Üzerine SonarQube Kurulumu | Metehan Toksoy

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s