A plugin to review code and run tests on Drupal. # Screenshots ### Ploting results ![](docs/images/trends.png) ### Administration interface ![](docs/images/admin.png) # Quick start - Install [drush 7+](http://docs.drush.org/en/master/install/) globally or configure the path to Drush on `http:///configure` - Install [Checkstyle](https://wiki.jenkins-ci.org/display/JENKINS/Checkstyle+Plugin), [JUnit](https://wiki.jenkins-ci.org/display/JENKINS/JUnit+Plugin) and [PHP Built-in Web Server](https://wiki.jenkins-ci.org/display/JENKINS/PHP+Built-in+Web+Server+Plugin) - Create a local database: `CREATE DATABASE db;` - Create a Freestyle project that looks like [this](https://github.com/jenkinsci/drupal-developer-plugin/blob/master/img/config.png), or create a Drupal project - Under 'Build a Drupal instance', update the database URL # Usage ### 1. Create Local Database - `CREATE DATABASE db;` ### 2. Install drush 7+ - `git clone` `https://github.com/drush-ops/drush.git` `/var/lib/jenkins/tools/drush` - `cd /var/lib/jenkins/tools/drush` - `git checkout tags/7.0.0-rc2` - `curl -sSL` `https://getcomposer.org/installer` `| php` - `php composer.phar install` - Go to `http:///configure` - Under 'Drush installations', set 'Path to Drush home' to `/var/lib/jenkins/tools/drush` ### 3. Create project Create a new 'Freestyle' project. Alternatively you may create a 'Drupal' project which generates a ready-to-use job to review code and run tests on a vanilla Drupal core. If you use this option then you may skip most of the instrutions below: just update the database URL and possibly set up a web server. ### 4. Configure Source Code Management Configure the Source Code Management section to fetch a full Drupal code base. Here are a few options: 1. If you just want to run tests on a Drupal core, you may use [Git](https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin): - Repository: `http://git.drupal.org/project/drupal.git` - Branch Specifier: `tags/7.38` 2. If your own code repository includes a Drupal core, then just pull it 3. If it does not, then you may combine your own repo with the drupal.org repo using [Multiple SCMs](https://wiki.jenkins-ci.org/display/JENKINS/Multiple+SCMs+Plugin) 4. Alternatively you may use a Drush Makefile source By default Jenkins pulls code into the workspace root but you might want to put Drupal into a subdirectory to keep things clean (e.g. `$WORKSPACE/drupal`): - If using [Git](https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin): set option 'Additional Behaviours / Check out to a sub-directory' to `drupal` - If using [Subversion](https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin): set option 'Local module directory' to `drupal` - If using a Drush Makefile: set option 'Drupal root directory' to `drupal` Note that a Drush Makefile source will fetch the code every time a new build runs. Using a regular source like Git or Subversion is probably more efficient. Also only Drupal 7 code is supported. ### 5. Configure Local Web Server Some tests fail if Drupal does not run behind a web server. Here are a couple of solutions: - Either install [PHP Built-in Web Server](https://wiki.jenkins-ci.org/display/JENKINS/PHP+Built-in+Web+Server+Plugin) (requires PHP \>= 5.4.0) e.g.: - Port: `8000` - Host: `localhost` - Document root: `drupal` (or leave empty if the Drupal root is the workspace root) - Or install Apache locally and make it point at the Drupal root (e.g. `/var/lib/jenkins/jobs/myproject/workspace/drupal`) ### 6. Configure Builds Add build steps: - 'Build a Drupal instance' - 'Review code on Drupal' - 'Run tests on Drupal' The default values should work though you need to update a few things: - Update the database URL in step 'Build a Drupal instance' to point at your database - If you have checked out Drupal into a subdirectory (e.g. `drupal`) then update the Drupal root directory of every step accordingly ; otherwise, just leave it empty - The URI of step Run tests on Drupal should match what you have configured on your webserver (e.g. `http://localhost:8000`) Note that if your code base does not include a copy of the Coder module, then step Review code on Drupal will automatically download it into `$DRUPAL/modules/`. ### 7. Plot results Plot Code Review results using [Checkstyle](https://wiki.jenkins-ci.org/display/JENKINS/Checkstyle+Plugin): - Create a post-build action 'Publish Checkstyle analysis results' - If the logs directory for the code review is `logs_codereview` then set 'Checkstyle results' to `logs_codereview/**` - You might want to set the unstable threshold to 0 normal warning, and the failed threshold to 0 high warning Plot Test results using [JUnit](https://wiki.jenkins-ci.org/display/JENKINS/JUnit+Plugin): - Create a post-build action 'Publish JUnit test result report' - If the logs directory for the tests is `logs_tests` then set 'Test report XMLs' to `logs_tests/**` ### 8. Build the Project - Click on 'Build Now': Jenkins should start reviewing and testing the code base - After a few builds complete, trend graphs should show up # Dependencies - [drush 7+](http://www.drush.org/en/master/install/) - [SCM API](https://wiki.jenkins-ci.org/display/JENKINS/SCM+API+Plugin) - [Checkstyle](https://wiki.jenkins-ci.org/display/JENKINS/Checkstyle+Plugin), [JUnit](https://wiki.jenkins-ci.org/display/JENKINS/JUnit+Plugin) and [PHP Built-in Web Server](https://wiki.jenkins-ci.org/display/JENKINS/PHP+Built-in+Web+Server+Plugin) (or Apache) are not required but are relevant # Change Log #### 0.8 (release 2016-08-12) - JENKINS-35544 Fix NPE when module has no version. #### 0.6 (release 2015-09-05) - Initial release