From 86a6b7965b6f7d38cfe1259d965cde1390c86aa1 Mon Sep 17 00:00:00 2001 From: Luis Arrieta Date: Tue, 25 Nov 2025 06:02:15 -0500 Subject: [PATCH 01/10] =?UTF-8?q?=F0=9F=94=A7=20feature/apps-of-apps:=20Up?= =?UTF-8?q?date=20App=20of=20Apps=20New=20Apps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app-of-apps/my-app-list/argo-workflows.yml | 32 ++++++++++++++++++++++ app-of-apps/my-app-list/kubeview.yml | 32 ++++++++++++++++++++++ app-of-apps/root-app/my-application.yml | 2 +- 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 app-of-apps/my-app-list/argo-workflows.yml create mode 100644 app-of-apps/my-app-list/kubeview.yml diff --git a/app-of-apps/my-app-list/argo-workflows.yml b/app-of-apps/my-app-list/argo-workflows.yml new file mode 100644 index 0000000000..bd43d9c93d --- /dev/null +++ b/app-of-apps/my-app-list/argo-workflows.yml @@ -0,0 +1,32 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: argo-workflows + # You'll usually want to add your resources to the argocd namespace. + namespace: argocd + # Add a this finalizer ONLY if you want these to cascade delete. + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + # The project the application belongs to. + project: default + + # Source of the application manifests + source: + repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git + targetRevision: HEAD + path: ./app-of-apps/manifests + + # Destination cluster and namespace to deploy the application + destination: + server: https://kubernetes.default.svc + namespace: argo-workflows + + # Sync policy + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field. + prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ). + selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ). + diff --git a/app-of-apps/my-app-list/kubeview.yml b/app-of-apps/my-app-list/kubeview.yml new file mode 100644 index 0000000000..91cb797c23 --- /dev/null +++ b/app-of-apps/my-app-list/kubeview.yml @@ -0,0 +1,32 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: kubeview + # You'll usually want to add your resources to the argocd namespace. + namespace: argocd + # Add a this finalizer ONLY if you want these to cascade delete. + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + # The project the application belongs to. + project: default + + # Source of the application manifests + source: + repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git + targetRevision: HEAD + path: ./app-of-apps/manifests + + # Destination cluster and namespace to deploy the application + destination: + server: https://kubernetes.default.svc + namespace: kubeview + + # Sync policy + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field. + prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ). + selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ). + diff --git a/app-of-apps/root-app/my-application.yml b/app-of-apps/root-app/my-application.yml index a5bc9b98c3..3fb03a98eb 100644 --- a/app-of-apps/root-app/my-application.yml +++ b/app-of-apps/root-app/my-application.yml @@ -13,7 +13,7 @@ spec: # Source of the application manifests source: - repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git + repoURL: https://github.com/larrietacohen/gitops-cert-level-2-examples.git targetRevision: HEAD path: ./app-of-apps/my-app-list From 828ffcdbbe855de1e461fd67aee6273aeb7799f1 Mon Sep 17 00:00:00 2001 From: Luis Arrieta Date: Thu, 8 Jan 2026 04:19:53 -0500 Subject: [PATCH 02/10] =?UTF-8?q?=F0=9F=94=A7=20feature/apps-of-apps:=20Up?= =?UTF-8?q?date=20Applications=20Set?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../my-application-sets/many-apps.yml | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 application-sets/my-application-sets/many-apps.yml diff --git a/application-sets/my-application-sets/many-apps.yml b/application-sets/my-application-sets/many-apps.yml new file mode 100644 index 0000000000..31bbcc9793 --- /dev/null +++ b/application-sets/my-application-sets/many-apps.yml @@ -0,0 +1,38 @@ +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: many-apps-application-set + namespace: argocd +spec: + generators: + - git: + repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git + revision: HEAD + directories: + - path: application-sets/example-apps/* + template: + metadata: + name: '{{path.basename}}' + spec: + # The project the application belongs to. + project: default + + # Source of the application manifests + source: + repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git + targetRevision: HEAD + path: '{{path}}' + + # Destination cluster and namespace to deploy the application + destination: + server: https://kubernetes.default.svc + namespace: '{{path.basename}}' + + # Sync policy + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field. + prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ). + selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ). + From d97e535bdc564ff30494adb771012321e1ce05c1 Mon Sep 17 00:00:00 2001 From: Luis Arrieta Date: Thu, 8 Jan 2026 04:37:30 -0500 Subject: [PATCH 03/10] =?UTF-8?q?=F0=9F=94=A7=20feature/apps-of-apps:=20Up?= =?UTF-8?q?date=20Applications=20Set=20Multiple=20Cluster?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../single-app-multiple-clusters.yml | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 application-sets/my-application-sets/single-app-multiple-clusters.yml diff --git a/application-sets/my-application-sets/single-app-multiple-clusters.yml b/application-sets/my-application-sets/single-app-multiple-clusters.yml new file mode 100644 index 0000000000..db9a363033 --- /dev/null +++ b/application-sets/my-application-sets/single-app-multiple-clusters.yml @@ -0,0 +1,34 @@ +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: multi-cluster-application-set + namespace: argocd +spec: + generators: + - clusters: {} # Automatically use all clusters defined within Argo CD + template: + metadata: + name: '{{name}}-billing-app' + spec: + # The project the application belongs to. + project: default + + # Source of the application manifests + source: + repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git + targetRevision: HEAD + path: ./application-sets/manifests + + # Destination cluster and namespace to deploy the application + destination: + server: '{{server}}' + namespace: billing + + # Sync policy + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field. + prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ). + selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ). + From c8271bea7dee09aef9d5a84bec45efbe7f5fc8fb Mon Sep 17 00:00:00 2001 From: Luis Arrieta Date: Thu, 8 Jan 2026 04:49:33 -0500 Subject: [PATCH 04/10] =?UTF-8?q?=F0=9F=94=A7=20feature/apps-of-apps:=20Up?= =?UTF-8?q?date=20Applications=20Set=20Multiple=20Cluster=20Many=20Apps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../many-apps-many-cluster.yml | 32 +++++++++++++++ .../my-application-sets/many-apps.yml | 38 ------------------ .../single-app-many-times.yml | 39 ------------------- .../single-app-multiple-clusters.yml | 34 ---------------- 4 files changed, 32 insertions(+), 111 deletions(-) create mode 100644 application-sets/my-application-sets/many-apps-many-cluster.yml delete mode 100644 application-sets/my-application-sets/many-apps.yml delete mode 100644 application-sets/my-application-sets/single-app-many-times.yml delete mode 100644 application-sets/my-application-sets/single-app-multiple-clusters.yml diff --git a/application-sets/my-application-sets/many-apps-many-cluster.yml b/application-sets/my-application-sets/many-apps-many-cluster.yml new file mode 100644 index 0000000000..488e9e16c8 --- /dev/null +++ b/application-sets/my-application-sets/many-apps-many-cluster.yml @@ -0,0 +1,32 @@ +apiVersion: argoproj.io/v1alpha1 +kind: ApplicationSet +metadata: + name: cluster-git +spec: + generators: + # matrix 'parent' generator + - matrix: + generators: + # git generator, 'child' #1 + - git: + repoURL: https://github.com/argoproj/argo-cd.git + revision: HEAD + directories: + - path: applicationset/examples/matrix/cluster-addons/* + # cluster generator, 'child' #2 + - clusters: + selector: + matchLabels: + argocd.argoproj.io/secret-type: cluster + template: + metadata: + name: '{{path.basename}}-{{name}}' + spec: + project: '{{metadata.labels.environment}}' + source: + repoURL: https://github.com/argoproj/argo-cd.git + targetRevision: HEAD + path: '{{path}}' + destination: + server: '{{server}}' + namespace: '{{path.basename}}' diff --git a/application-sets/my-application-sets/many-apps.yml b/application-sets/my-application-sets/many-apps.yml deleted file mode 100644 index 31bbcc9793..0000000000 --- a/application-sets/my-application-sets/many-apps.yml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: ApplicationSet -metadata: - name: many-apps-application-set - namespace: argocd -spec: - generators: - - git: - repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git - revision: HEAD - directories: - - path: application-sets/example-apps/* - template: - metadata: - name: '{{path.basename}}' - spec: - # The project the application belongs to. - project: default - - # Source of the application manifests - source: - repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git - targetRevision: HEAD - path: '{{path}}' - - # Destination cluster and namespace to deploy the application - destination: - server: https://kubernetes.default.svc - namespace: '{{path.basename}}' - - # Sync policy - syncPolicy: - syncOptions: - - CreateNamespace=true - automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field. - prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ). - selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ). - diff --git a/application-sets/my-application-sets/single-app-many-times.yml b/application-sets/my-application-sets/single-app-many-times.yml deleted file mode 100644 index 2a4c107b7f..0000000000 --- a/application-sets/my-application-sets/single-app-many-times.yml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: ApplicationSet -metadata: - name: billing-application-set - namespace: argocd -spec: - generators: - - list: - elements: - - namespace: team-a - - namespace: team-b - - namespace: team-c - - namespace: staging - template: - metadata: - name: '{{namespace}}-billing' - spec: - # The project the application belongs to. - project: default - - # Source of the application manifests - source: - repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git - targetRevision: HEAD - path: ./application-sets/manifests - - # Destination cluster and namespace to deploy the application - destination: - server: https://kubernetes.default.svc - namespace: '{{namespace}}' - - # Sync policy - syncPolicy: - syncOptions: - - CreateNamespace=true - automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field. - prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ). - selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ). - diff --git a/application-sets/my-application-sets/single-app-multiple-clusters.yml b/application-sets/my-application-sets/single-app-multiple-clusters.yml deleted file mode 100644 index db9a363033..0000000000 --- a/application-sets/my-application-sets/single-app-multiple-clusters.yml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: ApplicationSet -metadata: - name: multi-cluster-application-set - namespace: argocd -spec: - generators: - - clusters: {} # Automatically use all clusters defined within Argo CD - template: - metadata: - name: '{{name}}-billing-app' - spec: - # The project the application belongs to. - project: default - - # Source of the application manifests - source: - repoURL: https://github.com/codefresh-contrib/gitops-cert-level-2-examples.git - targetRevision: HEAD - path: ./application-sets/manifests - - # Destination cluster and namespace to deploy the application - destination: - server: '{{server}}' - namespace: billing - - # Sync policy - syncPolicy: - syncOptions: - - CreateNamespace=true - automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field. - prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ). - selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ). - From a56beae9cd21af6906d7e9216f81388877e97bd3 Mon Sep 17 00:00:00 2001 From: Luis Arrieta Date: Thu, 8 Jan 2026 04:56:44 -0500 Subject: [PATCH 05/10] =?UTF-8?q?=F0=9F=94=A7=20feature/apps-of-apps:=20Up?= =?UTF-8?q?date=20Applications=20Set=20Multiple=20Cluster=20Many=20Apps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../many-apps-many-cluster.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/application-sets/my-application-sets/many-apps-many-cluster.yml b/application-sets/my-application-sets/many-apps-many-cluster.yml index 488e9e16c8..6d34162182 100644 --- a/application-sets/my-application-sets/many-apps-many-cluster.yml +++ b/application-sets/my-application-sets/many-apps-many-cluster.yml @@ -9,24 +9,27 @@ spec: generators: # git generator, 'child' #1 - git: - repoURL: https://github.com/argoproj/argo-cd.git + repoURL: https://github.com/larrietacohen/gitops-cert-level-2-examples.git revision: HEAD directories: - - path: applicationset/examples/matrix/cluster-addons/* + - path: application-sets/example-apps/* # cluster generator, 'child' #2 - - clusters: - selector: - matchLabels: - argocd.argoproj.io/secret-type: cluster + - clusters: {} template: metadata: name: '{{path.basename}}-{{name}}' spec: - project: '{{metadata.labels.environment}}' + project: default source: - repoURL: https://github.com/argoproj/argo-cd.git + repoURL: https://github.com/larrietacohen/gitops-cert-level-2-examples.git targetRevision: HEAD path: '{{path}}' destination: server: '{{server}}' namespace: '{{path.basename}}' + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true From 1aa22b7319cb6f91d429eee298ec1191847de4cb Mon Sep 17 00:00:00 2001 From: Luis Arrieta Date: Fri, 9 Jan 2026 05:51:18 -0500 Subject: [PATCH 06/10] =?UTF-8?q?=F0=9F=94=A7=20feature/apps-of-apps:=20Up?= =?UTF-8?q?date=20Applications=20Set=20Multiple=20Cluster=20Many=20Apps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- environment-promotion/envs/prod/version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment-promotion/envs/prod/version.yml b/environment-promotion/envs/prod/version.yml index 51bc5350da..0423d0fa0a 100644 --- a/environment-promotion/envs/prod/version.yml +++ b/environment-promotion/envs/prod/version.yml @@ -8,4 +8,4 @@ spec: spec: containers: - name: webserver-simple - image: docker.io/kostiscodefresh/simple-env-app:1.0 + image: docker.io/kostiscodefresh/simple-env-app:2.0 From 2e53b04d31a5cef48ec0aef118404d29896e9559 Mon Sep 17 00:00:00 2001 From: larrietacohen Date: Fri, 9 Jan 2026 11:01:18 +0000 Subject: [PATCH 07/10] Application promotion --- environment-promotion/envs/staging/version.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environment-promotion/envs/staging/version.yml b/environment-promotion/envs/staging/version.yml index 0423d0fa0a..c088376339 100644 --- a/environment-promotion/envs/staging/version.yml +++ b/environment-promotion/envs/staging/version.yml @@ -8,4 +8,4 @@ spec: spec: containers: - name: webserver-simple - image: docker.io/kostiscodefresh/simple-env-app:2.0 + image: docker.io/kostiscodefresh/simple-env-app:3.0 From ee796c396fb285c3f81ca41baaa3f7bd0eff0b53 Mon Sep 17 00:00:00 2001 From: larrietacohen Date: Fri, 9 Jan 2026 11:05:53 +0000 Subject: [PATCH 08/10] Application promotion --- environment-promotion/envs/prod/settings.yml | 4 ++-- environment-promotion/envs/prod/version.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/environment-promotion/envs/prod/settings.yml b/environment-promotion/envs/prod/settings.yml index 2b94ef8ad9..400ffc97fb 100644 --- a/environment-promotion/envs/prod/settings.yml +++ b/environment-promotion/envs/prod/settings.yml @@ -10,7 +10,7 @@ spec: - name: webserver-simple env: - name: UI_THEME - value: "dark" + value: "light" - name: CACHE_SIZE value: "1024kb" - name: PAGE_LIMIT @@ -18,4 +18,4 @@ spec: - name: SORTING value: "ascending" - name: N_BUCKETS - value: "12" + value: "24" \ No newline at end of file diff --git a/environment-promotion/envs/prod/version.yml b/environment-promotion/envs/prod/version.yml index 0423d0fa0a..c088376339 100644 --- a/environment-promotion/envs/prod/version.yml +++ b/environment-promotion/envs/prod/version.yml @@ -8,4 +8,4 @@ spec: spec: containers: - name: webserver-simple - image: docker.io/kostiscodefresh/simple-env-app:2.0 + image: docker.io/kostiscodefresh/simple-env-app:3.0 From ab5aeb2e18133f33f229dc94aaa1586d8639e41f Mon Sep 17 00:00:00 2001 From: larrietacohen Date: Fri, 9 Jan 2026 11:09:19 +0000 Subject: [PATCH 09/10] Application promotion --- environment-promotion/envs/qa/settings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/environment-promotion/envs/qa/settings.yml b/environment-promotion/envs/qa/settings.yml index 738a5bec3a..400ffc97fb 100644 --- a/environment-promotion/envs/qa/settings.yml +++ b/environment-promotion/envs/qa/settings.yml @@ -12,10 +12,10 @@ spec: - name: UI_THEME value: "light" - name: CACHE_SIZE - value: "2048kb" + value: "1024kb" - name: PAGE_LIMIT value: "25" - name: SORTING value: "ascending" - name: N_BUCKETS - value: "42" \ No newline at end of file + value: "24" \ No newline at end of file From 3cfc6e7112ecc4a14181202bd35ea96f1209007f Mon Sep 17 00:00:00 2001 From: Luis Arrieta Date: Mon, 12 Jan 2026 10:40:53 -0500 Subject: [PATCH 10/10] =?UTF-8?q?=F0=9F=94=A7=20feature/post-sync:=20Updat?= =?UTF-8?q?e=20Post-Sync?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sync-hooks-waves/03-postsync-cleanup/cleanup.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sync-hooks-waves/03-postsync-cleanup/cleanup.yml b/sync-hooks-waves/03-postsync-cleanup/cleanup.yml index 3a6550aa12..69b04f5791 100644 --- a/sync-hooks-waves/03-postsync-cleanup/cleanup.yml +++ b/sync-hooks-waves/03-postsync-cleanup/cleanup.yml @@ -5,8 +5,8 @@ metadata: generateName: cleanup-after-sync- labels: codefresh.io/cert: cleanup-job - #annotations: - #argocd.argoproj.io/hook: PostSync + annotations: + argocd.argoproj.io/hook: PostSync spec: template: spec: