1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-12 10:55:20 +02:00

Add renderSubchartNotes property to helmExecute and kubernetesDeploy (#4238)

Co-authored-by: Philipp Stehle <philipp.stehle@sap.com>
Co-authored-by: Ralf Pannemans <ralf.pannemans@sap.com>
This commit is contained in:
Pavel Busko 2023-05-05 14:23:11 +02:00 committed by GitHub
parent d12f01d90f
commit 35a55044b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 64 additions and 2 deletions

View File

@ -41,6 +41,7 @@ func helmExecute(config helmExecuteOptions, telemetryData *telemetry.CustomData,
CustomTLSCertificateLinks: config.CustomTLSCertificateLinks,
Version: config.Version,
PublishVersion: config.Version,
RenderSubchartNotes: config.RenderSubchartNotes,
}
utils := kubernetes.NewDeployUtilsBundle(helmConfig.CustomTLSCertificateLinks)

View File

@ -45,6 +45,7 @@ type helmExecuteOptions struct {
CustomTLSCertificateLinks []string `json:"customTlsCertificateLinks,omitempty"`
Publish bool `json:"publish,omitempty"`
Version string `json:"version,omitempty"`
RenderSubchartNotes bool `json:"renderSubchartNotes,omitempty"`
}
type helmExecuteCommonPipelineEnvironment struct {
@ -224,6 +225,7 @@ func addHelmExecuteFlags(cmd *cobra.Command, stepConfig *helmExecuteOptions) {
cmd.Flags().StringSliceVar(&stepConfig.CustomTLSCertificateLinks, "customTlsCertificateLinks", []string{}, "List of download links to custom TLS certificates. This is required to ensure trusted connections to instances with repositories (like nexus) when publish flag is set to true.")
cmd.Flags().BoolVar(&stepConfig.Publish, "publish", false, "Configures helm to run the deploy command to publish artifacts to a repository.")
cmd.Flags().StringVar(&stepConfig.Version, "version", os.Getenv("PIPER_version"), "Defines the artifact version to use from helm package/publish commands.")
cmd.Flags().BoolVar(&stepConfig.RenderSubchartNotes, "renderSubchartNotes", true, "If set, render subchart notes along with the parent.")
cmd.MarkFlagRequired("image")
}
@ -595,6 +597,15 @@ func helmExecuteMetadata() config.StepData {
Aliases: []config.Alias{},
Default: os.Getenv("PIPER_version"),
},
{
Name: "renderSubchartNotes",
ResourceRef: []config.ResourceReference{},
Scope: []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
Type: "bool",
Mandatory: false,
Aliases: []config.Alias{},
Default: true,
},
},
},
Containers: []config.Container{

View File

@ -200,6 +200,10 @@ func runHelmDeploy(config kubernetesDeployOptions, utils kubernetes.DeployUtils,
upgradeParams = append(upgradeParams, "--kube-context", config.KubeContext)
}
if config.RenderSubchartNotes {
upgradeParams = append(upgradeParams, "--render-subchart-notes")
}
if len(config.AdditionalParameters) > 0 {
upgradeParams = append(upgradeParams, config.AdditionalParameters...)
}

View File

@ -34,6 +34,7 @@ type kubernetesDeployOptions struct {
HelmTestWaitSeconds int `json:"helmTestWaitSeconds,omitempty"`
HelmValues []string `json:"helmValues,omitempty"`
ValuesMapping map[string]interface{} `json:"valuesMapping,omitempty"`
RenderSubchartNotes bool `json:"renderSubchartNotes,omitempty"`
GithubToken string `json:"githubToken,omitempty"`
Image string `json:"image,omitempty"`
ImageNames []string `json:"imageNames,omitempty"`
@ -189,6 +190,7 @@ func addKubernetesDeployFlags(cmd *cobra.Command, stepConfig *kubernetesDeployOp
cmd.Flags().IntVar(&stepConfig.HelmTestWaitSeconds, "helmTestWaitSeconds", 300, "Number of seconds to wait for any individual Kubernetes operation (like Jobs for hooks). See https://helm.sh/docs/helm/helm_test/#options for further details")
cmd.Flags().StringSliceVar(&stepConfig.HelmValues, "helmValues", []string{}, "List of helm values as YAML file reference or URL (as per helm parameter description for `-f` / `--values`)")
cmd.Flags().BoolVar(&stepConfig.RenderSubchartNotes, "renderSubchartNotes", true, "If set, render subchart notes along with the parent.")
cmd.Flags().StringVar(&stepConfig.GithubToken, "githubToken", os.Getenv("PIPER_githubToken"), "GitHub personal access token as per https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line")
cmd.Flags().StringVar(&stepConfig.Image, "image", os.Getenv("PIPER_image"), "Full name of the image to be deployed.")
cmd.Flags().StringSliceVar(&stepConfig.ImageNames, "imageNames", []string{}, "List of names of the images to be deployed.")
@ -444,6 +446,15 @@ func kubernetesDeployMetadata() config.StepData {
Mandatory: false,
Aliases: []config.Alias{},
},
{
Name: "renderSubchartNotes",
ResourceRef: []config.ResourceReference{},
Scope: []string{"GENERAL", "PARAMETERS", "STAGES", "STEPS"},
Type: "bool",
Mandatory: false,
Aliases: []config.Alias{},
Default: true,
},
{
Name: "githubToken",
ResourceRef: []config.ResourceReference{

View File

@ -43,6 +43,7 @@ func TestRunKubernetesDeploy(t *testing.T) {
DeploymentName: "deploymentName",
DeployTool: "helm",
ForceUpdates: true,
RenderSubchartNotes: true,
HelmDeployWaitSeconds: 400,
IngressHosts: []string{"ingress.host1", "ingress.host2"},
Image: "path/to/Image:latest",
@ -90,6 +91,7 @@ func TestRunKubernetesDeploy(t *testing.T) {
"--atomic",
"--kube-context",
"testCluster",
"--render-subchart-notes",
"--testParam",
"testValue",
}, mockUtils.Calls[2].Params, "Wrong upgrade parameters")

View File

@ -61,6 +61,7 @@ type HelmExecuteOptions struct {
SourceRepositoryPassword string `json:"sourceRepositoryPassword,omitempty"`
HelmCommand string `json:"helmCommand,omitempty"`
CustomTLSCertificateLinks []string `json:"customTlsCertificateLinks,omitempty"`
RenderSubchartNotes bool `json:"renderSubchartNotes,omitempty"`
}
// NewHelmExecutor creates HelmExecute instance
@ -168,6 +169,10 @@ func (h *HelmExecute) RunHelmUpgrade() error {
helmParams = append(helmParams, "--atomic")
}
if h.config.RenderSubchartNotes {
helmParams = append(helmParams, "--render-subchart-notes")
}
if len(h.config.AdditionalParameters) > 0 {
helmParams = append(helmParams, h.config.AdditionalParameters...)
}
@ -230,16 +235,24 @@ func (h *HelmExecute) RunHelmInstall() error {
}
helmParams = append(helmParams, "--namespace", h.config.Namespace)
helmParams = append(helmParams, "--create-namespace")
if !h.config.KeepFailedDeployments {
helmParams = append(helmParams, "--atomic")
}
helmParams = append(helmParams, "--wait", "--timeout", fmt.Sprintf("%vs", h.config.HelmDeployWaitSeconds))
for _, v := range h.config.HelmValues {
helmParams = append(helmParams, "--values", v)
}
if h.config.RenderSubchartNotes {
helmParams = append(helmParams, "--render-subchart-notes")
}
if len(h.config.AdditionalParameters) > 0 {
helmParams = append(helmParams, h.config.AdditionalParameters...)
}
if h.verbose {
helmParams = append(helmParams, "--debug")
}

View File

@ -131,11 +131,12 @@ func TestRunHelmUpgrade(t *testing.T) {
Image: "dtzar/helm-kubectl:3.4.1",
TargetRepositoryName: "test",
TargetRepositoryURL: "https://charts.helm.sh/stable",
RenderSubchartNotes: true,
},
generalVerbose: true,
expectedExecCalls: []mock.ExecCall{
{Exec: "helm", Params: []string{"repo", "add", "test", "https://charts.helm.sh/stable", "--debug"}},
{Exec: "helm", Params: []string{"upgrade", "test_deployment", "test", "--debug", "--install", "--namespace", "test_namespace", "--force", "--wait", "--timeout", "3456s", "--atomic", "additional parameter"}},
{Exec: "helm", Params: []string{"upgrade", "test_deployment", "test", "--debug", "--install", "--namespace", "test_namespace", "--force", "--wait", "--timeout", "3456s", "--atomic", "--render-subchart-notes", "additional parameter"}},
},
},
{
@ -231,11 +232,12 @@ func TestRunHelmInstall(t *testing.T) {
HelmDeployWaitSeconds: 525,
TargetRepositoryURL: "https://charts.helm.sh/stable",
TargetRepositoryName: "test",
RenderSubchartNotes: true,
},
generalVerbose: false,
expectedExecCalls: []mock.ExecCall{
{Exec: "helm", Params: []string{"repo", "add", "test", "https://charts.helm.sh/stable"}},
{Exec: "helm", Params: []string{"install", "testPackage", "test", "--namespace", "test-namespace", "--create-namespace", "--atomic", "--wait", "--timeout", "525s"}},
{Exec: "helm", Params: []string{"install", "testPackage", "test", "--namespace", "test-namespace", "--create-namespace", "--atomic", "--wait", "--timeout", "525s", "--render-subchart-notes"}},
},
},
{

View File

@ -336,6 +336,15 @@ spec:
- PARAMETERS
- STAGES
- STEPS
- name: renderSubchartNotes
type: bool
description: If set, render subchart notes along with the parent.
default: true
scope:
- GENERAL
- PARAMETERS
- STAGES
- STEPS
containers:
- image: dtzar/helm-kubectl:3
workingDir: /config

View File

@ -310,6 +310,15 @@ spec:
- PARAMETERS
- STAGES
- STEPS
- name: renderSubchartNotes
type: bool
description: If set, render subchart notes along with the parent.
default: true
scope:
- GENERAL
- PARAMETERS
- STAGES
- STEPS
- name: githubToken
description: "GitHub personal access token as per
https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line"