1

We are working with a ERP system (called Odoo, but that does not matter so much). It consists of many building blocks. Some of this modules/addons are dependent on others, some are standalone, but overall they all makeup the whole system.

Problem is that we would like to track changes not only to code itself but also where it is deployed.

We have many different servers where different instances of this ERP are working. With different set of modules and different versions. At the same time.

Currently we store each module in a separate repository. We also have repositories where we store specific deployments. We are linking modules inside deployment repositories using git submodules.

How would you go about tracking where each module and in what version is deployed? One could just create excel file where all the deployments would be listed. But it is not the way.

I'm not even asking about proper CI\CD automation as I have no idea how to start. I just picked this topic as a starting point.

I've seen Deployments tab inside Gitlab but it is working only inside single repository. We would need something like this for the whole group. Assuming we could setup a pipeline that would actually deploy the code.

3
  • 1
    Hi! I feel there should be some clarification on what you mean by "deployment" here. Are you referring a module in deployment for a specific customer? In a specific zone? to a particular infrastructure? Could you elaborate please what exatly you need to track? Sep 23, 2021 at 12:49
  • Sure! As a deployment we are referring to an installation of particular module inside customer's instance. So the same module could be installed for many different customers and we think about it as many different deployments.
    – AnJ
    Sep 23, 2021 at 13:10
  • it's difficult to understand even what exactly you're deploying and where. Do you use docker containers? Do you use some orchestration tool like kubernetes? If your ERP system is built to single container, and you have separate modules in different repos, then you need heavily custom CI's in here. Actually I'd probably put everything to single repo with different worktrees per module. We need to see your repo structure first.
    – holms
    Oct 3, 2021 at 1:28

2 Answers 2

2

for a short or one liner you need gitops, and argocd is a proper tool to do it

See we were using same with #axelor, we need to maintain the version of each module and environment separately so we need to git these rather the excel file methodology.

Argocd is platform and definition from their website

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.

How you will do it: You have to link all your repos inside the argocd as one application, and than create your deployment pipelines according to env, It have nice UI and can be done via command line too.

If you need further details please don't hesitate to comment here

2
  • 2
    hello! Could you please expand on your response with some reference and background to support this statement? Thanks! Sep 23, 2021 at 12:46
  • sure, I will edit my answer Sep 24, 2021 at 1:25
0

While I also vouch for Argo CD and GitOps, it is important to mention that Argo CD alone is not enough to track deployments and versioning, especially across multiple environments.

We are building Reliza Hub to bridge that gap - see my write-up here about a sample project and how it allows you track different environments and drifts - https://itnext.io/building-kubernetes-cicd-pipeline-with-github-actions-argocd-and-reliza-hub-e7120b9be870

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.