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

Continuous Integration Bamboo ve Php Uygulaması

Jan 20, 2017

Download

Software

Mustafa İleri
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Continuous Integration Bamboo ve Php Uygulaması

continuous integrationBamboo ve Php Uygulaması

Mustafa leriİPrinciple Software Engineer @Ideasoft

Page 2: Continuous Integration Bamboo ve Php Uygulaması

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ı.

Page 3: Continuous Integration Bamboo ve Php Uygulaması

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.

Page 4: Continuous Integration Bamboo ve Php Uygulaması

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.

Page 5: Continuous Integration Bamboo ve Php Uygulaması
Page 6: Continuous Integration Bamboo ve Php Uygulaması

CONTINUOUS INTEGRATION != CONTINUOUS Delıvery

Page 7: Continuous Integration Bamboo ve Php Uygulaması

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

Page 8: Continuous Integration Bamboo ve Php Uygulaması

Code Done Unıt tests IntegrateAcceptance

testsdeployment

otomat

ik

otomat

ik

otomat

ik

otomat

ik

CONTIUOUS DELIVERY

Page 9: Continuous Integration Bamboo ve Php Uygulaması
Page 10: Continuous Integration Bamboo ve Php Uygulaması
Page 11: Continuous Integration Bamboo ve Php Uygulaması

Versİyon Yönetİmİ

Page 12: Continuous Integration Bamboo ve Php Uygulaması

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.

Page 13: Continuous Integration Bamboo ve Php Uygulaması

TerİMLER VE ARAÇLAR

Page 14: Continuous Integration Bamboo ve Php Uygulaması

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

Page 15: Continuous Integration Bamboo ve Php Uygulaması

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.

Page 16: Continuous Integration Bamboo ve Php Uygulaması

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.

Page 17: Continuous Integration Bamboo ve Php Uygulaması

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?

Page 18: Continuous Integration Bamboo ve Php Uygulaması

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.