Сontinuous Integration - step to continuous deployment

35
Continuous integration – step to Continuous Deploy Drupal expert [email protected] Igor Rodionov

description

continuous Integration

Transcript of Сontinuous Integration - step to continuous deployment

Page 1: Сontinuous Integration - step to continuous deployment

Continuous integration – step to Continuous Deploy

Drupal expert

[email protected]

Igor Rodionov

Page 2: Сontinuous Integration - step to continuous deployment

Rodionov Igor

Cooking Drupal

~ 5 years~ 14 projects~ 60 patches

~16 approved

Sponsors

Gold sponsor

Silver sponsor Silver sponsor

Bronze sponsorBronze sponsor

Organization

Page 3: Сontinuous Integration - step to continuous deployment

Drupal based project

Page 4: Сontinuous Integration - step to continuous deployment

Drupal based project

Page 5: Сontinuous Integration - step to continuous deployment

Drupal based project

Page 6: Сontinuous Integration - step to continuous deployment

Why?

Page 7: Сontinuous Integration - step to continuous deployment

Club of anonymous drupalers

Page 8: Сontinuous Integration - step to continuous deployment

Club of anonymous drupalers

Page 9: Сontinuous Integration - step to continuous deployment

Club of anonymous drupalers

Take control over your project!

Page 10: Сontinuous Integration - step to continuous deployment

Continuous integration

• Build• Inspection• Test• Deploy / Artifact

Page 11: Сontinuous Integration - step to continuous deployment

Continuous integration

• Get rid of routine• Regression testing• Fast Feedback• Confidence in the project• Frequent release

Page 12: Сontinuous Integration - step to continuous deployment

Continuous integration

Page 13: Сontinuous Integration - step to continuous deployment

Deploy

Page 14: Сontinuous Integration - step to continuous deployment

Deploy

Code Run

SVNGITCVS MercurialFTPSFTP

Bash ManualBash SSHVCS Hooks CronCapistrano Phingistrano

Page 15: Сontinuous Integration - step to continuous deployment

Inspection

Page 16: Сontinuous Integration - step to continuous deployment

Inspection – Copy - Paste

PHPCPD

pear install phpunit/phpcpd

Page 17: Сontinuous Integration - step to continuous deployment

Inspection - Mess

phplint

icosaedro.it/phplint

Page 18: Сontinuous Integration - step to continuous deployment

Inspection - Mess

PHPMDphpmd.org

______________________________

Code Size Rules

Design Rules

Naming Rules

Unused Code Rules

Page 19: Сontinuous Integration - step to continuous deployment

Inspection – Code Style

Code Sniffer

pear install PHP_CodeSniffer

Drupal Code Sniffer

drupal.org/project/drupalcs

Page 20: Сontinuous Integration - step to continuous deployment

Test

Page 21: Сontinuous Integration - step to continuous deployment

Test

Selenium + Unit testing framework

+ Functional tests

- Unit tests

+ Java Script support

- Access Drupal API

- Atomicity

- Fragile tests

- Multithreading

- Performance

Page 22: Сontinuous Integration - step to continuous deployment

Test

Simpletest/Simpletest clone

+ Functional tests

+ Unit tests

- Java Script support

+ Access Drupal API

+ Atomicity

+ Fragile tests

+ Multithreading

+ Performance

Page 23: Сontinuous Integration - step to continuous deployment

Test

Simpletest/Simpletest clone/Selenium

+ Functional tests

+ Unit tests

+ Java Script support

+ Access Drupal API

+ Atomicity

+ Fragile tests

+ Multithreading

+ Performance

Page 24: Сontinuous Integration - step to continuous deployment

Build

Page 25: Сontinuous Integration - step to continuous deployment

Build

Page 26: Сontinuous Integration - step to continuous deployment

Build

•Contribute•Custom•Forked

Page 27: Сontinuous Integration - step to continuous deployment

Build

•Contribute•Custom•Forked Patches

Page 28: Сontinuous Integration - step to continuous deployment

Build

Drush make

projects[admin_menu][version] = "3.0-rc1"

projects[admin_menu][subdir] = "contrib/dev"

projects[admin_menu][patch][] = "patches/admin_menu_font.patch"

Page 29: Сontinuous Integration - step to continuous deployment

Build

• Drush make

• Corporate repository modules

• Fork core & modules

• Contribe your patches

Page 30: Сontinuous Integration - step to continuous deployment

Build

Do not store

Page 31: Сontinuous Integration - step to continuous deployment

Build

Modules Drush migrate

ObjectsFeatures

Ctoolsdefault hooks

ConfigurationsStrongarm

CtoolsFeatures

ContentUuid

Uuid featuresFeatures

Page 32: Сontinuous Integration - step to continuous deployment

Build - phing

• $ phing make• $ phing install• $ phing update• $ phing test• $ phing inspect• $ phing create• $ phing phpcsetc ...

Page 33: Сontinuous Integration - step to continuous deployment

Summing up

• Control over the project• Reduced the time of release• Reduced the risks• The accumulation of "technical

expertise“• Flexible integration of third-party code• 75% of developers became happy

Page 34: Сontinuous Integration - step to continuous deployment

Thank you for your attention

Questions?

Drupal expert

[email protected]

Igor Rodionov

Page 35: Сontinuous Integration - step to continuous deployment

Rodionov Igor

Cooking Drupal

~ 5 years~ 14 projects~ 60 patches

~16 approved

Sponsors

Gold sponsor

Silver sponsor Silver sponsor

Bronze sponsorBronze sponsor

Organization