1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-09-16 09:26:22 +02:00

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 <>
This commit is contained in:
Jordi van Liempt
2024-09-16 09:23:33 +02:00
committed by GitHub
parent 442d9ffe0c
commit 1b711fd4b1

View File

@@ -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 += "<br/>Vault resource:<br />"
resourceDetails += fmt.Sprintf("&nbsp;&nbsp;name: `%v`<br />", resource.Name)
resourceDetails += fmt.Sprintf("&nbsp;&nbsp;default value: `%v`<br />", resource.Default)
resourceDetails += "<br/>Vault paths: <br />"
resourceDetails += "<ul>"
for _, rootPath := range config.VaultRootPaths {
resourceDetails += fmt.Sprintf("<li>`%s`</li>", path.Join(rootPath, resource.Default))
}
resourceDetails += "</ul>"
resourceDetails += "<br/>Vault resource:<br />"
resourceDetails += fmt.Sprintf("&nbsp;&nbsp;name: `%v`<br />", resource.Name)
resourceDetails += fmt.Sprintf("&nbsp;&nbsp;default value: `%v`<br />", resource.Default)
resourceDetails += "<br/>Vault paths: <br />"
resourceDetails += "<ul>"
for _, rootPath := range config.VaultRootPaths {
resourceDetails += fmt.Sprintf("<li>`%s`</li>", path.Join(rootPath, resource.Default))
}
resourceDetails += "</ul>"
return resourceDetails
}
func addTrustEngineResourceDetails(resource config.ResourceReference, resourceDetails string) string {
resourceDetails += "<br/>Trust Engine resource:<br />"
resourceDetails += fmt.Sprintf("&nbsp;&nbsp;name: `%v`<br />", resource.Name)
resourceDetails += fmt.Sprintf("&nbsp;&nbsp;value: `%v`<br />", resource.Default)
return resourceDetails
}