Best strategy to deploy Process via Jenkins

I would like to know the best strategy to deploy my Processes via Jenkins. My deployment artifact consists a set of BPMN, DMN and JavaScript files. There are no Java classes. Also, there are so many common JavaScript files that are widely used across process applications.

As per my analysis there are the two options to deploy.

  1. Deploy via REST:

Here the drawback I could find is, I am not able to do a change only deployment. I have call activities that includes other bpmn files with binding as “latest”. Since these included bpmn files uses script tasks with Script type as “External resource” (referenced with deployment://print.js) , whenever I do a change only deployment, it is not fetching the script files referenced with “deployment://”. I also tried without giving “deployment://”, but it is not working. So, I am unable make a change only deployment for bpmn files that reference external script files as well as script files alone.

  1. Deploy via Process Application:

Here I was able to do a change only deployment for child workflows included in the call activity as well as script files referenced with external resources (without “deployment://”) independently.

However, in a .NET environment we prefer to use deployment via REST API.

Is there a way we can achieve the same with REST API.

Could someone please help me out on this. I was able to find a solution provided by @StephenOTT
in the post Automated Camunda Deployments - CI for process files - Shared Engine - #4 by thorben. But it also poses the same issue with REST API deployment. ie can’t make the change only deployment with script files.

Hi @prasadps,

you can deploy more than one file in a single deployment.

If you reference files within the deployment, you have to deploy all files everytime. Not just the changed ones. And set the enable-duplicate-filtering and deploy-changed-only to false (or remove them from the payload and keep the default values).

Hope this helps, Ingo

Thanks @Ingo_Richtsmeier for your valuable inputs.

What is the difference between enable-duplicate-filtering and deployed-changed-only. From the documentation it seems both serves the same purpose. I am pretty familiar with deployed-changed-only.

Also while deploying as a process application , I am able to deploy referenced files alone , similarly the changed bpmn files (even though it has referenced files). So would this be the better option than REST API deployment

Thanks n Regards
Prasad