Upload
mustafa-ileri
View
105
Download
6
Embed Size (px)
Citation preview
continuous integrationAynı kod üzerinde çalışan yazılım geliştiricilerin yapmış olduğu geliştirmelerin,sürekli ana koda birleştirilmesi ve geliştime aşamasındaki projeyi çalışabilir halde tutmak için uygulanan bir geliştirme disiplinidir.
İlk “continuous integration” terimi 1994 yılında Grady Booch tarafından kullanıldı.
1997 yılında Kent Beck ve Ron Jeffries “continuous integration” sürecinin dahil olduğu XP (Extreme Programming) terimini ortaya çıkardılar.
1999 yılında Kent Beck tarafından “continuous integration” hakkında bir kitap yayınlandı.
2001 yılında ilk CI aracı Cruise Control yayınlandı.
NEDEN Kullanmalıyız ?● Yazılımı sürekli hazır halde tutmak.● Hataları anında yakalamak ve müdahale edebilmek.● Yazılımın yayına alınması için bir plana sahip olmak.● Kodu disipline edebilmek.● Kod kalitesini arttırmak.● Testlerin kapsam alanını izlemek ve arttırmak.● İşlemleri otomatize edebilmek.● Yayına alınacak kodun kapsamlı testlerinin izole edilmiş ortamlarda yapılabilmesi.● Continuous Delivery (otomatik deployment) yapabilmek.● Sürümler arası hızlıca geçişi sağlayabilmek.● Yayın esnasında oluşabilecek hatalarda hızlı kurtarma senaryoları uygulayabilmek.
KAZANIMLARI NELERDİR?● Yazılımı kontrol altında tutar.● Sürüm stratejinizi kontrol altında tutar.● Kod kalitesi ve test kapsamlarının arttırılmasına yardımcı olur.● Kronik hataları daha hızlı tespit edebilmenizi sağlar.● Canlı sürüm çıkma konusunda daha çevik olmanızı sağlar.● Kodlar üzerinde standardizasyon uygulamanızı ve bu standartların bozulmamasını sağlar.● İşlemleri otomatize ederek zaman kazandırır.● Kodunuzu farklı ortam ve farklı gereksinimlerde çalıştırılmasını sağlayabilir.
Code Done Unıt tests IntegrateAcceptance
testsdeployment
otomat
ik
otomat
ik
otomat
ik
Ne yap
tığım
ı biliy
orum
ve on
aylıy
orum
(Man
uel)
CONTIUOUS ıntegratıon
Code Done Unıt tests IntegrateAcceptance
testsdeployment
otomat
ik
otomat
ik
otomat
ik
otomat
ik
CONTIUOUS DELIVERY
CI araçlarında ilgili “branch” ler için gönderilen değişikliklere göre versiyonlama yapılabilir.Bu versiyonlamalar, otomatik, zamana bağlı veya manuel olarak oluşturulabilir.İstenilen zamanda istenilen versiyonlar arası geçiş yapılabilir.
PLAN
STAGE-1
STAGE-2
JOB -1 JOB -2 JOB -3
JOB -4 JOB -5 JOB -6TASK
TASK TASK
TASK
TASK
TASK
TASK
TASK
TASK
TASK
ProjectProje altında planlar yer alır ve projede bulunan bütün planlar için rapor oluşturulabilir.
PlanPlanlar “Stage” lerden oluşur, bir planda en az 1 “stage” olmalı. Bir akışın tamamını temsil eder. Repo ile ilişkilendirilip birden fazla branch üzerinde aynı planı çalıştırmak mümkündür.Tetikleyiciler ve bidirimler eklenebilir.
Stage“Job”lardan oluşur. Eğer uygun sayıda “agent” var ise verilen işleri paralel koşabilir.Verilen bütün görevlerin sonrasıda “artifact” oluşturulabilir.
Job“Task” lerden oluşur. Veriliş sırasına göre verilen görevleri çalıştırır. İstenir ise iş çalıştıktan sonra “artifacts” oluşturulabilir.
TaskEn küçük yapı birimidir. Task’ ler birleşerek “Job” ları oluşturur.
BuıldBelirtilen planın uygulandığı başarılı veya başarısız her bir adıma “build” deniliyor.
Artıfacts“Stage” veya “job” başarılı şekilde koştuktan sonra birşeyler üretebilir ve bu üretilen şeyler bir sonraki adımlarda kullanılabilir. Hatta deployment projelerinde kullanılabilir. İşte bu üretilen dosyalara “Artifacts” denir.
Örn. Composer ın çalışması sonrası oluşan vendor dizini. Yada bütün işlere tamamlandıktan sonra oluşan kod (vendor cache vs dizinlerinin olduğu.)
Agents“remote” ve “local” olmak üzere ikiye ayrılır. Verilen görevleri koşan CI değil bu agent’lardır. Verilen görevleri yaparak sonucunu CI Server a bildirirer.
Remote üerinde koşabilmesi için agent’ın CI Server ile konuşabilmesi gerekmektedir.
Checkout source code Run phpunıt tests Build test environment
STAGE-1
Default job
Test suıte -1
Run Test suıte
Test suıte -1
Run Test suıte
Test suıte -1
Run Test suıte
STAGE-2
1 2
3
3
3
Nasıl çalışıyor?
STAGE-1
Checkout source code
Composer update
Default job
STAGE-2
phpunıt
Unıt tests
phploc
Lıne of code
phpmd
Mess detector
Code snıffer
Code standards
Dead code, copy past...
Detectors
Tüm raporları “artifacts” olarak alınabilir.
STAGE-3
Vagrant + Behat + PhantomJS
Functıonal Test
ANT
Automatıze
Vagrant + Behat + PhantomJS
Functıonal Test
Vagrant + Behat + PhantomJS
Functıonal Test
Vagrant + Behat + PhantomJS
Functıonal Test
STAGE-2
phpunıt
Unıt tests
phploc
Lıne of code
phpmd
Mess detector
Code snıffer
Code standards
Dead code, copy past...
Detectors
Tüm raporları “artifacts” olarak alınabilir.
STAGE-3
Vagrant + Behat + PhantomJS
Functıonal Test
ANT
AUTOMATED
Vagrant + Behat + PhantomJS
Functıonal Test
Vagrant + Behat + PhantomJS
Functıonal Test
Vagrant + Behat + PhantomJS
Functıonal Test
Tüm kod deploy için “artifacts” olarak alınabilir.