Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
21 changes: 15 additions & 6 deletions renovate.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"baseBranchPatterns": ["develop"],
"assignees": ["avetgit", "DerDaehne", "mdroll", "ThomasMichael1811"],
"baseBranchPatterns": [
"develop"
],
"assignees": [
"avetgit",
"DerDaehne",
"mdroll",
"ThomasMichael1811"
],
"dependencyDashboard": true,
"minimumReleaseAge": "7 days",

"extends": [
":automergeMinor",
":combinePatchMinorReleases",
":configMigration",
":automergeDigest"
],

"packageRules": [
{
"matchManagers": ["jenkins"],
"matchManagers": [
"jenkins"
],
"automerge": false,
"registryUrls": ["http://updates.jenkins-ci.org/stable/update-center.json"],
"registryUrls": [
"http://updates.jenkins-ci.org/stable/update-center.json"
],
"groupName": "Jenkins Updates"
}
]
Expand Down
39 changes: 19 additions & 20 deletions src/main/groovy/com/cloudogu/gitops/application/Application.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ import com.cloudogu.gitops.config.Config
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
import groovy.util.logging.Slf4j

import freemarker.template.Configuration
import freemarker.template.DefaultObjectWrapperBuilder
import groovy.util.logging.Slf4j
import jakarta.inject.Singleton

