Drupal & Continous Integration - SF State Study Case

Post on 19-Jun-2015

1.280 views 3 download

Tags:

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.

Transcript of Drupal & Continous Integration - SF State Study Case

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)supakitk@sfsu.edu

http://www.linkedin.com/pub/supakit-kiatrungrit/6/174/888

Emanuele Quinto equinto@sfsu.edu

http://www.linkedin.com/in/emanuelequinto

@emaV