Skip to content

Commit bc8225c

Browse files
anilkeshav27CCFennertiloKovstarostin
authored
feat(build): add buildSettingsInfo for gradleExecuteBuild (#5043)
* creating build settings info from gradle build * fix linting issue and typo * fixing step description * Apply suggestions from code review Co-authored-by: Tilo Körner <[email protected]> * Address code review comments * Fix tests * Fix tests * Fix tests * Fix test --------- Co-authored-by: Christopher Fenner <[email protected]> Co-authored-by: Tilo Körner <[email protected]> Co-authored-by: Vyacheslav Starostin <[email protected]> Co-authored-by: Vyacheslav Starostin <[email protected]>
1 parent af05aca commit bc8225c

File tree

5 files changed

+68
-20
lines changed

5 files changed

+68
-20
lines changed

cmd/gradleExecuteBuild.go

+22-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strings"
1010
"text/template"
1111

12+
"github.com/SAP/jenkins-library/pkg/buildsettings"
1213
"github.com/SAP/jenkins-library/pkg/command"
1314
"github.com/SAP/jenkins-library/pkg/gradle"
1415
"github.com/SAP/jenkins-library/pkg/log"
@@ -18,7 +19,8 @@ import (
1819
)
1920

2021
const (
21-
gradleBomFilename = "bom-gradle"
22+
gradleBomFilename = "bom-gradle"
23+
stepNameForBuildSettings = "gradleExecuteBuild"
2224
)
2325

2426
var (
@@ -189,6 +191,25 @@ func runGradleExecuteBuild(config *gradleExecuteBuildOptions, telemetryData *tel
189191
return err
190192
}
191193

194+
log.Entry().Debugf("creating build settings information...")
195+
196+
dockerImage, err := GetDockerImageValue(stepNameForBuildSettings)
197+
if err != nil {
198+
return fmt.Errorf("failed to retrieve dockerImage configuration: %w", err)
199+
}
200+
201+
gradleConfig := buildsettings.BuildOptions{
202+
CreateBOM: config.CreateBOM,
203+
Publish: config.Publish,
204+
BuildSettingsInfo: config.BuildSettingsInfo,
205+
DockerImage: dockerImage,
206+
}
207+
buildSettingsInfo, err := buildsettings.CreateBuildSettingsInfo(&gradleConfig, stepNameForBuildSettings)
208+
if err != nil {
209+
log.Entry().Warnf("failed to create build settings info: %v", err)
210+
}
211+
pipelineEnv.custom.buildSettingsInfo = buildSettingsInfo
212+
192213
log.Entry().Info("Publishing of artifacts to staging repository...")
193214
if config.Publish {
194215
if err := publishArtifacts(config, utils, pipelineEnv); err != nil {

cmd/gradleExecuteBuild_generated.go

+20-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/buildsettings/buildSettings.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import (
99
)
1010

1111
type BuildSettings struct {
12-
GolangBuild []BuildOptions `json:"golangBuild,omitempty"`
13-
GradleBuild []BuildOptions `json:"gradleBuild,omitempty"`
14-
HelmExecute []BuildOptions `json:"helmExecute,omitempty"`
15-
KanikoExecute []BuildOptions `json:"kanikoExecute,omitempty"`
16-
MavenBuild []BuildOptions `json:"mavenBuild,omitempty"`
17-
MtaBuild []BuildOptions `json:"mtaBuild,omitempty"`
18-
PythonBuild []BuildOptions `json:"pythonBuild,omitempty"`
19-
NpmExecuteScripts []BuildOptions `json:"npmExecuteScripts,omitempty"`
20-
CnbBuild []BuildOptions `json:"cnbBuild,omitempty"`
12+
GolangBuild []BuildOptions `json:"golangBuild,omitempty"`
13+
GradleExecuteBuild []BuildOptions `json:"gradleExecuteBuild,omitempty"`
14+
HelmExecute []BuildOptions `json:"helmExecute,omitempty"`
15+
KanikoExecute []BuildOptions `json:"kanikoExecute,omitempty"`
16+
MavenBuild []BuildOptions `json:"mavenBuild,omitempty"`
17+
MtaBuild []BuildOptions `json:"mtaBuild,omitempty"`
18+
PythonBuild []BuildOptions `json:"pythonBuild,omitempty"`
19+
NpmExecuteScripts []BuildOptions `json:"npmExecuteScripts,omitempty"`
20+
CnbBuild []BuildOptions `json:"cnbBuild,omitempty"`
2121
}
2222

2323
type BuildOptions struct {
@@ -74,9 +74,9 @@ func CreateBuildSettingsInfo(config *BuildOptions, buildTool string) (string, er
7474
jsonResult, err = json.Marshal(BuildSettings{
7575
GolangBuild: settings,
7676
})
77-
case "gradleBuild":
77+
case "gradleExecuteBuild":
7878
jsonResult, err = json.Marshal(BuildSettings{
79-
GradleBuild: settings,
79+
GradleExecuteBuild: settings,
8080
})
8181
case "helmExecute":
8282
jsonResult, err = json.Marshal(BuildSettings{

pkg/buildsettings/buildSettings_test.go

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
//go:build unit
2-
// +build unit
3-
41
package buildsettings
52

63
import (
@@ -28,9 +25,9 @@ func TestCreateBuildSettingsInfo(t *testing.T) {
2825
expected: "{\"golangBuild\":[{\"dockerImage\":\"golang:latest\"}]}",
2926
},
3027
{
31-
config: BuildOptions{CreateBOM: true},
32-
buildTool: "gradleBuild",
33-
expected: "{\"gradleBuild\":[{\"createBOM\":true}]}",
28+
config: BuildOptions{CreateBOM: true, DockerImage: "gradle:latest"},
29+
buildTool: "gradleExecuteBuild",
30+
expected: "{\"gradleExecuteBuild\":[{\"createBOM\":true,\"dockerImage\":\"gradle:latest\"}]}",
3431
},
3532
{
3633
config: BuildOptions{Publish: true},
@@ -77,7 +74,7 @@ func TestCreateBuildSettingsInfo(t *testing.T) {
7774
for _, testCase := range testTableConfig {
7875
buildSettings, err := CreateBuildSettingsInfo(&testCase.config, testCase.buildTool)
7976
assert.Nil(t, err)
80-
assert.Equal(t, buildSettings, testCase.expected)
77+
assert.Equal(t, testCase.expected, buildSettings)
8178
}
8279
})
8380

resources/metadata/gradleExecuteBuild.yaml

+11
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,16 @@ spec:
157157
- PARAMETERS
158158
- STAGES
159159
- STEPS
160+
- name: buildSettingsInfo
161+
type: string
162+
description: build settings info is typically filled by the step automatically to create information about the build settings that were used during the gradle build. This information is typically used for compliance related processes.
163+
scope:
164+
- STEPS
165+
- STAGES
166+
- PARAMETERS
167+
resourceRef:
168+
- name: commonPipelineEnvironment
169+
param: custom/buildSettingsInfo
160170
outputs:
161171
resources:
162172
- name: reports
@@ -169,6 +179,7 @@ spec:
169179
params:
170180
- name: custom/artifacts
171181
type: "piperenv.Artifacts"
182+
- name: custom/buildSettingsInfo
172183
containers:
173184
- name: gradle
174185
image: gradle:6-jdk11-alpine

0 commit comments

Comments
 (0)