Сontinuous integration - step to continuous deployment
DESCRIPTION
continuous IntegrationTRANSCRIPT
Rodionov Igor
Cooking Drupal
~ 5 years~ 14 projects~ 60 patches
~16 approved
Sponsors
Gold sponsor
Silver sponsor Silver sponsor
Bronze sponsorBronze sponsor
Organization
Drupal based project
Drupal based project
Drupal based project
Why?
Club of anonymous drupalers
Club of anonymous drupalers
Club of anonymous drupalers
Take control over your project!
Continuous integration
• Build• Inspection• Test• Deploy / Artifact
Continuous integration
• Get rid of routine• Regression testing• Fast Feedback• Confidence in the project• Frequent release
Continuous integration
Deploy
Deploy
Code Run
SVNGITCVS MercurialFTPSFTP
Bash ManualBash SSHVCS Hooks CronCapistrano Phingistrano
Inspection
Inspection – Copy - Paste
PHPCPD
pear install phpunit/phpcpd
Inspection - Mess
phplint
icosaedro.it/phplint
Inspection - Mess
PHPMDphpmd.org
______________________________
Code Size Rules
Design Rules
Naming Rules
Unused Code Rules
Inspection – Code Style
Code Sniffer
pear install PHP_CodeSniffer
Drupal Code Sniffer
drupal.org/project/drupalcs
Test
Test
Selenium + Unit testing framework
+ Functional tests
- Unit tests
+ Java Script support
- Access Drupal API
- Atomicity
- Fragile tests
- Multithreading
- Performance
Test
Simpletest/Simpletest clone
+ Functional tests
+ Unit tests
- Java Script support
+ Access Drupal API
+ Atomicity
+ Fragile tests
+ Multithreading
+ Performance
Test
Simpletest/Simpletest clone/Selenium
+ Functional tests
+ Unit tests
+ Java Script support
+ Access Drupal API
+ Atomicity
+ Fragile tests
+ Multithreading
+ Performance
Build
Build
Build
•Contribute•Custom•Forked
Build
•Contribute•Custom•Forked Patches
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"
Build
• Drush make
• Corporate repository modules
• Fork core & modules
• Contribe your patches
Build
Do not store
Build
Modules Drush migrate
ObjectsFeatures
Ctoolsdefault hooks
ConfigurationsStrongarm
CtoolsFeatures
ContentUuid
Uuid featuresFeatures
Build - phing
• $ phing make• $ phing install• $ phing update• $ phing test• $ phing inspect• $ phing create• $ phing phpcsetc ...
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
Rodionov Igor
Cooking Drupal
~ 5 years~ 14 projects~ 60 patches
~16 approved
Sponsors
Gold sponsor
Silver sponsor Silver sponsor
Bronze sponsorBronze sponsor
Organization