In the previous post CD with ArgoCD - One Repo To Rule Them All we discussed the use of a dedicated Repo for deployment. In this post, we will focus on how git-flow aligns perfectly with this setup. We will explore how day-to-day work for different personas can be smoothly integrated with git operations.
In Auryc we are using PolyRepo patterns for applications code.
Beyond that we have one GitOps repo to manage the desired state of the clusters, including applications and infrastructure.
The connection of app repos and GitOps is shown in the graph:
AppRepos focus on CI:
Desired State Repo focus on CD:
config and deploy apps using ArgoCD App pattern
App Repo → GitOps repo:
Github Actions is used for automations here. It will connect the application repos and deployment when new commits push to app repos’ branches.
It will call a repo dispatch event so the gitops repo will update the apps’ image with kustomization image override feature.

The core Git mapping is:
App Repo Head (of Branches) == App Running (in Environments)
Each applications repo has at least main & release branches, and they are synced with development & produciton cluster. The automation ensure the running app is using the HEAD of each branch. (And it’s done by updating the app hash in GitOps repo.)
Latest GitOps Repo == Latest Cluster State
The GitOps Repo track the state of all clusters. Including all infrastructure components and all applications. Different cluster are managed in different profiles.
With that, the git options on the applications repos is having new meanings:
main: make changes and push to development envmain → release : make production release