Monday, 18 February 2013
Jenkins and the pain
If you know what is desperation and suffering - you know where I am at the moment. I've got my head around Jenkins. I was never a server guy or a CI expert but used it on many projects. And there is a point where you set it up for yourself or an official project. These are the times when I realize I know nothing.
So Jenkins is surely amazing to automate things. And true it's mostly used for CI and deployment purposes. I've been checking out the plugin ecosystem comes with Jenkins and it's amazing. Hundreds of really useful additions.
And I've fallen into the same issue that makes me crazy each single time. I used the system often to run tests and generate reports. You can get the summary, charts, recorded videos and individual test reports and lot more. And I couldn't even get a single one of them. I have a properly working Selenium environment. I'm using the PHP remote controller and PHPUnit Selenium subclasses. There are all running just fine in any environment. But that's all. I can generate many fancy reports - and thanks God Jenkins needs the only one I cannot provide: HTML. Google was kind to explain me that it's even a satanic byproduct or I can use some really enterprise wrapper tools which probably would cost my life to setup.
Jenkins by default has at least a dozen of different plugins supporting Selenium workflow. Either their documentation mentioned that it's only working with HTML tests or was lacking of any explanation.
And in the meantime I realized what's my problem. I've found exclusively special use cases. A combination of certain elements. And of course you either change your strategy or look for another help. Somehow I feel that I want to stick with the PHP binding. It would a pain to edit the pure HTML test harness.
Sure, I could go to forums or StackOverflow but it's so frustrating when a simple task - that any developer could solve in half an hour - takes me weeks to find out. So no, not this time. I'll make this work no matter what.
Well, it would be a shame to leave you with all this negative attitude. It's not all that bad. Jenkins on it's own is really handy. There are native packages you can install - also for OS-X - and I could install it without any problems. I did it also on a virtual machine (why not) and works fine though any package managers. It runs as a service and the serves access works without any problem. Packages can be installed and it's really simple to create jobs that are doing elementary operations.
Then you have bigger challenges to select the plugins and wire them together. I'm wondering if I can use my local Jenkins to install Drupal sites quickly (full core and contrib fetch plus install profile) - or doing general maintenance operations.
Honestly I hate going to sleep without results. It's like the same feeling when you break your favorite toy or realize Metallica has a new album. Except - except the day when you solve the problem - and I swear it resets your brain so that time you've been struggling seems to be never happened. Splendid.