Skip to content

Commit

Permalink
feat(trustengine): Add new resource reference to parameter docs gener…
Browse files Browse the repository at this point in the history
…ation (#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 <>
  • Loading branch information
jliempt authored Sep 16, 2024
1 parent 442d9ff commit 1b711fd
Showing 1 changed file with 45 additions and 19 deletions.
64 changes: 45 additions & 19 deletions pkg/documentation/generator/parameters.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down Expand Up @@ -85,19 +93,19 @@ 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)
jenkinsParams := []string{"containerCommand", "containerName", "containerShell", "dockerVolumeBind", "dockerWorkspace", "sidecarReadyCommand", "sidecarWorkspace", "stashContent"}
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)
}
Expand All @@ -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))
Expand Down Expand Up @@ -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
}

Expand Down

0 comments on commit 1b711fd

Please sign in to comment.