Presentation is loading. Please wait.

Presentation is loading. Please wait.

#! Phil Norton Getting Started With Jenkins and Drupal DrupalCampNW 2013.

Similar presentations


Presentation on theme: "#! Phil Norton Getting Started With Jenkins and Drupal DrupalCampNW 2013."— Presentation transcript:

1 #! Phil Norton Getting Started With Jenkins and Drupal DrupalCampNW 2013

2 #! Me Phil Norton (@philipnorton42) #! code (www.hashbangcode.com)www.hashbangcode.com Technical Lead at Access Help run NWDUG DrupalCampNW2013 co-organizer Help out at PHPNW

3 #! Jenkins Build and automation server Java application Used to be called Hudson Built for continuous integration Helps you run repetitive tasks http://jenkins-ci.org/

4 #!

5

6 Jenkins Drupal Examples Inspect your code Run cron Build documentation Test drush make files Test Drupal install profiles Run tests Deploy sites

7 #! Installing Jenkins Different for most platforms Go to jenkins-ci.org Click on your platform on right hand side Follow instructions

8 #! Installing On Ubuntu wget -q -O - http://pkg.jenkins- ci.org/debian/jenkins-ci.org.key | sudo apt-key add - Add “deb http://pkg.jenkins-ci.org/debian binary/“ to the file /etc/apt/sources.list sudo apt-get update sudo apt-get install jenkins

9 #! localhost:8080

10 #! Authentication Jenkins doesn’t have authentication when first installed Probably a good idea to enable it! Many different models from local user credentials to domain authentication

11 #! Creating A User In Jenkins Simplest security model for beginners Manage Jenkins > Configure Security > Enable Security Manage Jenkins > Manage Users > Create User

12 #! ooopss… Quite easy to lock yourself out Open the file config.xml remove the element to remove security

13 #! Anatomy Of Jenkins Jenkins can be found at /var/lib/jenkins May contain one or more of the following:.ssh config.xml jobs/ nodeMonitors.xml plugins/ secret.key secret.key.not-so-secret updates/ userContent/ users/ workspace/

14 #! Your First Jenkins Project

15 #! Drupal Cron Start off using Jenkins with something simple Running a Drupal cron through Jenkins is easy

16 #! Drupal Cron Create a ‘free-style software project’

17 #!

18 Drupal Cron Build Trigger Select ‘build periodically’ Crontab syntax applies Can also use @hourly to run the job every hour

19 #! Drupal Cron Build Step Create an Execute shell build task Use 'wget' to call the cron page remotely

20 #! Notifications Useful to know if a job fails Email notifications are available Sends detailed notifications on failed jobs

21 #! Jenkins Job List

22 #! Jenkins Plugins

23 #! Jenkins Plugins Jenkins can be extended with plugins Install them via the plugin manager Manage Jenkins > Manage Plugins

24 #! Drupal Code Analysis In Jenkins

25 #! Drupal Code Analysis Syntax checking Check for coding standards violations Analyse for duplication of code Check for potential problems in source code

26 #! STAHP!

27 #! Some Rules For Using Jenkins With Drupal Use source control Only analyse your own code as priority Know what you are analysing Understand the output Standardise as much as you can

28 #! Standardise Standard repo structure docroot/ scripts/ make/ Standard theme structure template.php templates/ js/ css/ Standard Drupal setup sites/all/modules/contrib / sites/all/modules/custom/ Standard custom module structure module.module includes/module.inc

29 #! Git Use source control to pull code into Jenkins To use Git you need the Jenkins Git plugin Best results are using SSH (you will also need some ssh keys) Perhaps the most complex part of the job setup

30 #! Git Use source control to pull code into Jenkins To use Git you need the Jenkins Git plugin Best results are using SSH (you will also need some ssh keys) Perhaps the most complex part of the job setup

31 #! Add your git ssh URL to Jenkins Jenkins will give you a warning if it can’t see the repo

32 #! Syntax Checking

33 #! PHP Lint Syntax check any PHP file with php -l myfile.php Can only do one file at a time How can we check an entire project?

34 #! Build tool Controlled with XML files Written in PHP Available through PEAR Integrates with Jenkins Certified awesome!

35

36 #! Phing And PHP Lint Add a Phing build file to your source code What we need to do is: 1.Tell Phing what files we want to scan 2.Use the phplint Phing task to scan files 3.Fail the build if any errors found

37 #!

38 #! Running Phing Syntax Check Add the Phing file to your source code as build.xml You can run this build using the following: phing -f scripts/build.xml syntaxcheck_php

39 #! Add Phing Build Step To Jenkins Use the Jenkins Phing Plugin to invoke the syntaxcheck_php Phing target

40 #! What Next?

41 #! Drupal Coding Standards https://drupal.org/coding-standards

42 #! Checkstyle Jenkins Plugin Reports on coding standards results Accepts a checkstyle.xml file produces lots of graphs and code reports

43 #! PHP CodeSniffer Inspect code for Drupal coding standards Produces checkstyle.xml files for Checkstyle Looks for best practice in your code

44 #! Install PHP CodeSniffer Install the PHP CodeSniffer package sudo pear install PHP_CodeSniffer Download Coder and link the Drupal CodeSniffer standard drush dl coder sudo ln -sv /path/to/coder/coder_sniffer/Drupal $(pear config-get php_dir)/PHP/CodeSniffer/Standards/Drupal

45 #! phpcs docroot/sites/all/modules/custom

46 #! phpcs --standard=Drupal docroot/sites/all/modules/custom

47 #! phpcs --standard=Drupal -- extensions=php,module,inc,install,test,profile, theme docroot/sites/all/modules/custom

48 #! phpcs --report=checkstyle --standard=Drupal -- extensions=php,module,inc,install,test,profile, theme docroot/sites/all/modules/custom

49 #! phpcs --report-file=reports/checkstyle.xml -- report=checkstyle --standard=Drupal -- extensions=php,module,inc,install,test,profile, theme docroot/sites/all/modules/custom

50 #! The Missing Element? Git stores the code phpcs produces the reports Jenkins and processes reports What fits all these elements together?

51 #! Phing! (did I mention it was awesome?)

52 #! phpcs Phing Module Tell Phing what files we want to scan Use the phpcs Phing module to scan the files and what standard to use Output the report in a checkstyle.xml file

53 #!

54 #!

55 #!

56 #! Add PHP CodeSniffer To Jenkins Use the Phing plugin to invoke Phing target

57 #! Publish PHP CodeSniffer Output Create a Post Build action Reports directory contains PHPCS report Checkstyle plugin creates graphs from this file

58 #!

59

60

61 Try It Yourself PHP Mess Detect Phing output into PMD Analysis Results graphs in Jenkins PHP Copy Paste Detect Phing output into Duplicate Code Analysis results graphs in Jenkins

62 #! Do More! Use Phing to run an action Use Jenkins to automate it — or — Use Phing to generate reports Use Jenkins plugins to convert reports into graphs

63 #! joind.in/10137

64 #! Me Phil Norton (@philipnorton42) #! code (www.hashbangcode.com)www.hashbangcode.com Technical Lead at Access Help run NWDUG DrupalCampNW2013 co-organizer Help out at PHPNW


Download ppt "#! Phil Norton Getting Started With Jenkins and Drupal DrupalCampNW 2013."

Similar presentations


Ads by Google