{{- range $app_name, $app_attr := .Values.gitea_applications -}} {{- $org := default "arcodange-org" $app_attr.org -}} --- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: {{ $app_name }} namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io {{- with $app_attr.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: project: default source: repoURL: https://gitea.arcodange.lab/{{ $org }}/{{ $app_name }} targetRevision: HEAD path: chart destination: server: https://kubernetes.default.svc namespace: {{ $app_name }} syncPolicy: {{- if $app_attr.syncPolicy }} {{- toYaml $app_attr.syncPolicy | nindent 4 }} {{- else }} automated: prune: true selfHeal: true {{- end }} syncOptions: - CreateNamespace=true {{- /* Non-prod environments (ADR-0002 elision rule): one extra Application per env under `.envs`. Each renders the SAME repo + chart, overlaid with values-.yaml, into the `-` namespace. Apps with no `envs` key render nothing extra here, so prod-only apps are byte-identical. */ -}} {{- range $env_name, $env_attr := $app_attr.envs }} --- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: {{ $app_name }}-{{ $env_name }} namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io {{- with $env_attr.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: project: default source: repoURL: https://gitea.arcodange.lab/{{ $org }}/{{ $app_name }} targetRevision: HEAD path: chart helm: valueFiles: - values.yaml - values-{{ $env_name }}.yaml destination: server: https://kubernetes.default.svc namespace: {{ $app_name }}-{{ $env_name }} syncPolicy: {{- if $env_attr.syncPolicy }} {{- toYaml $env_attr.syncPolicy | nindent 4 }} {{- else }} automated: prune: true selfHeal: true {{- end }} syncOptions: - CreateNamespace=true {{- end }} {{ end }}