Upload
osman-yuksel
View
174
Download
1
Embed Size (px)
DESCRIPTION
Jenkins ile Continuous Integration
Citation preview
Jenkinsile
Continuous Integration
@yuxel
Continuous Integration
Continuous Integration
Continuous Integration
Continuous Integration (Sürekli Tümleştirme)
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
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
–
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
Neden?
Çünkü yazılım geliştirme zor bir iş
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
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
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
Neden?
Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?
Neden?
Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?
– <3 TEST
–
Neden?
Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?
– <3 TEST
–
“Localimde çalışıyor”
Neden?
Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?
– <3 TEST
–
“Localimde çalışıyor”
– <3 VAGRANT
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)
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
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
Neler sağlar?
- riski azaltır (Sıfırlamaz)
- daha az bug, veya tespit edilmesi daha kolay bug
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
Jenkins
Oracle Sun'ı aldıktan sonra bir grup geliştirici Hudson'ı forkladı
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
Jenkins– http://localhost:8080
Jenkins
– http://jenkins-php.org/
– https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project
Bundan sonrasını uygulama üzerinde görelim
Sorular?
"tşkler...."
@yuxel