Pushing Information from External Systems into ElectricCommanderMay 1, 2012 — Jonathan Thorpe
ElectricCommander provides integrations to over 100 products. This provides immense value to many of our customers and makes the process of controlling other systems from within ElectricCommander easy. But what if you need another system to send information to ElectricCommander?
Imagine a situation that we refer to as Jenkins sprawl. Hudson/Jenkins sprawl is when there are multiple teams in an organization are all maintaining their own instances of Hudson/Jenkins which perform independently to perform tasks. Much like the well known VM sprawl, managing Jenkins sprawl can become a management nightmare.
There is a point when an organization outgrows Jenkins and needs to provide end-to-end automation and data collection. The answer doesn’t need to be to persuade every individual team using Hudson/Jenkins in their lab or on a desktop to migrate to another solution. There is another, less painful way.
ElectricCommander makes it easy to embrace the existing Hudson/Jenkins instances, allowing them to do what they do well–perform team level continuous integration (CI). ElectricCommander can take care of the rest of the tasks needed for end-to-end enterprise scale automation.
The ElectricCommander command line interface is the key to this. When a build in Hudson/Jenkins starts, invoke ectool from the build script to tell ElectricCommander a build has started and to initiate a workflow process in Commander. When the build finishes, use ectool to tell ElectricCommander to move the process workflow to the next stage. This allows teams to continue using small scale CI systems, while taking full advantage of the enterprise class features of ElectricCommander.
The approach doesn’t just apply to Hudson/Jenkins, nor just for CI processes. Having the ability to control ElectricCommander easily from external tools is a feature I find truly compelling, especially as the command line interface and perl API are fully featured, providing much more than a limited subset of calls necessary to automate your system.