mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
a92dd234b1
* create build settings for maven * cases for when mavenBuild may be present * fixing unit test for mavenBuild to include cpe * changing position of buildSettngsJson to be called atfter build runs * package * extending the struct for other build types * adding values for mta build settings * changing config data type * adding npm build settings * unit tests * fix trailing space * typo correction in yaml * Vitalii/build settings info (#3277) * Add buildsettings package * Improve buildSetting package for mta, npm * Add unit-test * Fix * Fix Co-authored-by: Vitalii Sidorov <vitalii.sidorov@sap.com> * review changes * removing buildTool param * changing npm script name * fix npmExecute tests * including build settings info in npm struct Co-authored-by: Your Name <you@example.com> Co-authored-by: kingvvgo <56587879+kingvvgo@users.noreply.github.com> Co-authored-by: Vitalii Sidorov <vitalii.sidorov@sap.com> Co-authored-by: Oliver Nocon <33484802+OliverNocon@users.noreply.github.com>
105 lines
3.3 KiB
Go
105 lines
3.3 KiB
Go
package buildsettings
|
|
|
|
import (
|
|
"encoding/json"
|
|
"reflect"
|
|
|
|
"github.com/SAP/jenkins-library/pkg/log"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type BuildSettings struct {
|
|
MavenBuild []BuildOptions `json:"mavenBuild,omitempty"`
|
|
NpmExecuteScripts []BuildOptions `json:"npmExecuteScripts,omitempty"`
|
|
KanikoExecute []BuildOptions `json:"kanikoExecute,omitempty"`
|
|
MtaBuild []BuildOptions `json:"mtaBuild,omitempty"`
|
|
}
|
|
|
|
type BuildOptions struct {
|
|
Profiles []string `json:"profiles,omitempty"`
|
|
Publish bool `json:"publish,omitempty"`
|
|
CreateBOM bool `json:"createBOM,omitempty"`
|
|
LogSuccessfulMavenTransfers bool `json:"logSuccessfulMavenTransfers,omitempty"`
|
|
GlobalSettingsFile string `json:"globalSettingsFile,omitempty"`
|
|
DefaultNpmRegistry string `json:"defaultNpmRegistry,omitempty"`
|
|
BuildSettingsInfo string `json:"buildSettingsInfo,omitempty"`
|
|
DockerImage string `json:"dockerImage,omitempty"`
|
|
}
|
|
|
|
func (i *BuildOptions) ToJson() ([]byte, error) {
|
|
tmp, err := json.Marshal(i)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "failed to generate valid JSON.")
|
|
} else {
|
|
return tmp, nil
|
|
}
|
|
}
|
|
|
|
func CreateBuildSettingsInfo(config *BuildOptions, buildTool string) (string, error) {
|
|
currentBuildSettingsInfo := BuildOptions{
|
|
CreateBOM: config.CreateBOM,
|
|
GlobalSettingsFile: config.GlobalSettingsFile,
|
|
LogSuccessfulMavenTransfers: config.LogSuccessfulMavenTransfers,
|
|
Profiles: config.Profiles,
|
|
Publish: config.Publish,
|
|
DefaultNpmRegistry: config.DefaultNpmRegistry,
|
|
}
|
|
var jsonMap map[string][]interface{}
|
|
var jsonResult []byte
|
|
|
|
if config.BuildSettingsInfo != "" {
|
|
|
|
err := json.Unmarshal([]byte(config.BuildSettingsInfo), &jsonMap)
|
|
if err != nil {
|
|
return "", errors.Wrapf(err, "failed to unmarshal existing build settings json '%v'", config.BuildSettingsInfo)
|
|
}
|
|
|
|
if build, exist := jsonMap[buildTool]; exist {
|
|
if reflect.TypeOf(build).Kind() == reflect.Slice {
|
|
jsonMap[buildTool] = append(build, currentBuildSettingsInfo)
|
|
}
|
|
} else {
|
|
var settings []interface{}
|
|
settings = append(settings, currentBuildSettingsInfo)
|
|
jsonMap[buildTool] = settings
|
|
}
|
|
|
|
jsonResult, err = json.Marshal(&jsonMap)
|
|
if err != nil {
|
|
return "", errors.Wrapf(err, "Creating build settings failed with json marshalling")
|
|
}
|
|
} else {
|
|
var settings []BuildOptions
|
|
settings = append(settings, currentBuildSettingsInfo)
|
|
var err error
|
|
switch buildTool {
|
|
case "mavenBuild":
|
|
jsonResult, err = json.Marshal(BuildSettings{
|
|
MavenBuild: settings,
|
|
})
|
|
case "npmExecuteScripts":
|
|
jsonResult, err = json.Marshal(BuildSettings{
|
|
NpmExecuteScripts: settings,
|
|
})
|
|
case "kanikoExecute":
|
|
jsonResult, err = json.Marshal(BuildSettings{
|
|
KanikoExecute: settings,
|
|
})
|
|
case "mtaBuild":
|
|
jsonResult, err = json.Marshal(BuildSettings{
|
|
MtaBuild: settings,
|
|
})
|
|
default:
|
|
return "", errors.Wrapf(err, "invalid buildTool '%s' for native build - '%s' not supported", buildTool, buildTool)
|
|
}
|
|
if err != nil {
|
|
return "", errors.Wrapf(err, "Creating build settings failed with json marshalling")
|
|
}
|
|
}
|
|
|
|
log.Entry().Infof("build settings infomration successfully created with '%v", string(jsonResult))
|
|
|
|
return string(jsonResult), nil
|
|
|
|
}
|