Best practice for managing APS projects in Git and deploying across environments

cancel
Showing results for 
Search instead for 
Did you mean: 
jpotts
Professional

Best practice for managing APS projects in Git and deploying across environments

I am working with a customer on a project based on Alfresco Process Services 1.9.0.3. We are struggling with the best way to track changes to the project and deploying the project across environments.

Right now, we have everything checked into GitHub Enterprise. We have a folder where we export the app and unzip its XML and JSON files.

Then we have a separate folder for the JAR part of the project where we use a standard Maven-based build.

The challenges are:

1. When downloading the app, the process model and form model files in JSON are on one line. We've started getting in the habit of prettifying the JSON prior to checking in to source code control so that sensible diffs can be done to see what's changed between commits.

2. Updating an existing app can be problematic. The import sometimes fails. Or, if the import succeeds, the publish fails. In some cases, we have to delete everything before deploying, which then changes the app ID among other things. It is rare that it "just works".

3. In cases where we have to "delete everything" it is a massive pain. That's because deleting the app does not delete the items associated with the app (processes, forms, etc.). So one must first delete the app, then delete the parent processes, then the sub-processes, and then the forms. This is VERY time-consuming when you have more than a handful of processes and forms.

4. The modified date changes when processes haven't actually been modified. For example, maybe you want to look at an embedded form. You open the process in the designer, then open the form in the form editor. Then you close the form without saving and then close the process without saving. Now the process shows an updated modified date even though nothing was changed.

5. We have attempted to use the activiti-admin app to define our clusters in our dev, staging, and prod environments so that we can use the "deploy app" button and just point it to the cluster we want to deploy it to. Unfortunately, this rarely works, so we have abandoned it completely.

Those are the top five pain points. I'm wondering what others are doing? How are you tracking changes to your app? How do you go from dev to staging to prod?

Is this use case even considered by the APS team? If so, it is hard to believe that the product got through QA in the state that it is in. (I'm not trying to be rude, and I know there are a lot of people working hard on the product. I'm just wondering if our desire to have repeatable builds and deployments of APS apps across environments is a typical use case).

Jeff

3 Replies
openpj
Moderator
Moderator

Re: Best practice for managing APS projects in Git and deploying across environments

Hi Jeff,

have you tried to use APS SDK that I have released some weeks ago on my github account?

https://github.com/OpenPj/alfresco-process-services-project-sdk

This SDK includes all the enterprise services and dependencies of APS, you can implement your unit and integration test.

Finally you can take a look at the integration test example where you can see how to upload new applications programmatically.

It would be great receive contributions from the community Smiley Wink

We could also fork this project on the Order Of The Bee github account.

PJ

Piergiorgio Lucidi
https://www.open4dev.com

openpj
Moderator
Moderator

Re: Best practice for managing APS projects in Git and deploying across environments

 
jpotts
Professional

Re: Best practice for managing APS projects in Git and deploying across environments

Hi Piergiorgio, it is great to hear from you, old friend!

I have not seen that contribution, but I will take a look. It sounds like it might be very useful.

Jeff