Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
70440d9
CodeNarc and Intellij Formatting (#368)
nihussmann May 12, 2026
cc57484
Update Jenkins Pipeline to build on develop branch (#479)
DerDaehne May 12, 2026
7eb6e5d
Move deployment package to ../infrastructure package
avetgit May 13, 2026
147f963
Move ContentLOader to application/content and GitHandler to applicati…
avetgit May 13, 2026
4ecd5d9
Move git config to config/scm
avetgit May 13, 2026
b34162c
Move ContentLoaderTest to ../gitops/application/content package
avetgit May 18, 2026
1a4c3f0
Move GitHandlerTest to ../gitops/application/orchestration package
avetgit May 18, 2026
c9364f1
Restructure test package and move git package to infrastructure/git p…
avetgit May 18, 2026
02490ad
Restructure move kubernetes package to infrastructure/kubernetes
avetgit May 18, 2026
25cc037
Restructure move Feature to tools/common package and Application to a…
avetgit May 18, 2026
40af7a8
Restructure move ApplicationConfigurator to cli package and CommonFea…
avetgit May 18, 2026
c3838c5
Restructure move argocd classes to tools/core package
avetgit May 18, 2026
c36eed4
Restructure move feature classes to tools package
avetgit May 18, 2026
10b0688
Rename CommonFeatureConfig and FeatureWithImage to CommonToolConfig a…
avetgit May 19, 2026
a436847
Rename Feature to Tool
avetgit May 19, 2026
f839c96
Rename Feature to Tool in Docu
avetgit May 19, 2026
de7b89e
Small cleanup
avetgit May 19, 2026
08e686a
Merge branch 'main' into feature/rename-feature-and-new-package-struc…
avetgit May 19, 2026
05852e6
Merge branch 'develop' into feature/rename-feature-and-new-package-st…
avetgit May 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions docs/Applications.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,9 @@ The following Argo CD Applications live in `apps/argocd/applications`:
* `example-apps` (application developers, fewer permissions)

### Multi-source applications for features
Feature deployments (for example, monitoring, ingress, or other GOP features) are modeled as multi-source Argo CD Applications instead of using an App-of-Apps pattern.

Tool deployments (for example, monitoring, ingress, or other GOP features) are modeled as multi-source Argo CD
Applications instead of using an App-of-Apps pattern.

For some features, the GitOps Playground Operator (GOP):
1. Writes values files into the `cluster-resources` repository under:
Expand Down Expand Up @@ -159,7 +161,6 @@ The user has to have the following privileges:
* set credentials
* create jobs
* restarting

To apply additional global environments for jenkins you can use `--jenkins-additional-envs "KEY1=value1,KEY2=value2"` parameter.

Note that the [example applications](#example-applications) pipelines will only run on a Jenkins that uses agents that provide
Expand Down
16 changes: 8 additions & 8 deletions docs/Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ All options can be set via a [config file](./configuration.schema.json). Most op
- [Scm](#scm)
- [Application](#application)
- [Content](#content)
- [Features](#features)
- [Tools](#tools)
- [Argocd](#feature-argocd)
- [Mail](#feature-mail)
- [Monitoring](#feature-monitoring)
Expand Down Expand Up @@ -139,11 +139,11 @@ All options can be set via a [config file](./configuration.schema.json). Most op
| `--content-whitelist` | `content.useWhitelist` | Boolean | `false` | Enables the whitelist for statics in content templating |
| - | `content.allowedStaticsWhitelist` | Set<String> | `[]` | Whitelist for Statics freemarker is allowing in user templates |

## Features
## Tools

Configuration of optional features supported by gitops-playground.

### Feature: Argocd
### Tool: Argocd

| CLI | Config key | Type | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
Expand All @@ -158,7 +158,7 @@ Configuration of optional features supported by gitops-playground.
| `--argocd-namespace` | `features.argocd.namespace` | String | `argocd` | Defines the kubernetes namespace for ArgoCD |
| - | `features.argocd.values` | Map | `[:]` | Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration |

### Feature: Mail
### Tool: Mail

| CLI | Config key | Type | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
Expand All @@ -167,7 +167,7 @@ Configuration of optional features supported by gitops-playground.
| `--smtp-user` | `features.mail.smtpUser` | String | `` | Sets smtp username for external Mailserver |
| `--smtp-password` | `features.mail.smtpPassword` | String | `` | Sets smtp password of external Mailserver |

### Feature: Monitoring
### Tool: Monitoring

| CLI | Config key | Type | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
Expand All @@ -185,7 +185,7 @@ Configuration of optional features supported by gitops-playground.
| - | `features.monitoring.helm.repoURL` | String | `https://prometheus-community.github.io/helm-charts` | Repository url from which the Helm chart should be obtained |
| - | `features.monitoring.helm.version` | String | `80.2.2` | The version of the Helm chart to be installed |

### Feature: Secrets
### Tool: Secrets

| CLI | Config key | Type | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
Expand All @@ -203,7 +203,7 @@ Configuration of optional features supported by gitops-playground.
| - | `features.secrets.vault.helm.repoURL` | String | `https://helm.releases.hashicorp.com` | Repository url from which the Helm chart should be obtained |
| - | `features.secrets.vault.helm.version` | String | `0.25.0` | The version of the Helm chart to be installed |

### Feature: Ingress
### Tool: Ingress

| CLI | Config key | Type | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
Expand All @@ -214,7 +214,7 @@ Configuration of optional features supported by gitops-playground.
| - | `features.ingress.helm.repoURL` | String | `https://traefik.github.io/charts` | Repository url from which the Helm chart should be obtained |
| - | `features.ingress.helm.version` | String | `39.0.0` | The version of the Helm chart to be installed |

### Feature: Cert Manager
### Tool: Cert Manager

| CLI | Config key | Type | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.cloudogu.gitops
package com.cloudogu.gitops.application

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.kubernetes.api.K8sClient
import com.cloudogu.gitops.infrastructure.kubernetes.api.K8sClient
import com.cloudogu.gitops.tools.common.Tool
import com.cloudogu.gitops.utils.TemplatingEngine

import jakarta.inject.Singleton
Expand All @@ -14,12 +15,12 @@ import freemarker.template.DefaultObjectWrapperBuilder
@Singleton
class Application {

final List<Feature> features
final List<Tool> features
final Config config
final K8sClient k8sClient

Application(Config config, K8sClient k8sClient,
List<Feature> features) {
List<Tool> features) {
this.config = config
// Order is important. Enforced by @Order-Annotation on the Singletons
this.features = features
Expand Down Expand Up @@ -58,8 +59,7 @@ class Application {
new Tuple2('gop-config', config.toYaml(true)))
}


List<Feature> getFeatures() {
List<Tool> getFeatures() {
return features
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package com.cloudogu.gitops.features
package com.cloudogu.gitops.application.content

import static com.cloudogu.gitops.config.Config.ContentRepoType
import static com.cloudogu.gitops.config.Config.ContentSchema.ContentRepositorySchema

import com.cloudogu.gitops.Feature
import com.cloudogu.gitops.application.orchestration.GitHandler
import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.config.Config.OverwriteMode
import com.cloudogu.gitops.config.Credentials
import com.cloudogu.gitops.features.deployment.DeploymentStrategy
import com.cloudogu.gitops.features.git.GitHandler
import com.cloudogu.gitops.git.GitRepo
import com.cloudogu.gitops.git.GitRepoFactory
import com.cloudogu.gitops.kubernetes.api.K8sClient
import com.cloudogu.gitops.infrastructure.deployment.DeploymentStrategy
import com.cloudogu.gitops.infrastructure.git.GitRepo
import com.cloudogu.gitops.infrastructure.git.GitRepoFactory
import com.cloudogu.gitops.infrastructure.kubernetes.api.K8sClient
import com.cloudogu.gitops.tools.common.Tool
import com.cloudogu.gitops.tools.core.Jenkins
import com.cloudogu.gitops.utils.AllowListFreemarkerObjectWrapper
import com.cloudogu.gitops.utils.FileSystemUtils
import com.cloudogu.gitops.utils.MapUtils
Expand All @@ -37,7 +38,7 @@ import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider
@Singleton
@Order(999)
// We want to evaluate content last, to allow for changing all other repos
class ContentLoader extends Feature {
class ContentLoader extends Tool {
private Config config
private K8sClient k8sClient
private GitRepoFactory repoProvider
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.cloudogu.gitops.features.git
package com.cloudogu.gitops.application.orchestration

import com.cloudogu.gitops.Feature
import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.features.deployment.HelmStrategy
import com.cloudogu.gitops.features.git.config.util.ScmProviderType
import com.cloudogu.gitops.git.providers.GitProvider
import com.cloudogu.gitops.git.providers.gitlab.Gitlab
import com.cloudogu.gitops.git.providers.scmmanager.ScmManager
import com.cloudogu.gitops.kubernetes.api.K8sClient
import com.cloudogu.gitops.config.scm.util.ScmProviderType
import com.cloudogu.gitops.infrastructure.deployment.HelmStrategy
import com.cloudogu.gitops.infrastructure.git.providers.GitProvider
import com.cloudogu.gitops.infrastructure.git.providers.gitlab.Gitlab
import com.cloudogu.gitops.infrastructure.git.providers.scmmanager.ScmManager
import com.cloudogu.gitops.infrastructure.kubernetes.api.K8sClient
import com.cloudogu.gitops.tools.common.Tool
import com.cloudogu.gitops.utils.FileSystemUtils
import com.cloudogu.gitops.utils.NetworkingUtils

Expand All @@ -19,7 +19,7 @@ import groovy.util.logging.Slf4j
@Slf4j
@Singleton
@Order(60)
class GitHandler extends Feature {
class GitHandler extends Tool {

Config config

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.cloudogu.gitops.config
package com.cloudogu.gitops.cli

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.utils.FileSystemUtils

import groovy.util.logging.Slf4j
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ import static com.cloudogu.gitops.config.ConfigConstants.APP_NAME
import static com.cloudogu.gitops.utils.MapUtils.deepMerge
import static com.cloudogu.gitops.utils.MapUtils.deepMergeDefaults

import com.cloudogu.gitops.Application
import com.cloudogu.gitops.Feature
import com.cloudogu.gitops.config.ApplicationConfigurator
import com.cloudogu.gitops.config.CommonFeatureConfig
import com.cloudogu.gitops.application.Application
import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.config.schema.JsonSchemaValidator
import com.cloudogu.gitops.destroy.Destroyer
import com.cloudogu.gitops.kubernetes.api.K8sClient
import com.cloudogu.gitops.infrastructure.kubernetes.api.K8sClient
import com.cloudogu.gitops.tools.common.CommonToolConfig
import com.cloudogu.gitops.tools.common.Tool
import com.cloudogu.gitops.utils.CommandExecutor
import com.cloudogu.gitops.utils.FileSystemUtils

Expand Down Expand Up @@ -256,10 +255,10 @@ class GitopsPlaygroundCli {
}

static void runHook(Application app, String methodName, def config) {
([new CommonFeatureConfig(), *app.features]).each { feature ->
([new CommonToolConfig(), *app.features]).each { feature ->
// Executing only the method if the derived feature class has implemented the passed methodName
def mm = feature.metaClass.getMetaMethod(methodName, config)
if (mm && mm.declaringClass.theClass != Feature) {
if (mm && mm.declaringClass.theClass != Tool) {
log.debug("Executing ${methodName} hook on feature ${feature.class.name}")
mm.invoke(feature, config)
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/groovy/com/cloudogu/gitops/config/Config.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.cloudogu.gitops.config
import static com.cloudogu.gitops.config.ConfigConstants.*
import static picocli.CommandLine.ScopeType

import com.cloudogu.gitops.features.git.config.ScmTenantSchema
import com.cloudogu.gitops.config.scm.ScmTenantSchema

import java.security.SecureRandom
import jakarta.inject.Singleton
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.cloudogu.gitops.config

import com.cloudogu.gitops.features.git.config.ScmCentralSchema.GitlabCentralConfig
import com.cloudogu.gitops.features.git.config.ScmCentralSchema.ScmManagerCentralConfig
import com.cloudogu.gitops.features.git.config.util.ScmProviderType
import com.cloudogu.gitops.config.scm.ScmCentralSchema.GitlabCentralConfig
import com.cloudogu.gitops.config.scm.ScmCentralSchema.ScmManagerCentralConfig
import com.cloudogu.gitops.config.scm.util.ScmProviderType

import com.fasterxml.jackson.annotation.JsonPropertyDescription
import picocli.CommandLine.Mixin
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.cloudogu.gitops.features.git.config
package com.cloudogu.gitops.config.scm

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.config.Credentials
import com.cloudogu.gitops.features.git.config.util.GitlabConfig
import com.cloudogu.gitops.features.git.config.util.ScmManagerConfig
import com.cloudogu.gitops.config.scm.util.GitlabConfig
import com.cloudogu.gitops.config.scm.util.ScmManagerConfig

import com.fasterxml.jackson.annotation.JsonPropertyDescription
import picocli.CommandLine.Option
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.cloudogu.gitops.features.git.config
package com.cloudogu.gitops.config.scm

import static com.cloudogu.gitops.config.ConfigConstants.HELM_CONFIG_DESCRIPTION

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.config.Credentials
import com.cloudogu.gitops.features.git.config.util.GitlabConfig
import com.cloudogu.gitops.features.git.config.util.ScmManagerConfig
import com.cloudogu.gitops.features.git.config.util.ScmProviderType
import com.cloudogu.gitops.config.scm.util.GitlabConfig
import com.cloudogu.gitops.config.scm.util.ScmManagerConfig
import com.cloudogu.gitops.config.scm.util.ScmProviderType
import com.cloudogu.gitops.utils.NetworkingUtils

import com.fasterxml.jackson.annotation.JsonIgnore
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.cloudogu.gitops.features.git.config.util
package com.cloudogu.gitops.config.scm.util

import com.cloudogu.gitops.config.Credentials

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.cloudogu.gitops.features.git.config.util
package com.cloudogu.gitops.config.scm.util

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.config.Credentials
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.cloudogu.gitops.config.scm.util

enum ScmProviderType {
GITLAB,
SCM_MANAGER
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package com.cloudogu.gitops.dependencyinjection

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.config.Credentials
import com.cloudogu.gitops.git.providers.scmmanager.api.AuthorizationInterceptor
import com.cloudogu.gitops.okhttp.RetryInterceptor
import com.cloudogu.gitops.dependencyinjection.okhttp.RetryInterceptor
import com.cloudogu.gitops.infrastructure.git.providers.scmmanager.api.AuthorizationInterceptor

import io.micronaut.context.annotation.Factory

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.cloudogu.gitops.okhttp
package com.cloudogu.gitops.dependencyinjection.okhttp

import groovy.util.logging.Slf4j

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.cloudogu.gitops.destroy

import com.cloudogu.gitops.application.orchestration.GitHandler
import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.features.git.GitHandler
import com.cloudogu.gitops.git.GitRepo
import com.cloudogu.gitops.git.GitRepoFactory
import com.cloudogu.gitops.kubernetes.api.HelmClient
import com.cloudogu.gitops.kubernetes.api.K8sClient
import com.cloudogu.gitops.infrastructure.git.GitRepo
import com.cloudogu.gitops.infrastructure.git.GitRepoFactory
import com.cloudogu.gitops.infrastructure.helm.HelmClient
import com.cloudogu.gitops.infrastructure.kubernetes.api.K8sClient
import com.cloudogu.gitops.utils.FileSystemUtils

import io.micronaut.core.annotation.Order
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.cloudogu.gitops.destroy

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.jenkins.GlobalPropertyManager
import com.cloudogu.gitops.jenkins.JobManager
import com.cloudogu.gitops.infrastructure.jenkins.GlobalPropertyManager
import com.cloudogu.gitops.infrastructure.jenkins.JobManager

import io.micronaut.core.annotation.Order

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.cloudogu.gitops.destroy

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.git.providers.scmmanager.api.ScmManagerApiClient
import com.cloudogu.gitops.infrastructure.git.providers.scmmanager.api.ScmManagerApiClient

import io.micronaut.core.annotation.Order

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.cloudogu.gitops.features.deployment
package com.cloudogu.gitops.infrastructure.deployment

import com.cloudogu.gitops.application.orchestration.GitHandler
import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.features.git.GitHandler
import com.cloudogu.gitops.git.GitRepo
import com.cloudogu.gitops.git.GitRepoFactory
import com.cloudogu.gitops.infrastructure.git.GitRepo
import com.cloudogu.gitops.infrastructure.git.GitRepoFactory
import com.cloudogu.gitops.utils.FileSystemUtils

import java.nio.file.Path
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.cloudogu.gitops.features.deployment
package com.cloudogu.gitops.infrastructure.deployment

import com.cloudogu.gitops.config.Config

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.cloudogu.gitops.features.deployment
package com.cloudogu.gitops.infrastructure.deployment

import java.nio.file.Path

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.cloudogu.gitops.features.deployment
package com.cloudogu.gitops.infrastructure.deployment

import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.kubernetes.api.HelmClient
import com.cloudogu.gitops.infrastructure.helm.HelmClient

import java.nio.file.Path
import jakarta.inject.Singleton
Expand Down
Loading