How to deploy process models in Camunda 8?

Hi all,

there a various ways to deploy a process model in Camunda 8:

  • the web modeler
  • the desktop modeler
  • a Zeebe Worker using the ZeebeClient interface
  • (possibly more)

Assuming that this should be automated for all stages (PROD/INT/…) based on the models which are contained in a Git Repository what are best practices?

I guess all process models could be in one Git Repo. Then we could use the CLI client zbctl to deploy the process models. Is this a good approach? Or should the process models be in version control at all!?

Assuming there are multiple business domains: each could be a separate Git Repository but then they would not have easy access to the process models to implement process tests.

So is it the best approach to have everything in one Git Repository? Then zbctl can deploy the process models and the business domains are in separate directories - each represented by one or more Zeebe workers.

Thanks for your support

Tobias

Yeah for sure i think this is the best option. Camunda 8 shouldn’t really be considered a code repo and if you’re treating your models like code ( so you’re making executable models) you should be using proper repositories and testing externally from Camunda 8.

Deployment then really depends on what you’re setup looks like.

Hi @Niall :slight_smile:

thanks - I guess the best practice for a java based environment is then to do it like in the good old Camunda 7 times: simply put the process model into the application and use the @ZeebeDeployment annotation.

I was probably unsure because quite a few Camunda 8 introductions simply deploy the model manually using the web modeler or desktop modeler.

Thanks

Tobias

1 Like

I think the goal of those documents is to get people up and running as fast as possible. so they tend to skip some steps. :slight_smile:

1 Like

@Niall How do you suggest for deploying through a pipeline

Using zeebe cli and deploying from a git repo, or having a micro service and deploying through java process

I am in camunda cloud saas

I think it depends a lot of what your current setup looks like.
As part of your pipeline i suppose you could have models committed to a repo, have tests run on the model and then if all tests pass deploy to Camunda 8 SaaS.

At the end of the day whether you’re deploying via Zeebe Cli or using a Java Client only matters with how easy it is for you to integrate into your existing system.

The best practice for this procedure is being hotly discussed within the team and we hope to release some kind of details that will help users understand the options better but it’s not available just yet.

1 Like

@Niall , thanks we just completed poc on saas and getting our head around cicd for camunda cloud. How do you define ‘have your test run for models’ . Is the zeebe-test unit test style testing is only way or do we have some example of end to end testing framework.

Usually the zeebe testing lib for JUnit is a pretty good.
Then i would suggest deploying the model to a Camunda 8 Cluster designated for Integration tests so that you can make sure that all of the systems you plan or orchestrate work as planned

Ok so we write our test using unit test library and run those test in intg/syst/uat cluster supplying respective env dependency and config. And we promote the build based on the test status. The good / only available option for us is to use the unit test library for testing models.

Right now i think it’s the best way of doing it, i’m not sure it’s the only way… but it’s the best supported way