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 += "