Simple Continuous Integration using Git and  CI Joe Shawn Price drupal.org: langworthy twitter: @sprice
Continuous Integration Defined "Continuous Integration is a software development practice where members of a team integrate their work frequently..." "Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly"  - Martin Fowler martinfowler.com/articles/continuousIntegration.html
Continuous Integration Defined Continuous Integration is a fancy term for “run your project’s tests after someone pushes to the repository and notify interested parties if they fail”  - Chris Wanstrath github.com/blog/471-continuous-integration-spring-cleaning
Components of Continuous Integration Use a code repository
Test your code
Automate the testing
Use a code repository
Use a code repository In the beginning there was FTP.
Use a code repository In the beginning there was FTP. And things were good.
Use a code repository 5 minutes later....
Use a code repository 5 minutes later.... Things were bad.
Use a code repository 5 minutes later.... Things were bad. "Who made that change?" "There's a bug, lets put the previous version of the file back" etc.
Use a code repository Greetings Git!
Use a code repository Greetings Git! A free & open source distributed version control system. git-scm.com/
progit.org/book/
drupal.org/community-initiatives/git
Use a code repository Using a code repository allows teams to: track the history of changes
use branches to manage feature integration
efficiently deploy to production
efficiently roll-back changes
Use a code repository Meet the Amazing Module!
Use a code repository DEMO time:  Create a new git repository
Include Drupal and the Amazing module
Test your code
Test your code Drupal 6:  drupal.org/project/simpletest Simpletest is in Drupal 7 core.
Test your code amazing.test <?php class   AmazingTestCase   extends  DrupalWebTestCase {    public   static   function   getInfo () {      return   array (        'name'   =>  t( 'Amazing functionality' ),        'description'   =>  ( 'Test for amazingness' ),        'group'   =>  t( 'Amazing' ),      );    }    function   setUp () {      parent:: setUp ( 'amazing' );    }    public   function   testAmazingPageContent () {      $this -> drupalGet ( &quot;amazing&quot; );      $this -> assertResponse ( 200 );      $this -> assertText (t( 'Simply amazing!' ));    } }
Test your code DEMO time: running tests in the Drupal UI
running tests with drush -  github.com/yhahn/drush_test
Automate the testing
Automate the testing Choosing a Continuous Integration server
Automate the testing Choosing a Continuous Integration server Hudson?
Cruise Control?
and more...
Automate the testing Choosing a Continuous Integration server Hudson? (Java)
Cruise Control? (Java)
and more... (many are tricky to install)
Automate the testing Meet CI Joe!  github.com/defunkt/cijoe

Continuous integration with Git & CI Joe