Upload
emanuele-quinto
View
1.280
Download
3
Tags:
Embed Size (px)
DESCRIPTION
HigherEd Drupal Summit @ BADCamp 2011 (http://2011.badcamp.net/higher-education-drupal-summit)Cal State San Francisco will talk about how they implemented their drupal development cycle process based on continuous integration and QuickBuild.
Citation preview
Drupal @ SF State 2011Continuous Integration
Emanuele Quinto and Supakit Kiatrungrit (Nat)Identity Management/Portal
2
Continuous Integration
Definition
• Phing• Drush• Apache Ant• QuickBuild
Tools & Technologies
• Portal (internal site) / Web Content (public sites)• Testing• Deploying
Quickbuild + Drupal @ SF State
3
What is Continous Integration?
• Implements continuous processes of applying quality control — small pieces of effort, applied frequently.Continuous integration aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control after completing all development.
Wikipedia
• Members of a team integrate their work frequently.• Integration is verified by an automated build
(including test) to detect integration errors as quickly as possible.
Practically
4
Drush
drush is a command line shell scripting interface for Drupal, a veritable Swiss Army knife designed to perform Drupal tasks from the command line on your web server.
• admin tasks quicker than via the web interface;
• scriptability of common tasks;
• keeping up to date.
What can DRUSH do for you?
5
Drush commands
$ drush help <command>
• Works for modules and themes!
$ drush dl <package>
$ drush en <package>
$ drush dis <package>
• DB integration$ drush sql-conf
$ drush sqlc
$ drush sql-dump
$ drush cc
6
Drush example
$ ssh server1
$ cd /var/www/d7site
$ drush dl views
$ drush en views
$ ssh server1
$ cd /var/www/d7site/sites/all/modules
GOTO drupal.org
$ curl http://ftp.drupal.org/files/projec
ts/views-7.x-3.0-rc1.tar.gz
$ tar –xzf views-7.x-3.0-rc1.tar.gz
GOTO /admin/build/modules
enable and save
7
Phing
• PHP project build system/tool based on Apache Ant.
PHing Is Not GNU make
• “GNU make” functionalities;• XML build files;• PHP "task" classes;• SimpleTest unit tests;• Shell/Drush scripts• file system operations;• MySQL execution;• SVN operations
Features
8
Phing example (1)
<copy todir=“build”> <fileset defaultexcludes="false"
expandsymboliclinks="true"
dir="."> <include name="**/*.php" /> </fileset></copy>
• File System Task
<simpletest todir="results"> <formatter type="plain"/>
<fileset dir="tests"> <include name="**/*Test*.php"/>
<exclude name="**/Abstract*.php"/> </fileset> </simpletest>
• Simple Test Task
9
Phing example (2)
<if> <equals arg1="${foo}" arg2="bar" /> <then> <echo message="The value of property foo is bar" /> </then> <else> <echo message="The value of property foo is not bar" /> </else> </if>
• Conditional Task
<exec command="ls -l"
dir="/home"
checkreturn="true"/>
• Execution Task
10
Apache Ant
• Java-based build tool: Java library and command-line;
Apache Ant "Another Neat Tool”
• main usage is the build of Java applications;• used effectively to build non Java applications;• Java Class like extensions;• build files in XML;• Standardized and Platform Independent;
Features
11
Apache Ant example
<jmeter jmeterhome="${jmeter.path}”
resultlog=“${jmeter.report.dir} /JMeterResults.jtl” failureProperty="jmeter.failed">
<testplans dir="source" includes=”app.jmx" />
</jmeter>
• JMeter Test Task
12
JMeter
Ant
Phing
Ant / Phing / Quickbuild
13
QUICKBUILD
14
QuickBuild
• Object Oriented Based Continuous Integration
QuickBuild
• Supported SCM systems: Subversion, CVS, Perforce, ClearCase, StarTeam, Visual SourceSafe, Accurev, Git, Mercurial, Bazaar, Team
• Supports Issue Traker systems: JIRA, Trac, Bugzilla, CollabNet TeamForge, and Redmine.
• Advanced Build Grid
Features
15
QuickBuild
• Native support for mainstream code inspection and coverage tools, including checkstyle, findbugs, emma, pmd, and cobertura.
• Extensible via Plugins and RESTful API • Proof Build• Support to notify through: RSS, Email, MSN
Messenger, Google Talk, Jabber, and the cross-platform tray monitor.
• Customizable User Dashboards
Features
16
QuickBuild Dashboard
Buildsummary
Buildconfigurations
17
QB Testing (1)
Next Muniportletbuild
18
QB Testing (Next Muni Portlet)
19
QB Testing (2)
Testhistory
20
QB Testing (3)
error
Testdetails
Failedtest
21
QB Testing (4)
OK
22
PORTAL DEPLOYMENT
23
Drupal Servers (Portal)
24
Development Cycle
Local machine
Dev
Test
Staging
Production
Manual on request
Manual on request
5am
Manual
Branching from SVN Develop code Run unit tests Check into SVN
Additional development Interface testing Merge back to trunk
Verify automated tests User acceptance testing Content is added directly here
Automated tests run If any tests fail, there is no push
to production
Management approval Tags from SVN
Automated tests If any tests fail, system is rolled back to
previous build
25
Deployment (1)
Portal deployment
26
Deployment (2)Automated Deployment
Project
Step 3
Step 1
Step 2
27
Deployment (3)
Step 1.3
Step 1.3.1
…
28
WEB CONTENT DEPLOYMENT
29
Drupal Servers (Web Content)
30
Acquia
Servermanagement
31
Acquia dashboard
databases
file
code
32
Acquia + QuickBuild (1)
Development process
33
Acquia + QuickBuild (2)
SVN
branchingfilesystem database Drupal
DEV
34
Acquia + QuickBuild (3)
Drupal DEV
GIT merging filesystem database
35
THANK YOU
Q & A
36
About us
Supakit Kiatrungrit (Nat)[email protected]
http://www.linkedin.com/pub/supakit-kiatrungrit/6/174/888
Emanuele Quinto [email protected]
http://www.linkedin.com/in/emanuelequinto
@emaV