Skip to content

Commit 82e2478

Browse files
authored
Merge pull request #37 from keptn-sandbox/feat/introduce_configversion
feat: introduce configVersion
2 parents f72fafc + f8405c4 commit 82e2478

File tree

9 files changed

+72
-34
lines changed

9 files changed

+72
-34
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ The operators in this repository make keptn configurable via Custom Resources an
44
## Compatibility Matrix
55

66
| Author | Keptn Version | [Keptn GitOps Operator Images](https://hub.docker.com/r/checkelmann/gitlab-service/tags) |
7-
|:-----------------|:---------------------:|:----------------------------------------------------------------------------------------:|
8-
| @thschue | 0.11.x | keptnsandbox/gitops-operator:0.1.0-dev <br> keptnsandbox/keptn-operator:0.1.0-dev |
9-
7+
|:-----------------|:-------------:|:----------------------------------------------------------------------------------------:|
8+
| @thschue | 0.11.x | keptnsandbox/gitops-operator:0.1.0-dev <br> keptnsandbox/keptn-operator:0.1.0-dev |
9+
| @thschue | 0.12.x | keptnsandbox/gitops-operator:0.1.0-dev <br> keptnsandbox/keptn-operator:0.1.0-dev |
1010

1111
## Prerequisites
1212
* In order to be able to create and delete stages, the keptn operator depends on a patched version of the configuration-service and the shipyard controller
@@ -30,7 +30,7 @@ Following, a few parameters have to be set upfront:
3030
export API_HOSTNAME="<hostname>"
3131
export API_TOKEN="<api-token>"
3232
export RSA_PRIVATE_KEY="<private-key>"
33-
export GITOPS_VERSION="0.1.0-pre.6"
33+
export GITOPS_VERSION="0.1.0-pre.7"
3434
```
3535

3636
### Install Custom Resource Definitions / Create Namespace

gitops-operator/controllers/common/types/types.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ type KeptnArtifactMetadata struct {
3030

3131
//KeptnArtifactMetadataSpec specifies details of service artifacts
3232
type KeptnArtifactMetadataSpec struct {
33-
Version string `json:"version,omitempty"`
34-
ChartDir string `json:"chartDir,omitempty"`
35-
OverwriteTag bool `json:"overwriteTag,omitempty"`
36-
Project string `json:"project"`
33+
Version string `yaml:"version,omitempty"`
34+
ConfigVersion string `yaml:"configVersion,omitempty"`
35+
ChartDir string `yaml:"chartDir,omitempty"`
36+
OverwriteTag bool `yaml:"overwriteTag,omitempty"`
37+
Project string `yaml:"project"`
3738
}
3839

3940
type configurationData struct {

gitops-operator/controllers/utils_artifactdelivery.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ func (r *KeptnGitRepositoryReconciler) composeData(gitClient common.GitClient, t
3636
// Copy the Base Directory
3737

3838
for service, metadata := range services {
39-
tag := service.DirectoryName + "-" + metadata.Version
39+
if metadata.ConfigVersion == "" {
40+
metadata.ConfigVersion = "0"
41+
}
42+
tag := service.DirectoryName + "-" + metadata.Version + "-" + metadata.ConfigVersion
4043

4144
err := gitClient.TagExists(tag)
4245
if err != nil {

keptn-operator/api/v1/keptnservicedeployment_types.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,25 @@ import (
2727
type KeptnServiceDeploymentSpec struct {
2828
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
2929
// Important: Run "make" to regenerate code after modifying this file
30-
Project string `json:"project"`
31-
Service string `json:"service"`
32-
Stage string `json:"stage"`
33-
Version string `json:"version"`
34-
Author string `json:"author,omitempty"`
35-
SourceCommitHash string `json:"sourceCommitHash,omitempty"`
30+
Project string `json:"project"`
31+
Service string `json:"service"`
32+
Stage string `json:"stage"`
33+
Version string `json:"version"`
34+
ConfigVersion string `json:"configVersion,omitempty"`
35+
Author string `json:"author,omitempty"`
36+
SourceCommitHash string `json:"sourceCommitHash,omitempty"`
37+
Labels map[string]string `json:"labels,omitempty"`
3638
}
3739

3840
// KeptnServiceDeploymentStatus defines the observed state of KeptnServiceDeployment
3941
type KeptnServiceDeploymentStatus struct {
40-
DeployedVersion string `json:"deployedVersion,omitempty"`
41-
UpdatePending bool `json:"updatePending,omitempty"`
42-
KeptnContext string `json:"keptnContext,omitempty"`
43-
LastAppliedHash string `json:"lastAppliedHash,omitempty"`
44-
Prerequisites KeptnServiceDeploymentPrerequisites `json:"prerequisites,omitempty"`
45-
DeploymentProgress KeptnServiceDeploymentProgress `json:"progress,omitempty"`
42+
DeployedVersion string `json:"deployedVersion,omitempty"`
43+
DeployedConfigVersion string `json:"deployedConfigVersion,omitempty"`
44+
UpdatePending bool `json:"updatePending,omitempty"`
45+
KeptnContext string `json:"keptnContext,omitempty"`
46+
LastAppliedHash string `json:"lastAppliedHash,omitempty"`
47+
Prerequisites KeptnServiceDeploymentPrerequisites `json:"prerequisites,omitempty"`
48+
DeploymentProgress KeptnServiceDeploymentProgress `json:"progress,omitempty"`
4649
}
4750

4851
//KeptnServiceDeploymentPrerequisites defines all of the objects needed to deploy a service

keptn-operator/api/v1/zz_generated.deepcopy.go

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

keptn-operator/config/crd/bases/keptn.sh_keptnservicedeployments.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ spec:
3939
properties:
4040
author:
4141
type: string
42+
configVersion:
43+
type: string
44+
labels:
45+
additionalProperties:
46+
type: string
47+
type: object
4248
project:
4349
description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
4450
Important: Run "make" to regenerate code after modifying this file'
@@ -61,6 +67,8 @@ spec:
6167
description: KeptnServiceDeploymentStatus defines the observed state of
6268
KeptnServiceDeployment
6369
properties:
70+
deployedConfigVersion:
71+
type: string
6472
deployedVersion:
6573
type: string
6674
keptnContext:

keptn-operator/controllers/keptnservicedeploymentcontroller/keptnservicedeployment_controller.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,22 @@ func getKeptnContext(client client.Client, ctx context.Context, namespace string
262262
}
263263

264264
func (r *KeptnServiceDeploymentReconciler) triggerTask(deployment *apiv1.KeptnServiceDeployment, deploymentEvent string, shkeptncontext string) (string, error) {
265+
configVersion := "0"
266+
267+
if deployment.Spec.ConfigVersion != "" {
268+
configVersion = deployment.Spec.ConfigVersion
269+
}
270+
271+
labels := map[string]string{
272+
"version": deployment.Spec.Version,
273+
"configVersion": configVersion,
274+
}
275+
276+
if len(deployment.Spec.Labels) != 0 {
277+
for key, value := range deployment.Spec.Labels {
278+
labels[key] = value
279+
}
280+
}
265281

266282
httpclient := nethttp.Client{
267283
Timeout: 30 * time.Second,
@@ -273,12 +289,8 @@ func (r *KeptnServiceDeploymentReconciler) triggerTask(deployment *apiv1.KeptnSe
273289
Service: deployment.Spec.Service,
274290
Project: deployment.Spec.Project,
275291
Stage: deployment.Spec.Stage,
276-
Labels: map[string]string{
277-
"version": deployment.Spec.Version,
278-
"author": deployment.Spec.Author,
279-
"sourceCommitHash": deployment.Spec.SourceCommitHash,
280-
},
281-
Image: deployment.Spec.Service + ":" + deployment.Spec.Version,
292+
Labels: labels,
293+
Image: deployment.Spec.Service + ":" + deployment.Spec.Version,
282294
},
283295
Source: "Keptn GitOps Operator",
284296
SpecVersion: "1.0",

promotion-service/eventhandler/eventhandlers.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ func (eh *PromotionHandler) HandlePromotionTriggeredEvent() error {
5252
} else {
5353
eh.KeptnHandler.Logger.Info("Using version: " + version)
5454
}
55+
configVersion, ok := eventData.Labels["configVersion"]
56+
if !ok {
57+
configVersion = "0"
58+
}
5559

5660
namespaceSupplier := common.EnvBasedStringSupplier(namespaceEnvVarName, defaultNamespace)
5761

@@ -66,11 +70,11 @@ func (eh *PromotionHandler) HandlePromotionTriggeredEvent() error {
6670
return err
6771
}
6872

69-
err = eh.GitHandler.UpdateGitRepo(mysecret, eventData.Stage, eventData.Service, version)
73+
err = eh.GitHandler.UpdateGitRepo(mysecret, eventData.Stage, eventData.Service, version, configVersion)
7074
if err != nil {
7175
count := 0
7276
for err != nil && count <= 5 {
73-
err = eh.GitHandler.UpdateGitRepo(mysecret, eventData.Stage, eventData.Service, version)
77+
err = eh.GitHandler.UpdateGitRepo(mysecret, eventData.Stage, eventData.Service, version, configVersion)
7478
count++
7579
}
7680
eh.KeptnHandler.Logger.Error(fmt.Sprintf("Could not update service %v/%v for stage %v: %v", eventData.Project, eventData.Service, eventData.Stage, err.Error()))

promotion-service/pkg/utils/githandler.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828

2929
//go:generate moq -pkg githandler_mock -skip-ensure -out ../eventhandler/fake/githandler_mock.go . GitHandlerInterface
3030
type GitHandlerInterface interface {
31-
UpdateGitRepo(credentials *GitRepositoryConfig, stage string, service string, version string) error
31+
UpdateGitRepo(credentials *GitRepositoryConfig, stage string, service string, version string, configVersion string) error
3232
}
3333

3434
type GitHandler struct {
@@ -76,7 +76,7 @@ func GetGitCredentials(remoteURI, user, token string, branch string) (*GitReposi
7676
}
7777

7878
//UpdateGitRepo updates the upstream repository
79-
func (gh *GitHandler) UpdateGitRepo(credentials *GitRepositoryConfig, stage string, service string, version string) error {
79+
func (gh *GitHandler) UpdateGitRepo(credentials *GitRepositoryConfig, stage string, service string, version string, configVersion string) error {
8080
authentication := &http.BasicAuth{
8181
Username: credentials.User,
8282
Password: credentials.Token,
@@ -85,7 +85,7 @@ func (gh *GitHandler) UpdateGitRepo(credentials *GitRepositoryConfig, stage stri
8585
cloneOptionsMaster := git.CloneOptions{
8686
URL: credentials.RemoteURI,
8787
Auth: authentication,
88-
ReferenceName: plumbing.ReferenceName("refs/tags/" + service + "-" + version),
88+
ReferenceName: plumbing.ReferenceName("refs/tags/" + service + "-" + version + "-" + configVersion),
8989
SingleBranch: true,
9090
}
9191

@@ -153,7 +153,7 @@ func (gh *GitHandler) UpdateGitRepo(credentials *GitRepositoryConfig, stage stri
153153
log.Println("Could not add files")
154154
}
155155

156-
_, err = w.Commit("Updated to version "+version, &commitOptions)
156+
_, err = w.Commit("Updated to version "+version+"-"+configVersion, &commitOptions)
157157
if err != nil {
158158
log.Println("Couldn't commit "+stage, err)
159159
return err

0 commit comments

Comments
 (0)