From 1b711fd4b1287c8fa33f843d28d4b7573471e34e Mon Sep 17 00:00:00 2001 From: Jordi van Liempt <35920075+jliempt@users.noreply.github.com> Date: Mon, 16 Sep 2024 09:23:33 +0200 Subject: [PATCH] feat(trustengine): Add new resource reference to parameter docs generation (#5038) * add trust engine resource reference to parameter docs generation * test with added resource ref * remove test resource ref * use trustengineSecret const --------- Co-authored-by: jliempt <> --- pkg/documentation/generator/parameters.go | 64 ++++++++++++++++------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/pkg/documentation/generator/parameters.go b/pkg/documentation/generator/parameters.go index bb66c832b9..2fe57c2ad0 100644 --- a/pkg/documentation/generator/parameters.go +++ b/pkg/documentation/generator/parameters.go @@ -9,6 +9,14 @@ import ( "github.com/SAP/jenkins-library/pkg/config" ) +const ( + vaultBadge = "[Vault](https://img.shields.io/badge/-Vault-lightgrey)" + jenkinsOnlyBadge = "[Jenkins only](https://img.shields.io/badge/-Jenkins%20only-yellowgreen)" + secretBadge = "[Secret](https://img.shields.io/badge/-Secret-yellowgreen)" + trustengineBadge = "[Trust Engine](https://img.shields.io/badge/-Trust Engine-lightblue)" + deprecatedBadge = "[deprecated](https://img.shields.io/badge/-deprecated-red)" +) + // Replaces the Parameters placeholder with the content from the yaml func createParametersSection(stepData *config.StepData) string { @@ -85,7 +93,7 @@ func parameterFurtherInfo(paramName string, stepData *config.StepData, execution } if paramName == "script" { - return checkParameterInfo("[![Jenkins only](https://img.shields.io/badge/-Jenkins%20only-yellowgreen)](#) reference to Jenkins main pipeline script", true, executionEnvironment) + return checkParameterInfo(fmt.Sprintf("[!%s](#) reference to Jenkins main pipeline script", jenkinsOnlyBadge), true, executionEnvironment) } // handle non-step parameters (e.g. Jenkins-specific parameters as well as execution environment parameters) @@ -93,11 +101,11 @@ func parameterFurtherInfo(paramName string, stepData *config.StepData, execution if !contains(stepParameterNames, paramName) { for _, secret := range stepData.Spec.Inputs.Secrets { if paramName == secret.Name && secret.Type == "jenkins" { - return checkParameterInfo("[![Jenkins only](https://img.shields.io/badge/-Jenkins%20only-yellowgreen)](#) id of credentials ([using credentials](https://www.jenkins.io/doc/book/using/using-credentials/))", true, executionEnvironment) + return checkParameterInfo(fmt.Sprintf("[!%s](#) id of credentials ([using credentials](https://www.jenkins.io/doc/book/using/using-credentials/))", jenkinsOnlyBadge), true, executionEnvironment) } } if contains(jenkinsParams, paramName) { - return checkParameterInfo("[![Jenkins only](https://img.shields.io/badge/-Jenkins%20only-yellowgreen)](#)", false, executionEnvironment) + return checkParameterInfo(fmt.Sprintf("[!%s](#)", jenkinsOnlyBadge), false, executionEnvironment) } return checkParameterInfo("", false, executionEnvironment) } @@ -107,14 +115,19 @@ func parameterFurtherInfo(paramName string, stepData *config.StepData, execution if paramName == param.Name { furtherInfo := "" if param.DeprecationMessage != "" { - furtherInfo += "![deprecated](https://img.shields.io/badge/-deprecated-red)" + furtherInfo += fmt.Sprintf("!%s", deprecatedBadge) } if param.Secret { - secretInfo := "[![Secret](https://img.shields.io/badge/-Secret-yellowgreen)](#) pass via ENV or Jenkins credentials" - if param.GetReference("vaultSecret") != nil || param.GetReference("vaultSecretFile") != nil { - secretInfo = " [![Vault](https://img.shields.io/badge/-Vault-lightgrey)](#) [![Secret](https://img.shields.io/badge/-Secret-yellowgreen)](/) pass via ENV, Vault or Jenkins credentials" - + secretInfo := fmt.Sprintf("[!%s](#) pass via ENV or Jenkins credentials", secretBadge) + + isVaultSecret := param.GetReference("vaultSecret") != nil || param.GetReference("vaultSecretFile") != nil + isTrustengineSecret := param.GetReference(config.RefTypeTrustengineSecret) != nil + if isVaultSecret && isTrustengineSecret { + secretInfo = fmt.Sprintf(" [!%s](#) [!%s](#) [!%s](/) pass via ENV, Vault, Trust Engine or Jenkins credentials", vaultBadge, trustengineBadge, secretBadge) + } else if isVaultSecret { + secretInfo = fmt.Sprintf(" [!%s](#) [!%s](/) pass via ENV, Vault or Jenkins credentials", vaultBadge, secretBadge) } + for _, res := range param.ResourceRef { if res.Type == "secret" { secretInfo += fmt.Sprintf(" ([`%v`](#%v))", res.Name, strings.ToLower(res.Name)) @@ -329,24 +342,37 @@ func resourceReferenceDetails(resourceRef []config.ResourceReference) string { continue } - resourceDetails = addVaultResourceDetails(resource, resourceDetails) + if resource.Type == "vaultSecret" || resource.Type == "vaultSecretFile" { + resourceDetails = addVaultResourceDetails(resource, resourceDetails) + continue + } + if resource.Type == config.RefTypeTrustengineSecret { + resourceDetails = addTrustEngineResourceDetails(resource, resourceDetails) + } } return resourceDetails } func addVaultResourceDetails(resource config.ResourceReference, resourceDetails string) string { - if resource.Type == "vaultSecret" || resource.Type == "vaultSecretFile" { - resourceDetails += "
Vault resource:
" - resourceDetails += fmt.Sprintf("  name: `%v`
", resource.Name) - resourceDetails += fmt.Sprintf("  default value: `%v`
", resource.Default) - resourceDetails += "
Vault paths:
" - resourceDetails += "" + resourceDetails += "
Vault resource:
" + resourceDetails += fmt.Sprintf("  name: `%v`
", resource.Name) + resourceDetails += fmt.Sprintf("  default value: `%v`
", resource.Default) + resourceDetails += "
Vault paths:
" + resourceDetails += "" + + return resourceDetails +} + +func addTrustEngineResourceDetails(resource config.ResourceReference, resourceDetails string) string { + resourceDetails += "
Trust Engine resource:
" + resourceDetails += fmt.Sprintf("  name: `%v`
", resource.Name) + resourceDetails += fmt.Sprintf("  value: `%v`
", resource.Default) + return resourceDetails }