Question

I'm working in DevOps space and currently supporting overly complicated CI system. It purpose is test & certify multiple Java artifacts against tests for every single artifacts and artifacts against each other. We have multiple Jenkins instances and complicated custom workflows, but they share the same limitation: lack of resources control. We ended up with a bunch of purely technical Jenkins jobs to deal with those limitations but they aren't perfect and initial workflow became too bloated.

Here I'm asking your expertise about applicability of Activiti BPM engine to CI process.

We have following issues with current process:

  • Cloud nodes can be handed-over from one Jenkins job to another. If workflow became terminated in the middle (let's say functional tests failed on newly built artifact) then we have to free those nodes.
  • Jobs can consume multiple resources by themselves - databases, environments of multiple nodes, etc. Those resources must be freed up when workflow will be finished

Ideally, we should be able to define workflow steps in some DSL and bind resources to those steps. Later on, during workflow execution, it will be possible for workflow engine to determine when the resources will first be required and request them just before that step (according to the resource type) from appropriate pool / provider.

After each step will be finished, workflow engine will what I call "garbage collection" over resources. It could calculate (based on provided DSL) list of steps which still are reachable from current state and a list of resources which are binded to those steps. After that it could be possible to construct a list (currently allocated resources MINUS future required resources). That list will go to garbage collection.

With a such "garbage collection" I'm trying to avoid overly complicated logic of manual resource lifecycle control which will be embedded into workflow definition and will bloat it. I want to have clear and well understandable (and easily supported) workflows.

Do you think that it can be done easily with Activiti or any other BPM engine?

Was it helpful?

Solution

Andrev,

this can be implemented with limited effort. We have created similar workflows for QA environments using the open source BPMS Eclipse Stardust http://www.eclipse.org/stardust/

Best regards

Rob

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top