18
continuous integration Bamboo ve Php Uygulaması Mustafa leri İ Principle Soſtware Engineer @Ideasoſt

Continuous Integration Bamboo ve Php Uygulaması

Embed Size (px)

Citation preview

continuous integrationBamboo ve Php Uygulaması

Mustafa leriİPrinciple Software Engineer @Ideasoft

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.

CONTINUOUS INTEGRATION != CONTINUOUS Delıvery

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

Versİyon Yönetİmİ

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.

TerİMLER VE ARAÇLAR

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.