Developer Cloud Tools Ripe For Consolidation

A dogfight is evolving for developer cloud tools.

The dominant player recently has been GitHub, raising $400M… GitHub achieved developer mindshare by giving away free hosting to open source projects such as Rails.

A close follower of GitHub has been Atlassian, a strong enterprise tools vendor with products such as JIRA, that bought BitBucket and offered free private git hosting. Atlassian went public end of 2015.

Other startups in this space that were popular a few years ago but have lagged include Unfuddle and CodebaseHQ.

More recently GitLab attended Y-Combinator and gained funding, building on an open source UI with many of the features of GitHub.

Large public cloud (IaaS/PaaS) vendors are now increasingly encroaching on this space. Why? Because the trend towards dev-ops and infrastructure as code is bringing developers more and more into the realm of infrastructure management. Projects like Docker are driving increasing commoditization of cloud infrastructure. To create and capture value IaaS/PaaS vendors need to gain and hold developer mindshare by offering more and better tools.

Amazon AWS has added CodeCommit.

AWS’s strongest competitor, Microsoft Azure offers hosted Visual Studio with free private git hosting and kanban boards for small teams, an attractive option to developers already used to Microsoft’s ecosystem.

Similarly, IBM has Bluemix DevOps Services, f.k.a. JazzHub that includes Rational Team Concert.

Google has now added Source Repositories that sync with GitHub and BitBucket and include a browser based source editor.

Meanwhile innovation in the developer tools space has shifted from repository hosting and issue tracking to continuous integration, cloud IDEs and developer chat.

CI startups include Travis CI, Circle CI and CodeShip, which recently raised a $7M series A. Atlassian BitBucket recently added CI pipelines. AWS has added CodePipeline/CodeDeploy for CI/CD.

In the cloud IDE space the strongest player appears currently CodeEnvy (IBM?). AWS has acquired Cloud9 (interestingly Atlassian was an early investor and customer) and GitLab has announced a collaboration with Koding.

Chat has been getting lots of attention recently because of Slack. Atlassian acquired HipChat. GitLabs partnered with Mattermost. Gitter? Microsoft has Skype for Business.

Given the forces at work more consolidation seems likely. Will Atlassian and GitHub remain independent from AWS, Google or IBM?

sqlunit & dbUnit

Now that I have my database schema creation and maintenance automated with Incanto and dbMaintain I have been looking at testing tools for stored procedures. Perhaps the best known for Oracle PL/SQL are Feuerstein’s utPLSQL and subsequent Quest Code Tester for Oracle. Other options include plunit, PLUTO and ruby-pl-spec. My main requirement, however, has been to invoke tests from an Ant project continuously integrated using Hudson and for now I have started using sqlunit, which is both mature and portable across different databases, as well as allowing relatively simple testcases to be specified in entirely XML.

My build-common.xml now contains












classname="net.sourceforge.sqlunit.ant.SqlunitTask"
classpathref="sqlunit-lib"/>

In addition to sqlunit I’ve found
dbUnit to be a useful tool for complex data setup prior to running a test.
Initilization of the dbUnit ant task is done as follows:












classname="org.dbunit.ant.DbUnitTask"
classpathref="dbunit-lib"/>

Hudson

This week I’ve been upgrading from CruiseControl to Hudson.  CruiseControl has served well for the past eighteen months, completing hundreds of builds with only the occasional restart.  Once configured with a couple of XML files CruiseControl is low maintenance, but my impression is that now Thoughtworks is offering a commercial product it is no longer getting as much attention as its competitors.  Hudson in particular is an open source CI solution that has received good reviews, and with the need to configure new Maven projects I thought this a good time to switch.

The best way to use Hudson seems to be with a dedicated VM including any infrastructure required to test the project being built, in my case for example Java 6, Maven2 and a dedicated instance of Oracle XE.  Although it is possible to simply start Hudson from the command line it makes more sense to install it as a service, and this is exactly what the Debian/Ubuntu package does.  I use Hudson with a Nexus maven repository, with settings.xml stored in …/tools/_usr_share_maven2/conf/, so far it seems to be working well.

CruiseControl and Subversion

Getting started with CruiseControl is relatively straightforward, see http://confluence.public.thoughtworks.org/display/CC/Getting+Started+With+CruiseControl

To place an application on CruiseControl it should have an Ant script to build it. The application Ant script does not need to interact with Subversion. The source for the application including the Ant script should be checked into Subversion.

I started to install CruiseControl by downloading and compiling the source, but my version of ant was too old. Instead I downloaded the binary (which ironically includes a newer ant also):

su -
wget http://downloads.sourceforge.net/cruisecontrol/cruisecontrol-bin-2.7.2.zip
unzip -d /opt cruisecontrol-bin-2.7.2.zip

useradd --system --home /srv/cruisecontrol --create-home --gecos "System account to run CruiseControl" cruise
usermod -s /bin/ksh cruise
su – cruise
mkdir checkout logs artifacts
PATH=$PATH:/opt/subversion-1.3.2/bin/:/opt/cruisecontrol-bin-2.7.2
cruisecontrol.sh

Now we need to configure CruiseControl to monitor the Subversion repository. Create config.xml:


  
  
  
  
 
  
    
      
    
 
    
    
 
    
    
      
    
 
    
    
      
    
 
    
    
 
    
    
    
  

Build-myproj.xml contains Ant steps to checkout a clean copy of the application and build it:

To setup the dashboard, running at :8080

su - cruise cp /opt/cruisecontrol-bin-2.7.2/dashboard-config.xml . kill `cat cc.pid` cruisecontrol.sh