This controller is an ArgoCD addon that accurately tracks last commits that actually changed the application (Change Revision). It is mostly usefull when several Applications are looking at different paths at the same repository/branch (monorepos) .
To learn about the monorepo controller please go to the Project documentation.
Please see also the original Proposal for project motivation, overall architecture and description the program functionality.
This is a newly created Argoproj-Labs project. It is WIP and it may not be fully production ready yet.
USE AT YOUR OWN RISK!
The controller should be installed into the namespace of an
existing ArgoCD instance (the argocd namespace in most cases).
One quick way to try it is to use command like this:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj-labs/argocd-monorepo-controller/refs/heads/main/manifests/install.yaml
Or use kustomize to install kustomization from
https://github.com/argoproj-labs/argocd-monorepo-controller/tree/main/manifests
See sample triggers and templates in samples/notifications.
The project is based on essencially the same Makefile and other Argocd infrastructure, so Argocd Developer Documentation can be currently used.
One quick way to build and run it locally is:
kubectl config set-context --current --namespace=argocd # set current context to the argocd namespace
make cli-local # build the program binary
make run # uses goreman to both monorepo controller and its repo-server
You can reach the developers via:
-
Q: Why call it "Monorepo Controller"? It’s not just for monorepos! This issue can happen anytime another commit lands during the polling period, even if the file is not related to the generation of Application manifests.
A: Good point! We picked the name because it's catchy and easy to remember. It also reflects the scenario where users encounter this problem most often: working within a monorepo.