<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Drupal on Mike Bell - Blog &amp; Stuff</title><link>https://mikebell.io/tags/drupal/</link><description>Recent content in Drupal on Mike Bell - Blog &amp; Stuff</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>hello@mikebell.io (Mike Bell)</managingEditor><webMaster>hello@mikebell.io (Mike Bell)</webMaster><copyright>© 2026 Mike Bell</copyright><lastBuildDate>Wed, 03 Feb 2016 00:00:00 +0000</lastBuildDate><atom:link href="https://mikebell.io/tags/drupal/index.xml" rel="self" type="application/rss+xml"/><item><title>Alias Drupal Composer Project</title><link>https://mikebell.io/posts/alias-drupal-composer-project/</link><pubDate>Wed, 03 Feb 2016 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/alias-drupal-composer-project/</guid><description>
&lt;p>&lt;code>alias d8build=&amp;quot;composer create-project drupal-composer/drupal-project:8.x-dev --stability dev --no-interaction&amp;quot;&lt;/code>&lt;/p>
&lt;p>It&amp;rsquo;s too big for a tweet but it&amp;rsquo;s certainly useful, saves me having to remember all the params. Stick that in your .bashrc or .zshrc and enjoy!&lt;/p>
&lt;p>Run &lt;code>d8build sitename&lt;/code> and watch it do it&amp;rsquo;s stuff.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Drupal + WordPress Sprints Manchester</title><link>https://mikebell.io/posts/drupal-wordpress-sprints-manchester/</link><pubDate>Thu, 03 Jul 2014 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/drupal-wordpress-sprints-manchester/</guid><description>
&lt;p>I&amp;rsquo;m proud to announce a new collaboration between the Drupal and WordPress communities in Manchester to provide a space to contribute back to each respective project. It&amp;rsquo;s a great opportunity to get together and work on the projects that we love while being around like minded people.&lt;/p>
&lt;p>The first sprint will be on the 19th July at TechHub in Manchester. You can sign up here - &lt;a
href="http://www.eventbrite.com/e/drupal-wordpress-sprints-manchester-tickets-12157905623"
target="_blank"
>http://www.eventbrite.com/e/drupal-wordpress-sprints-manchester-tickets-12157905623&lt;/a> with lunch provided.&lt;/p>
&lt;p>I&amp;rsquo;d like to thank Jenny Wong (&lt;a
href="https://twitter.com/miss_jwo"
target="_blank"
>@miss_jwo&lt;/a>) for helping to arrange this, I&amp;rsquo;m really looking forward to making this a long running collaboration between the two communities.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Drupal Sprints Manchester are back!</title><link>https://mikebell.io/posts/drupal-sprints-manchester-are-back/</link><pubDate>Wed, 23 Apr 2014 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/drupal-sprints-manchester-are-back/</guid><description>
&lt;p>After a long break we’re back and ready to get sprinting again.&lt;/p>
&lt;p>I’m looking forward to getting stuck into Drupal 8 migrate in preparation for my talk at Drupal Camp Yorkshire.&lt;/p>
&lt;p>More details on the event can be found at &lt;a
href="http://www.meetup.com/nwdrupal/events/178627442/"
target="_blank"
>http://www.meetup.com/nwdrupal/events/178627442/&lt;/a> don’t forget to read my sprint manifesto &lt;a
href="http://mikebell.io/blog/29-01-2014/manchester-drupal-sprint-manifesto-v20"
target="_blank"
>here&lt;/a>.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Drupal to Octopress to Drupal</title><link>https://mikebell.io/posts/drupal-to-octopress-to-drupal/</link><pubDate>Mon, 24 Feb 2014 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/drupal-to-octopress-to-drupal/</guid><description>
&lt;p>Over the weekend I’ve been working on migrating my site away from Drupal. I managed to get everything up and running on Octopress but it just doesn’t feel right.&lt;/p>
&lt;p>It’s not as flexible as Drupal and it seems the simplest of things breaks it. In theory I like the concept of Octopress but it just seems clunky compared to Drupal.&lt;/p>
&lt;p>I’ll be slowly making upgrades to this site:&lt;/p>
&lt;ul>
&lt;li>Adding Disqus&lt;/li>
&lt;li>Tidying the theme up&lt;/li>
&lt;li>Adding extra theme elements&lt;/li>
&lt;li>Adding some colour!!!&lt;/li>
&lt;/ul>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Stepping Down from NWDUG</title><link>https://mikebell.io/posts/stepping-down-from-nwdug/</link><pubDate>Sun, 09 Feb 2014 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/stepping-down-from-nwdug/</guid><description>
&lt;p>As of the 6th February I’ve stepped down from NWDUG it’s something that I’ve been thinking about for a while now and I now have other things that need my focus. Phil Norton is a great person to work with and I hope that whoever steps up to help will have as much fun as I have over the past few years.&lt;/p>
&lt;p>So whats next? Well I intend to ramp up my involvement with Code Club Manchester, it’s something that I believe in strongly and think I can make a great start with it. I’ll still be running Drupal Sprints Manchester (follow at &lt;a
href="http://twitter.com/drupalsprints"
target="_blank"
>http://twitter.com/drupalsprints&lt;/a>) but the format will be different and new rules will be put into place.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Override servers version of drush</title><link>https://mikebell.io/posts/override-servers-version-of-drush/</link><pubDate>Thu, 23 Jan 2014 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/override-servers-version-of-drush/</guid><description>
&lt;p>Recently I had to work on a server that was heavily restricted by a third party company. They were using an archaic version of drush so I decided to change it!&lt;/p>
&lt;p>I have no access to sudo or any form of root account, this made things even more interesting. No wget either.&lt;/p>
&lt;ul>
&lt;li>Download drush 6.2.0 to local machine&lt;/li>
&lt;li>Download console_table 1.1.3 (has to be this version)&lt;/li>
&lt;li>&lt;code>scp&lt;/code> both drush and console_table to remote server&lt;/li>
&lt;li>&lt;code>unzip&lt;/code> drush to ~/drush-6.2.0&lt;/li>
&lt;li>&lt;code>tar -zxf&lt;/code> console_table to ~/drush-6.2.0/lib/&lt;/li>
&lt;li>modify .bashrc / .zshrc and add the following:
PATH=&amp;quot;/home/badger/drush-6.2.0:$PATH”
export PATH&lt;/li>
&lt;li>&lt;code>source ~/.bashrc&lt;/code> or &lt;code>source ~/.zshrc&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>There you go the latest version of drush on a locked down system.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Drupal Sprints around the World</title><link>https://mikebell.io/posts/drupal-sprints-around-the-world/</link><pubDate>Wed, 30 Oct 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/drupal-sprints-around-the-world/</guid><description>
&lt;p>On the 22nd October Manchester saw it’s very first Drupal Sprint, this was run in parallel with London Sprints.&lt;/p>
&lt;p>Regular sprints are now becoming a great way to help out with Drupal Core and Contrib. In the UK there are now two sprints covering London and Manchester. In India there are 3 user groups all sprinting regularly. No doubt there are some in the US and in other countries.&lt;/p>
&lt;p>Sprints unlike regular user groups are an ideal place to flex your code knowledge and get your hands dirty. With initiatives such as the Drupal Ladder it’s proving that everyone can contribute in some fashion whether this be via code, documentation or testing. Within the first 30 minutes of Drupal Sprints Manchester we had our first commit to a contributed project (Omega 4) by a first time contributor.&lt;/p>
&lt;p>We communicated with London via Google Hangouts where we updated each other on our progress, I know in the past that London has spoken with India an impressive feat considering the time difference.&lt;/p>
&lt;p>It’s not out of the realms of possibility to organise a monthly world-wide sprint. The idea being that user groups all over the world organise a sprint for a specific date with the aim of working on core and contrib. I believe this will be possible with a minimal amount of effort as we can offload a lot of the organisation to each user group. Coordination of communication can be done through IRC. It would be a great publicity stunt as well, something that every country could benefit from especially in the run up to Drupal 8 release.&lt;/p>
&lt;p>If anyone is interested in a world wide sprint comment below and lets organise something!&lt;/p>
&lt;p>&lt;strong>Update&lt;/strong> - Thanks for the extra information Berdir and YesCT. It&amp;rsquo;s really cool to see the community come together for things like this. Subject to our venue being available Manchester will be ready to sprint on the 25th January.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>A Call to Arms - Support your local Drupal Community</title><link>https://mikebell.io/posts/a-call-to-arms-support-your-local-drupal-community/</link><pubDate>Sun, 13 Oct 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/a-call-to-arms-support-your-local-drupal-community/</guid><description>
&lt;p>For me the the Drupal community is amazing, it&amp;rsquo;s always felt like a family, one you can rely on to help and support you.&lt;/p>
&lt;p>It&amp;rsquo;s time for a call to arms, people need to support their local and regional Drupal user groups and events. A lot of these events are volunteer run, it takes time and energy to run meetup after meetup and big events. The people that organise and run these events are quite something, 9 to 5 days don&amp;rsquo;t exist for them.&lt;/p>
&lt;p>So this is where you come in, it&amp;rsquo;s easy to help out:&lt;/p>
&lt;ol>
&lt;li>Volunteering - everyone needs volunteers, get in touch with your local usergroup or next camp and see if they need your help.&lt;/li>
&lt;li>Sponsorship - camps aren&amp;rsquo;t free, they cost money and no one likes to talk about it. If your a company or individual then please consider sponsoring your local camp/meetup. It gets your name out there and some extra brownie points within the community.&lt;/li>
&lt;li>Spreading the word - advertise your local camp/meetup, tell your friends and colleagues, blog and tweet about it. It all helps.&lt;/li>
&lt;/ol>
&lt;p>I&amp;rsquo;m lucky to have worked with some great people on both NWDUG (North West Drupal User Group) and DrupalCamp NW 12 so I know how much the smallest of contribution can help.&lt;/p>
&lt;p>If your in the UK and looking to support your local or regional group then take a look at DrupalCamp NW 2013 - &lt;a
href="http://camp2013.nwdrupal.org.uk/"
target="_blank"
>http://camp2013.nwdrupal.org.uk/&lt;/a> - they&amp;rsquo;re looking for sponsors and volunteers.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Drupal Sprints Manchester 26th October</title><link>https://mikebell.io/posts/drupal-sprints-manchester-26th-october/</link><pubDate>Fri, 27 Sep 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/drupal-sprints-manchester-26th-october/</guid><description>
&lt;p>I&amp;rsquo;m proud to announce Drupal Sprints Manchester (UK). Last year at Drupal Camp NW I spoke with various other northern Drupalers and decided that we should get together and attempt to emulate Drupal Sprints London.&lt;/p>
&lt;p>The format is simple, Drupal developers / themers / builders get to together and work on Drupal core and contrib.&lt;/p>
&lt;p>My aim is to provide a space where people can get together and get stuck in working on Drupal and giving back to the community in the form of code, all that&amp;rsquo;s required is a laptop with an development stack and your brain.&lt;/p>
&lt;p>The first meetup will be held on the 26th October at Techhub in Manchester more details can be found here - &lt;a
href="http://www.meetup.com/nwdrupal/events/142003462/"
target="_blank"
>http://www.meetup.com/nwdrupal/events/142003462/&lt;/a>&lt;/p>
&lt;p>If you intend on coming then please sign up so we have a good idea of the numbers.&lt;/p>
&lt;p>Please help spread the word!&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Download Drupal to Current Directory using Drush</title><link>https://mikebell.io/posts/download-drupal-to-current-directory-using-drush/</link><pubDate>Tue, 27 Aug 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/download-drupal-to-current-directory-using-drush/</guid><description>
&lt;p>This has always bugged me, you can&amp;rsquo;t easily download Drupal to your current directory using drush. After a quick search I found this issue - &lt;a
href="https://drupal.org/node/495438"
target="_blank"
>https://drupal.org/node/495438&lt;/a>&lt;/p>
&lt;p>The following command works well -&lt;/p>
&lt;pre>&lt;code>drush dl -d --destination=&amp;quot;..&amp;quot; --drupal-project-rename=&amp;quot;$(basename `pwd`)&amp;quot;
&lt;/code>&lt;/pre>
&lt;p>So what&amp;rsquo;s it doing?&lt;/p>
&lt;ul>
&lt;li>&amp;ndash;destination - specifies where to download Drupal to&lt;/li>
&lt;li>&amp;ndash;drupal-project-rename - renames the downloaded directory to your current directory&lt;/li>
&lt;/ul>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Vagrant Boxes for Drupal Development</title><link>https://mikebell.io/posts/vagrant-boxes-for-drupal-development/</link><pubDate>Sat, 10 Aug 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/vagrant-boxes-for-drupal-development/</guid><description>
&lt;p>During my time off I figured I&amp;rsquo;d get my dev environment setup for when I start at CTI.&lt;/p>
&lt;p>Using the really great &lt;a
href="https://puphpet.com/"
target="_blank"
>puphpet.com&lt;/a> I&amp;rsquo;ve created two new vagrant configs, the first is for Apache the second is for Nginx.&lt;/p>
&lt;h2 class="relative group">The Changes
&lt;div id="the-changes" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#the-changes" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;ul>
&lt;li>Removed xhprof and dot file support&lt;/li>
&lt;li>Added an easier way to provision new vhosts and dbs.&lt;/li>
&lt;li>Added drush&lt;/li>
&lt;/ul>
&lt;h2 class="relative group">Internals
&lt;div id="internals" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#internals" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;ul>
&lt;li>Ubuntu 12.04&lt;/li>
&lt;li>PHP 5.3&lt;/li>
&lt;/ul>
&lt;h2 class="relative group">Usage
&lt;div id="usage" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#usage" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git clone git@github.com:digital006/drupaldev-nginx.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir sites
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">vagrant up
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 class="relative group">Links
&lt;div id="links" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#links" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>&lt;a
href="https://github.com/digital006/drupaldev-nginx"
target="_blank"
>https://github.com/digital006/drupaldev-nginx&lt;/a>&lt;/p>
&lt;p>&lt;a
href="https://github.com/digital006/drupaldev"
target="_blank"
>https://github.com/digital006/drupaldev&lt;/a>&lt;/p>
&lt;p>Hope these are useful to others.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Theorycrafting Drupal Deployment Via Bittorrent</title><link>https://mikebell.io/posts/theorycraftin-drupal-deployment-via-bittorrent/</link><pubDate>Sun, 09 Jun 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/theorycraftin-drupal-deployment-via-bittorrent/</guid><description>
&lt;p>There was an article floating around a few weeks ago about deploying large scale applications to multiple servers through bittorrent. I remember being at a talk by a Facebook developer who mentioned they did the same. I figured I&amp;rsquo;d put some thought into how it could be done at a practical level for Drupal sites.&lt;/p>
&lt;p>Tools Needed:&lt;/p>
&lt;ol>
&lt;li>Jenkins - &lt;a
href="http://jenkins-ci.org/"
target="_blank"
>http://jenkins-ci.org/&lt;/a>&lt;/li>
&lt;li>mktorrent - &lt;a
href="http://mktorrent.sourceforge.net/"
target="_blank"
>http://mktorrent.sourceforge.net/&lt;/a>&lt;/li>
&lt;li>rtorrent/libtorrent - &lt;a
href="http://libtorrent.rakshasa.no/"
target="_blank"
>http://libtorrent.rakshasa.no/&lt;/a>&lt;/li>
&lt;li>ocelot/gazelle - &lt;a
href="https://what.cd/gazelle/"
target="_blank"
>https://what.cd/gazelle/&lt;/a>&lt;/li>
&lt;/ol>
&lt;h2 class="relative group">Jenkins
&lt;div id="jenkins" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#jenkins" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Jenkins can be used to tie all the separate tools together.&lt;/p>
&lt;h2 class="relative group">mktorrent
&lt;div id="mktorrent" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#mktorrent" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>A cli tool to build .torrent files which can be pushed off to remote servers. This can integrate with Jenkins to build the torrent based of Jenkins variables.&lt;/p>
&lt;h2 class="relative group">rtorrent/libtorrent
&lt;div id="rtorrentlibtorrent" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#rtorrentlibtorrent" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>This is a command line torrent client, it can be setup to watch from a directory on the remote server. It then starts downloading files once a new torrent is places into the watch directory.&lt;/p>
&lt;h2 class="relative group">Ocelot/Gazelle
&lt;div id="ocelotgazelle" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#ocelotgazelle" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>High performance bittorrent tracker and web front end. This can be used to manage connections between all your web front ends.&lt;/p>
&lt;h2 class="relative group">Sample Workflow
&lt;div id="sample-workflow" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#sample-workflow" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;ol>
&lt;li>Developer pushes code to specific git branch&lt;/li>
&lt;li>Jenkins fires a build to pull down the latest code (Build 1)&lt;/li>
&lt;li>After Build 1 finishes mktorrent runs to package a .torrent file (Build 2)&lt;/li>
&lt;li>Torrent file is published to Gazelle (Build 2)&lt;/li>
&lt;li>After Build 2 finishes torrent file is pushed to all remote servers&lt;/li>
&lt;li>Each rtorrent instances starts download of files&lt;/li>
&lt;/ol>
&lt;h2 class="relative group">Issues
&lt;div id="issues" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#issues" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Things become a bit complex once the files have been distributed via torrents, my main concern would be how to reliably switch over to the new files once the download has completed. rtorrent does have the ability to issue commands once a download has finished but I&amp;rsquo;m unsure whether it could potentially run an external script.&lt;/p>
&lt;p>Drupal is small (averaging 16-30mb for a normal site Drupal 7) so bittorrent isn&amp;rsquo;t the most effective method of distributing a codebase.&lt;/p>
&lt;h2 class="relative group">Benefits
&lt;div id="benefits" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#benefits" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>Error Detections - Ability to reliably say you have exactly what&amp;rsquo;s expected
Speed - All web server will be providing upstream so in theory the only slow part will be disk IO and downstream connection.&lt;/p>
&lt;p>Overall this is an interesting thought experiment would quite like to try it out one day.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>An update to DrupalCamp 2013</title><link>https://mikebell.io/posts/an-update-to-drupalcamp-2013/</link><pubDate>Sat, 20 Apr 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/an-update-to-drupalcamp-2013/</guid><description>
&lt;p>There&amp;rsquo;s no easy way to put this but as of this post I&amp;rsquo;m withdrawing from organising DrupalCamp NW 2013.&lt;/p>
&lt;p>A lot of things have changed over the past 4 months some good some not so. I intend to spend as much time with my friends and family and avoid the stress of organising the event.&lt;/p>
&lt;p>Where does this leave the event? Pretty much in the same place as it was a few months ago, I&amp;rsquo;d love for more people to step up and take charge of the event. Nothing would make me happier than attending DCNW 2013 as an attendee for a change! Hell I might actually see some sessions.&lt;/p>
&lt;p>If you would like to get involved then please come along to the next NWDUG (7pm 1st May at Madlab) or get in touch with either me or Phil Norton.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Testing with Codeception and Drupal Projects</title><link>https://mikebell.io/posts/testing-with-codeception/</link><pubDate>Fri, 12 Apr 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/testing-with-codeception/</guid><description>
&lt;p>As part of my increased like of agile development and the control it gives you over your estimates and deliverables I&amp;rsquo;ve become increasingly aware of the horrible fact our code coverage sucks. There&amp;rsquo;s no real way to sugar coat it we don&amp;rsquo;t do proper testing, it&amp;rsquo;s bugged me for years.&lt;/p>
&lt;h2 class="relative group">Technical Debt
&lt;div id="technical-debt" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#technical-debt" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>I first read of technical debt over 5 years at my previous job, the basics of technical debt are that every hack/bodge job will bite you in the ass and you will spend more time fixing things in the long run that implementing it correctly. Now this is where agile comes in, with better estimations it allows you to factor in more unknowns, break down user stories into smaller more achievable tasks and ultimately give you a higher level of what is to be achieved.&lt;/p>
&lt;h2 class="relative group">With smaller tasks comes great responsibility
&lt;div id="with-smaller-tasks-comes-great-responsibility" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#with-smaller-tasks-comes-great-responsibility" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>When you break down each user story into a task it gives you a clear set of deliverables, now both the user and developer are clear on what needs to be achieved. Now with this method there&amp;rsquo;s no more &amp;ldquo;that was way too ambiguous&amp;rdquo;, you should now exactly what has to be delivered. So on completion of that test how do you confidently say it&amp;rsquo;s complete? There are two ways:&lt;/p>
&lt;ol>
&lt;li>Suck it and see, mark task as complete and let client figure it out&lt;/li>
&lt;li>Test the thing and test it hard and repeatedly.&lt;/li>
&lt;/ol>
&lt;h2 class="relative group">Over and over and over and over again
&lt;div id="over-and-over-and-over-and-over-again" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#over-and-over-and-over-and-over-again" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>So now you know what you have to deliver, you should test it. Here&amp;rsquo;s where codeception comes in, it&amp;rsquo;s a framework that allows you to quickly (and I mean quickly!) write acceptance testing for you application. It also integrates with other types of testing (e.g. unit tests) but lets start small.&lt;/p>
&lt;p>With each task you should always create a test, each test should actually test functionality, remember don&amp;rsquo;t test for the sake of it!&lt;/p>
&lt;h2 class="relative group">Getting down to it
&lt;div id="getting-down-to-it" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#getting-down-to-it" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;ol>
&lt;li>Install it - &lt;a
href="http://codeception.com/install"
target="_blank"
>http://codeception.com/install&lt;/a>&lt;/li>
&lt;li>Create your fist acceptance test:
&lt;code>codecept.phar generate:cept acceptance DrupalUserLogin&lt;/code>&lt;/li>
&lt;li>Write your first test:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-php" data-lang="php">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$I&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">WebGuy&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$scenario&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$I&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="na">wantTo&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;Ensure Drupal Login Works&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$I&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="na">amOnPage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;/user&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$I&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="na">fillField&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;edit-name&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;digital&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$I&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="na">fillField&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;edit-pass&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;THIS IS MY REAL PASS&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$I&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="na">click&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;edit-submit&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$I&lt;/span>&lt;span class="o">-&amp;gt;&lt;/span>&lt;span class="na">see&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;digital&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="o">&amp;lt;/&lt;/span>&lt;span class="nx">code&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="4">
&lt;li>Define your site (tests/acceptance.suite.yml):&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-php" data-lang="php">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">class_name&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="nx">WebGuy&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">modules&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">enabled&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="nx">PhpBrowser&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">WebHelper&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">config&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">PhpBrowser&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">url&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;drupal.org&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="5">
&lt;li>Run the badger! - &lt;code>php codecept.phar run&lt;/code>&lt;/li>
&lt;li>Bask in the glory of your first test.&lt;/li>
&lt;/ol>
&lt;p>There it is, dead easy to do! There&amp;rsquo;s no reason you shouldn&amp;rsquo;t implement this for every task in your sprint backlog.&lt;/p>
&lt;h2 class="relative group">Where to go from here?
&lt;div id="where-to-go-from-here" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#where-to-go-from-here" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>After playing around with this for a few hours I seem to be doing the same thing. Each test requires me to login as I don&amp;rsquo;t think each test environment shares session/cookies. I need to figure out a way of creating a codeception module which allows you to plug in a drupal testing user (ideally multiple so you can test each role) and then all the you have to do is call a function which executes the above steps to confirm your logged in before testing authenticated behaviour.&lt;/p>
&lt;p>Something along the lines of:&lt;/p>
&lt;p>&lt;code>$I-&amp;gt;drupalLogin('editor');&lt;/code>&lt;/p>
&lt;h2 class="relative group">Why will this work?
&lt;div id="why-will-this-work" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#why-will-this-work" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>When you initially set out estimation of each story you should add an extra 5-10% for testing. This way you can cover the additional time taken to write these tests. Trust me it&amp;rsquo;s worth it in the long run!&lt;/p>
&lt;h2 class="relative group">Update 20/05/13
&lt;div id="update-200513" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#update-200513" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h2>
&lt;p>My colleague Paul Byrne has posted a second part to this article with more information - &lt;a
href="http://paul.leafish.co.uk/articles/code/more_testing_with_codeception_and_drupal_projects"
target="_blank"
>http://paul.leafish.co.uk/articles/code/more_testing_with_codeception_and_drupal_projects&lt;/a> - Check it out.&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Must have Chrome tools for Drupal Admin</title><link>https://mikebell.io/posts/must-have-chrom-tools-for-drupal-admin/</link><pubDate>Wed, 13 Feb 2013 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/must-have-chrom-tools-for-drupal-admin/</guid><description>
&lt;p>Here are some really handy tools for when you have to deal with Drupals admin interface:&lt;/p>
&lt;p>Autofill - &lt;a
href="https://chrome.google.com/webstore/detail/nlmmgnhgdeffjkdckmikfpnddkbbfkkk"
target="_blank"
>https://chrome.google.com/webstore/detail/nlmmgnhgdeffjkdckmikfpnddkbbfkkk&lt;/a>&lt;/p>
&lt;p>Automatically fill out forms, great for testing node/add forms with specific sets of data, can store profiles for use on multiple sites.&lt;/p>
&lt;p>Edit This Cookie - &lt;a
href="https://chrome.google.com/webstore/detail/fngmhnnpilhplaeedifhccceomclgfbg"
target="_blank"
>https://chrome.google.com/webstore/detail/fngmhnnpilhplaeedifhccceomclgfbg&lt;/a>&lt;/p>
&lt;p>Excellent tool for checking out cookies on a site, useful when testing SSOs.&lt;/p>
&lt;p>Link Clump - &lt;a
href="https://chrome.google.com/webstore/detail/lfpjkncokllnfokkgpkobnkbkmelfefj"
target="_blank"
>https://chrome.google.com/webstore/detail/lfpjkncokllnfokkgpkobnkbkmelfefj&lt;/a>&lt;/p>
&lt;p>Right click and highlight a bunch of links then open them up in new tabs, more helpful than you&amp;rsquo;d think when having to test n number of pages during a migration.&lt;/p>
&lt;p>HTTP Headers - &lt;a
href="https://chrome.google.com/webstore/detail/hplfkkmefamockhligfdcfgfnbcdddbg"
target="_blank"
>https://chrome.google.com/webstore/detail/hplfkkmefamockhligfdcfgfnbcdddbg&lt;/a>&lt;/p>
&lt;p>Handy for checking whether pages are being served via Varnish of Drupal Cache. Also great for checking the IP of a server on a HA setup (if setup to output to headers).&lt;/p>
&lt;p>Easy Check - &lt;a
href="https://chrome.google.com/webstore/detail/ldopaogbegnhconlboidfjcmidndkbeg"
target="_blank"
>https://chrome.google.com/webstore/detail/ldopaogbegnhconlboidfjcmidndkbeg&lt;/a>&lt;/p>
&lt;p>Easiest way to manage Drupals permissions page, click on a checkbox and then drag your mouse and it will auto check all the ones you mouse over, no more clicking like a madman!&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Using Jenkins CI and Drupal</title><link>https://mikebell.io/posts/using-jenkins-ci-and-drupal/</link><pubDate>Tue, 24 Jan 2012 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/using-jenkins-ci-and-drupal/</guid><description>
&lt;p>While building my Drupal 7 profile I started playing around with Jenkins CI. My reasons for doing so were two fold:&lt;/p>
&lt;ol>
&lt;li>Code Quality
I believe in code quality, there are multiple tools out there that will analyse code and report back using various different metrics. CI allows me to run these metrics on a repeatable basis, if my code changes then the quality changes. This makes me a better developer overall.&lt;/li>
&lt;li>Repeatable Tasks
Jenkins can do anything you throw at it, why not throw at it all your boring repeatable tasks?&lt;/li>
&lt;/ol>
&lt;h1 class="relative group">Installation
&lt;div id="installation" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#installation" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;p>&lt;code>sudo apt-get install jenkins&lt;/code>&lt;/p>
&lt;p>Simple!&lt;/p>
&lt;h1 class="relative group">Configuration
&lt;div id="configuration" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#configuration" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;p>After installing Jenkins read &lt;a
href="https://wiki.jenkins-ci.org/display/JENKINS/Securing&amp;#43;Jenkins"
target="_blank"
>this&lt;/a>. Out the box Jenkins is open to the world so now might be a good idea to lock it down a bit.&lt;/p>
&lt;p>It&amp;rsquo;s also worth clicking around the admin screens and getting to grips with it, there are a lot of options when setting things up. Checkout the available module list, chances are your going to want to use a few. Installing these are as simple and point and click.&lt;/p>
&lt;h1 class="relative group">Useful plugins
&lt;div id="useful-plugins" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#useful-plugins" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;ul>
&lt;li>Git - of course this will come in really really handy&lt;/li>
&lt;li>Copy Artifact Plugin - Jenkins allows you to create artifacts (a zipped up copy of all files built) this comes in really handy when using multiple build steps, no more cloning repos a couple of times.&lt;/li>
&lt;li>Jenkins Doxygen Plug-in - does what is says on the tin, executes doxygen to create documentation.&lt;/li>
&lt;/ul>
&lt;h1 class="relative group">Example Jobs
&lt;div id="example-jobs" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#example-jobs" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;ol>
&lt;li>Testing drush make files&lt;/li>
&lt;li>Testing profile install using drush si&lt;/li>
&lt;li>Running cron, mostly used for getting notifications of failures and audit trail&lt;/li>
&lt;li>Building doxygen documentation&lt;/li>
&lt;/ol>
&lt;h1 class="relative group">Testing drush make files
&lt;div id="testing-drush-make-files" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#testing-drush-make-files" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;p>Sometimes drush make files take a while to run, I have a project that contains a lot of modules, it&amp;rsquo;s average build time is around 5 minutes. The project roughly needs rebuilding at least once or twice a week. So that&amp;rsquo;s 10 minutes time spent waiting, now imaging if the build fails, this could be due to a couple of reasons (mostly bad release numbers) but if it fails that 5 minutes wasted. Testing this make allows me to make changes to the make file without worrying about it, I usually just &lt;code>drush dl module&lt;/code> and update the make file manually for other developers to use. Overall this saves time and frustration over broken builds.&lt;/p>
&lt;p>This is also a great time to use the copy artifact plugin, this will save you having to redownload drupal core and contrib multiple times throughout your tests. Be sure to exclude any .git repos otherwise copying the artifact will fail due to permission errors. Artifacts are only saved when a successful build.&lt;/p>
&lt;h1 class="relative group">Testing profile install
&lt;div id="testing-profile-install" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#testing-profile-install" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;p>You can use drush to install profiles, this comes in really handy when your testing profiles in development. In my setup I have it chained so that every time a successful make file is built it then copies the files to a new workspace and runs &lt;code>drush si&lt;/code> this then captures all the output and exits if there are any errors in the install.&lt;/p>
&lt;h1 class="relative group">Running cron
&lt;div id="running-cron" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#running-cron" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;p>This is as simple as it sounds, you can setup a job to run cron on all your sites. This is a great tool as it provides an audit trail and notifications on any errors.&lt;/p>
&lt;h1 class="relative group">Building doxygen documentation
&lt;div id="building-doxygen-documentation" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#building-doxygen-documentation" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;p>Assuming you have a doxygen setup file configured for you project you can get Jenkins to build the documentation for you. If you add this into your build chain it&amp;rsquo;ll run whenever all the test you run are successful, this will save building docs for broken functionality.&lt;/p>
&lt;h1 class="relative group">Summary
&lt;div id="summary" class="anchor">&lt;/div>
&lt;span
class="absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100">
&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline" href="#summary" aria-label="Anchor">#&lt;/a>
&lt;/span>
&lt;/h1>
&lt;p>Repeating time consuming jobs over and over again is boring and distracts away from the focus of a project, by using Jenkins in my development setup it&amp;rsquo;s allowed me to focus on what&amp;rsquo;s important and monitor my errors (we all make them) without having to worry about them. There is a lot more you can do with Jenkins this is only a taster. I&amp;rsquo;m hoping to present next Wednesday at NWDUG in Manchester. Over the next few weeks I&amp;rsquo;ll expand on the example jobs above and post my setup and code used to achieve them.&lt;/p>
&lt;p>Thanks to &lt;a
href="https://twitter.com/#!/stewsnooze"
target="_blank"
>Stewart Robinson&lt;/a> for giving me a really good code sample and point in the right direction&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item><item><title>Jquery UI Tabs in Drupal 6</title><link>https://mikebell.io/posts/jquery-ui-tabs-in-drupal-6/</link><pubDate>Fri, 07 Aug 2009 00:00:00 +0000</pubDate><author>hello@mikebell.io (Mike Bell)</author><guid>https://mikebell.io/posts/jquery-ui-tabs-in-drupal-6/</guid><description>
&lt;p>A few months ago I saw an ubercart shop that had tabbed content on the product pages. Genius idea!&lt;/p>
&lt;p>As per rule 35 of drupal/the internet a module probably already exists but I decided to build this from scratch.&lt;/p>
&lt;p>It&amp;rsquo;s not a module so I won&amp;rsquo;t be releasing it, it&amp;rsquo;s more a proof of concept for me to learn some more drupal skills.&lt;/p>
&lt;p>My first attempt failed miserably attempting to shoe horn it into the default node.tpl.php. So rather than doing it this way I created a view to display node content based on the content type and an argument (something I&amp;rsquo;ve never really been too keen on). The thing I love most about Views is how it gives you everything you need to theme it. Within 2 minutes I had the code needed to make any modification to the views display. I then modified the row print to wrap a div tag around the three fields I&amp;rsquo;d created using CCK, I also created the list needed to fire the tabs.&lt;/p>
&lt;p>I&amp;rsquo;m new to the jQuery UI library so after reading up on tabs and looking at the source code I set about integrating everything I needed to get it to work, this included the div wrapping and list elements.&lt;/p>
&lt;p>The first real problem I encountered was the version of jQuery UI, it was the latest version and didn&amp;rsquo;t use the same version as Drupal does, after upgrading jQuery using the Update jQuery Module (#35 again!) and downloading the correct UI version I was set to go.&lt;/p>
&lt;p>The second problem was a bit obscure but easy to fix, the fields outputted by views were referenced as classes rather than IDs, after checking that they were unique therefore not breaking validity I changed the tpl.php file to use IDs, simple!&lt;/p>
&lt;p>Overall this was a neat little project something that I&amp;rsquo;ll use in other project definitely (including this site no doubt).&lt;/p>
&lt;p>Thanks for reading via RSS!&lt;/p>
&lt;p>Send me a message on &lt;a href="https://remotelab.uk/mikebell">Mastodon&lt;/a> or &lt;a href="mailto:hello@mikebell.io">email me&lt;/a>&lt;/p></description></item></channel></rss>