6. 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
7. 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
–
8. 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
10. 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
11. 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
12. 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
15. Neden?
Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?
– <3 TEST
–
“Localimde çalışıyor”
16. Neden?
Herkesin belli parçasını geliştirdiği “şey” düzgün çalışacak mı?
– <3 TEST
–
“Localimde çalışıyor”
– <3 VAGRANT
17. 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)
18. 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
19. 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
20. Neler sağlar?
- riski azaltır (Sıfırlamaz)
- daha az bug, veya tespit edilmesi daha kolay bug
21. 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
23. 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 update
sudo apt-get install jenkins