@Slf4j
@Singleton
Expand All @@ -20,7 +18,7 @@ class Application {
final K8sClient k8sClient

Application(Config config, K8sClient k8sClient,
List<Tool> features) {
List<Tool> features) {
this.config = config
// Order is important. Enforced by @Order-Annotation on the Singletons
this.features = features
Expand All @@ -43,21 +41,22 @@ class Application {
log.debug("Application finished")
}

private void storeGopInformationInSecret(Config config) {
String namespace = "gop-job" // Fallback, if run from IDE
if (!config.application.gopNamespace.isEmpty()) {
// if set, take namespace from configuration
namespace = "${config.application.gopNamespace}"
} else if (this.k8sClient.k8sJavaApiClient.getCurrentNamespace() != null) {
// if gop-namespace not set, take namespace from running GOP
namespace = this.k8sClient.k8sJavaApiClient.getCurrentNamespace()
}
log.debug("Storing GOP configuration in secret 'gop-configuration' in namespace '${namespace}'")
k8sClient.createNamespace(namespace)
k8sClient.createSecret('generic', 'gop-configuration', namespace,
new Tuple2('gop-initial-password', config.DEFAULT_ADMIN_PW),
new Tuple2('gop-config', config.toYaml(true)))
}
private void storeGopInformationInSecret(Config config) {
String namespace = "gop-job"
// Fallback, if run from IDE
if (!config.application.gopNamespace.isEmpty()) {
// if set, take namespace from configuration
namespace = "${config.application.gopNamespace}"
} else if (this.k8sClient.getCurrentNamespace() != null) {
// if gop-namespace not set, take namespace from running GOP
namespace = this.k8sClient.getCurrentNamespace()
}
log.debug("Storing GOP configuration in secret 'gop-configuration' in namespace '${namespace}'")
k8sClient.createNamespace(namespace)
k8sClient.createSecret('generic', 'gop-configuration', namespace,
new Tuple2('gop-initial-password', config.DEFAULT_ADMIN_PW),
new Tuple2('gop-config', config.toYaml(true)))
}

List<Tool> getFeatures() {
return features
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
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.application.orchestration.GitHandler
import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.config.Config.OverwriteMode
Expand All @@ -17,23 +14,24 @@ import com.cloudogu.gitops.utils.AllowListFreemarkerObjectWrapper
import com.cloudogu.gitops.utils.FileSystemUtils
import com.cloudogu.gitops.utils.MapUtils
import com.cloudogu.gitops.utils.TemplatingEngine

import io.micronaut.core.annotation.Order

import java.nio.file.Path
import jakarta.inject.Singleton
import groovy.util.logging.Slf4j

import com.fasterxml.jackson.annotation.JsonIgnore
import freemarker.template.Configuration
import freemarker.template.DefaultObjectWrapperBuilder
import groovy.util.logging.Slf4j
import io.micronaut.core.annotation.Order
import jakarta.inject.Singleton
import org.apache.commons.io.FileUtils
import org.eclipse.jgit.api.CloneCommand
import org.eclipse.jgit.api.Git
import org.eclipse.jgit.lib.Ref
import org.eclipse.jgit.lib.Repository
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider

import java.nio.file.Path

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

@Slf4j
@Singleton
@Order(999)
Expand Down Expand Up @@ -234,7 +232,7 @@ class ContentLoader extends Tool {
if (repoConfig.credentials?.username != null && repoConfig.credentials?.password != null) {
credentialsProvider = new UsernamePasswordCredentialsProvider(repoConfig.credentials.username, repoConfig.credentials.password)
} else if (repoConfig.credentials?.secretName && repoConfig.credentials?.secretNamespace) {
Credentials credentials = this.k8sClient.k8sJavaApiClient.getCredentialsFromSecret(repoConfig.credentials)
Credentials credentials = this.k8sClient.getCredentialsFromSecret(repoConfig.credentials)
credentialsProvider = new UsernamePasswordCredentialsProvider(credentials.username, credentials.password)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,9 @@ 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

import groovy.util.logging.Slf4j
import io.micronaut.core.annotation.Order

import jakarta.inject.Singleton
import groovy.util.logging.Slf4j

@Slf4j
@Singleton
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.cloudogu.gitops.cli

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

import groovy.util.logging.Slf4j

@Slf4j
Expand Down Expand Up @@ -302,4 +301,4 @@ class ApplicationConfigurator {
throw new RuntimeException(errorMessage, e)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -179,5 +179,4 @@ class GenerateJsonSchema {
static String anchor(String name) {
return sectionTitle(name).toLowerCase().replaceAll(/\s+/, '-')
}
}

}
31 changes: 13 additions & 18 deletions src/main/groovy/com/cloudogu/gitops/cli/GitopsPlaygroundCli.groovy
Original file line number Diff line number Diff line change
@@ -1,33 +1,28 @@
package com.cloudogu.gitops.cli

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 ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.LoggerContext
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.classic.spi.ILoggingEvent
import ch.qos.logback.core.ConsoleAppender
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.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

import io.micronaut.context.ApplicationContext

import groovy.util.logging.Slf4j
import groovy.yaml.YamlSlurper

import ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.LoggerContext
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.classic.spi.ILoggingEvent
import ch.qos.logback.core.ConsoleAppender
import io.micronaut.context.ApplicationContext
import org.slf4j.LoggerFactory
import picocli.CommandLine

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

/**
* Provides the entrypoint to the application as well as all config parameters.
* When changing parameters, make sure to update the Config for the config file as well
Expand All @@ -40,7 +35,7 @@ class GitopsPlaygroundCli {
K8sClient k8sClient
ApplicationConfigurator applicationConfigurator

GitopsPlaygroundCli(K8sClient k8sClient = new K8sClient(new CommandExecutor(), new FileSystemUtils(), null),
GitopsPlaygroundCli(K8sClient k8sClient = new K8sClient(),
ApplicationConfigurator applicationConfigurator = new ApplicationConfigurator()) {
this.k8sClient = k8sClient
this.applicationConfigurator = applicationConfigurator
Expand Down Expand Up @@ -284,4 +279,4 @@ class GitopsPlaygroundCli {
}
return profileConfig
}
}
}
19 changes: 9 additions & 10 deletions src/main/groovy/com/cloudogu/gitops/config/Config.groovy
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
package com.cloudogu.gitops.config

import static com.cloudogu.gitops.config.ConfigConstants.*
import static picocli.CommandLine.ScopeType

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

import java.security.SecureRandom
import jakarta.inject.Singleton
import groovy.transform.CompileStatic
import groovy.transform.MapConstructor

import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.annotation.JsonPropertyDescription
import com.fasterxml.jackson.core.JsonGenerator
Expand All @@ -18,10 +9,18 @@ import com.fasterxml.jackson.databind.module.SimpleModule
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter
import com.fasterxml.jackson.databind.ser.BeanSerializerModifier
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper
import groovy.transform.CompileStatic
import groovy.transform.MapConstructor
import jakarta.inject.Singleton
import picocli.CommandLine.Command
import picocli.CommandLine.Mixin
import picocli.CommandLine.Option

import java.security.SecureRandom

import static com.cloudogu.gitops.config.ConfigConstants.*
import static picocli.CommandLine.ScopeType

/**
* The global configuration object.
*
Expand Down Expand Up @@ -777,4 +776,4 @@ class Config {
new YAMLMapper()
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -168,4 +168,4 @@ interface ConfigConstants {
String HELM_CONFIG_VERSION_DESCRIPTION = 'The version of the Helm chart to be installed'
String HELM_CONFIG_IMAGE_DESCRIPTION = 'The image of the Helm chart to be installed'
String HELM_CONFIG_VALUES_DESCRIPTION = 'Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration'
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.cloudogu.gitops.config
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
import picocli.CommandLine.Option
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@ class JsonSchemaValidator {
throw new RuntimeException("Config file invalid: " + validationMessages.join("\n"))
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import com.cloudogu.gitops.config.Config
import com.cloudogu.gitops.config.Credentials
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 Expand Up @@ -88,4 +87,4 @@ class ScmCentralSchema {
String gitOpsUsername = ''

}
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
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.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
import com.fasterxml.jackson.annotation.JsonMerge
import com.fasterxml.jackson.annotation.JsonPropertyDescription
import picocli.CommandLine.Mixin
import picocli.CommandLine.Option

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

class ScmTenantSchema {

static final String GITLAB_CONFIG_DESCRIPTION = 'Config for GITLAB'
Expand Down Expand Up @@ -128,10 +127,14 @@ class ScmTenantSchema {
String urlForJenkins = ''

@JsonIgnore
String getHost() { return NetworkingUtils.getHost(url) }
String getHost() {
return NetworkingUtils.getHost(url)
}

@JsonIgnore
String getProtocol() { return NetworkingUtils.getProtocol(url) }
String getProtocol() {
return NetworkingUtils.getProtocol(url)
}
String ingress = ''

@Option(names = ['--scmm-skip-restart'], description = SCMM_SKIP_RESTART_DESCRIPTION)
Expand All @@ -150,4 +153,4 @@ class ScmTenantSchema {
return new Credentials(username, password)
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ interface ScmManagerConfig {
String getGitOpsUsername()

Credentials getCredentials()
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.cloudogu.gitops.config.scm.util

enum ScmProviderType {
GITLAB,
SCM_MANAGER
GITLAB,
SCM_MANAGER
}
Loading