27
Jenkins ile Continuous Integration @yuxel

Jenkins

Embed Size (px)

DESCRIPTION

Jenkins ile Continuous Integration

Citation preview

Page 1: Jenkins

Jenkinsile

Continuous Integration

@yuxel

Page 2: Jenkins

Continuous Integration

Page 3: Jenkins

Continuous Integration

Page 4: Jenkins

Continuous Integration

Page 5: Jenkins

Continuous Integration (Sürekli Tümleştirme)

Page 6: Jenkins

Continuous Integration (Sürekli Tümleştirme)

Ufak parçaları “tümleştirme”

Her geliştiricinin ayrı ayrı yaptığı geliştirmeleri “tümleştirme”

– Otomatize edilmiş sürümler (automated build)

– Otomatize edilmiş testler

Page 7: Jenkins

Continuous Integration (Sürekli Tümleştirme)

Ufak parçaları “tümleştirme”

Her geliştiricinin ayrı ayrı yaptığı geliştirmeleri “tümleştirme”

– Otomatize edilmiş sürümler (automated build)

– Otomatize edilmiş testler

Extreme Programming'deki “Continuous process” pratiğidir

Page 8: Jenkins

Continuous Integration (Sürekli Tümleştirme)

Ufak parçaları “tümleştirme”

Her geliştiricinin ayrı ayrı yaptığı geliştirmeleri “tümleştirme”

– Otomatize edilmiş sürümler (automated build)

– Otomatize edilmiş testler

Extreme Programming'deki “Continuous process” pratiğidir

http://martinfowler.com/articles/continuousIntegration.html

Page 9: Jenkins

Neden?

Çünkü yazılım geliştirme zor bir iş

Page 10: Jenkins

Neden?

Çünkü yazılım geliştirme zor bir iş

Grup halinde yazılım geliştirme ise çok zor bir iş

– - Herkes farklı disiplinlerde gelebilyior

– - Herkes farklı geliştirme ortamı/işletim sistemi kullanabiliyor

– - Herkes hatasız kod yazdığına inanıyor

Page 11: Jenkins

Neden?

Çünkü yazılım geliştirme zor bir iş

Grup halinde yazılım geliştirme ise çok zor bir iş

– - Herkes farklı disiplinlerde gelebilyior

– - Herkes farklı geliştirme ortamı/işletim sistemi kullanabiliyor

– - Herkes hatasız kod yazdığına inanıyor

Grup halindeki geliştirmelerde “tümleştirme” yapmak zor

Page 12: Jenkins

Neden?

Çünkü yazılım geliştirme zor bir iş

Grup halinde yazılım geliştirme ise çok zor bir iş

– - Herkes farklı disiplinlerde gelebilyior

– - Herkes farklı geliştirme ortamı/işletim sistemi kullanabiliyor

– - Herkes hatasız kod yazdığına inanıyor

Grup halindeki geliştirmelerde “tümleştirme” yapmak zor

Bunu devamlı yapmak zor

Page 13: Jenkins

Neden?

Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?

Page 14: Jenkins

Neden?

Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?

– <3 TEST

Page 15: Jenkins

Neden?

Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?

– <3 TEST

“Localimde çalışıyor”

Page 16: Jenkins

Neden?

Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?

– <3 TEST

“Localimde çalışıyor”

– <3 VAGRANT

Page 17: Jenkins

Neden?

Geliştiriciler düzgün iş yapıyor mu?

- yazdığı kod başka şeyleri bozuyor mu? (test)

- standartlara uyuyor mu? (checkstyle)

- bilinen buggy yöntemlerden ne kadar uzak (static kod analizi)

Page 18: Jenkins

Neler yapmak gerekli?

- bir VCS kullanın <3 git

- build'ı otomatize edin

- compile, migration'lar, asset compile'lar vs

- build'ı en hızlı olacak şekilde optimize edin

- paralel?

- test yazın

- ana depoya/branch'e giden her kod otomatik build başlatsın ve

herkes mümkünse yaptığı işleri günde bi kere ana branch'e göndersin

Page 19: Jenkins

Neler yapmak gerekli?

- bi'şey patlarsa en kısa sürede düzeltin

- test ortamınız, production ortamının kopyası olsun

- sunucusu, veritabanı, loadbalancer'ı vs

- şeffaf olsun

- build'ları herkes görebilsin

- deployment'ı da otomatize edin

Page 20: Jenkins

Neler sağlar?

- riski azaltır (Sıfırlamaz)

- daha az bug, veya tespit edilmesi daha kolay bug

Page 21: Jenkins

Nasıl?

- Aslında özel bir şey yapmanıza gerek yok

– Az önceki şeyleri uygulamanız yeterli

- Ama bunun için özelleştirilmiş yazılımlar var

→ Continuous Integration Server– * CruiseControl

– * Hudson

– * Jenkins

Page 22: Jenkins

Jenkins

Oracle Sun'ı aldıktan sonra bir grup geliştirici Hudson'ı forkladı

Page 23: Jenkins

Jenkins

- Java ile geliştirilmiş bir CI Server

- Web arayüzü var (komut satırı arayüzü de var)

- Bir sürü eklentisi(plugin) var

- http://jenkins-ci.org/

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -

echo 'deb http://pkg.jenkins-ci.org/debian binary/' >> /etc/apt/sources.list

sudo apt-get updatesudo apt-get install jenkins

Page 24: Jenkins

Jenkins– http://localhost:8080

Page 25: Jenkins

Jenkins

– http://jenkins-php.org/

– https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project

Page 26: Jenkins

Bundan sonrasını uygulama üzerinde görelim

Page 27: Jenkins

Sorular?

"tşkler...."

@yuxel