Skip to content

Commit c11e8d4

Browse files
authored
bugfix(add .xml extension to default maven settings path and use constant) (#5253)
1 parent d12e283 commit c11e8d4

File tree

2 files changed

+30
-36
lines changed

2 files changed

+30
-36
lines changed

pkg/maven/settings.go

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
"github.com/SAP/jenkins-library/pkg/log"
1313
)
1414

15+
const defaultMavenProjectSettingsPath = ".pipeline/mavenProjectSettings.xml"
16+
1517
var getenv = os.Getenv
1618

1719
// SettingsDownloadUtils defines an interface for downloading and storing maven settings files.
@@ -40,7 +42,7 @@ func DownloadAndGetMavenParameters(globalSettingsFile string, projectSettingsFil
4042
}
4143

4244
if len(projectSettingsFile) > 0 {
43-
projectSettingsFileName, err := getSettingsFilePath(projectSettingsFile, ".pipeline/mavenProjectSettings.xml", utils, false)
45+
projectSettingsFileName, err := getSettingsFilePath(projectSettingsFile, defaultMavenProjectSettingsPath, utils, false)
4446
if err != nil {
4547
return nil, err
4648
}
@@ -66,7 +68,6 @@ func DownloadAndCopySettingsFiles(globalSettingsFile string, projectSettingsFile
6668
return err
6769
}
6870
} else {
69-
7071
log.Entry().Debugf("Project settings file not provided via configuration.")
7172
}
7273

@@ -79,7 +80,6 @@ func DownloadAndCopySettingsFiles(globalSettingsFile string, projectSettingsFile
7980
return err
8081
}
8182
} else {
82-
8383
log.Entry().Debugf("Global settings file not provided via configuration.")
8484
}
8585

@@ -98,9 +98,7 @@ func UpdateActiveProfileInSettingsXML(newActiveProfiles []string, utils Settings
9898
}
9999

100100
var projectSettings Settings
101-
err = xml.Unmarshal([]byte(settingsXMLContent), &projectSettings)
102-
103-
if err != nil {
101+
if err = xml.Unmarshal(settingsXMLContent, &projectSettings); err != nil {
104102
return fmt.Errorf("failed to unmarshal settings xml file '%v': %w", settingsFile, err)
105103
}
106104

@@ -123,9 +121,7 @@ func UpdateActiveProfileInSettingsXML(newActiveProfiles []string, utils Settings
123121
settingsXmlString = Replacer.Replace(settingsXmlString)
124122
xmlstring := []byte(xml.Header + settingsXmlString)
125123

126-
err = utils.FileWrite(settingsFile, xmlstring, 0777)
127-
128-
if err != nil {
124+
if err = utils.FileWrite(settingsFile, xmlstring, 0777); err != nil {
129125
return fmt.Errorf("failed to write maven Settings during <activeProfile> update xml: %w", err)
130126
}
131127
log.Entry().Infof("Successfully updated <acitveProfile> details in maven settings file : '%s'", settingsFile)
@@ -157,25 +153,26 @@ func CreateNewProjectSettingsXML(altDeploymentRepositoryID string, altDeployment
157153

158154
xmlstring = []byte(xml.Header + string(xmlstring))
159155

160-
err = utils.FileWrite(".pipeline/mavenProjectSettings.xml", xmlstring, 0777)
161-
if err != nil {
156+
if err = utils.FileWrite(defaultMavenProjectSettingsPath, xmlstring, 0777); err != nil {
162157
return "", fmt.Errorf("failed to write maven Project Settings xml: %w", err)
163158
}
164159

165-
log.Entry().Infof("Successfully created maven project settings with <server> details at .pipeline/mavenProjectSettings.xml")
160+
log.Entry().Infof("Successfully created maven project settings with <server> details at %s", defaultMavenProjectSettingsPath)
166161

167-
return ".pipeline/mavenProjectSettings.xml", nil
162+
return defaultMavenProjectSettingsPath, nil
168163

169164
}
170165

171166
func UpdateProjectSettingsXML(projectSettingsFile string, altDeploymentRepositoryID string, altDeploymentRepositoryUser string, altDeploymentRepositoryPassword string, utils SettingsDownloadUtils) (string, error) {
172-
projectSettingsFileDestination := ".pipeline/mavenProjectSettings"
167+
projectSettingsFileDestination := defaultMavenProjectSettingsPath
173168
var err error
174169
if exists, _ := utils.FileExists(projectSettingsFile); exists {
170+
log.Entry().Debugf("Project settings file provided via configuration: %s", projectSettingsFile)
175171
projectSettingsFileDestination = projectSettingsFile
176172
err = addServerTagtoProjectSettingsXML(projectSettingsFile, altDeploymentRepositoryID, altDeploymentRepositoryUser, altDeploymentRepositoryPassword, utils)
177173
} else {
178-
err = addServerTagtoProjectSettingsXML(".pipeline/mavenProjectSettings", altDeploymentRepositoryID, altDeploymentRepositoryUser, altDeploymentRepositoryPassword, utils)
174+
log.Entry().Debugf("Project settings file provided '%s' does not exist. Using default location: %s", projectSettingsFile, defaultMavenProjectSettingsPath)
175+
err = addServerTagtoProjectSettingsXML(defaultMavenProjectSettingsPath, altDeploymentRepositoryID, altDeploymentRepositoryUser, altDeploymentRepositoryPassword, utils)
179176
}
180177

181178
if err != nil {
@@ -246,31 +243,28 @@ func downloadAndCopySettingsFile(src string, dest string, utils SettingsDownload
246243
log.Entry().Debugf("Copying file \"%s\" to \"%s\"", src, dest)
247244

248245
if strings.HasPrefix(src, "http:") || strings.HasPrefix(src, "https:") {
249-
err := downloadSettingsFromURL(src, dest, utils, true)
250-
if err != nil {
246+
if err := downloadSettingsFromURL(src, dest, utils, true); err != nil {
251247
return err
252248
}
253-
} else {
254-
255-
// for sake os symmetry it would be better to use a file protocol prefix here (file:)
256249

257-
parent := filepath.Dir(dest)
250+
return nil
251+
}
258252

259-
parentFolderExists, err := utils.FileExists(parent)
253+
// for sake os symmetry it would be better to use a file protocol prefix here (file:)
254+
parent := filepath.Dir(dest)
255+
parentFolderExists, err := utils.FileExists(parent)
256+
if err != nil {
257+
return err
258+
}
260259

261-
if err != nil {
260+
if !parentFolderExists {
261+
if err = utils.MkdirAll(parent, 0775); err != nil {
262262
return err
263263
}
264+
}
264265

265-
if !parentFolderExists {
266-
if err = utils.MkdirAll(parent, 0775); err != nil {
267-
return err
268-
}
269-
}
270-
271-
if _, err := utils.Copy(src, dest); err != nil {
272-
return err
273-
}
266+
if _, err := utils.Copy(src, dest); err != nil {
267+
return err
274268
}
275269

276270
return nil

pkg/maven/settings_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ func TestSettings(t *testing.T) {
140140

141141
xmlstring := []byte(xml.Header + settingsXmlString)
142142

143-
utilsMock.FileWrite(".pipeline/mavenProjectSettings", xmlstring, 0777)
143+
utilsMock.FileWrite(defaultMavenProjectSettingsPath, xmlstring, 0777)
144144

145-
projectSettingsFilePath, err := UpdateProjectSettingsXML(".pipeline/mavenProjectSettings", "dummyRepoId2", "dummyRepoUser2", "dummyRepoPassword2", utilsMock)
145+
projectSettingsFilePath, err := UpdateProjectSettingsXML(defaultMavenProjectSettingsPath, "dummyRepoId2", "dummyRepoUser2", "dummyRepoPassword2", utilsMock)
146146
if assert.NoError(t, err) {
147147
projectSettingsContent, _ := utilsMock.FileRead(projectSettingsFilePath)
148148
var projectSettings Settings
@@ -162,9 +162,9 @@ func TestSettings(t *testing.T) {
162162

163163
utilsMock := newSettingsDownloadTestUtilsBundle()
164164
xmlstring := []byte("well this is obviously invalid")
165-
utilsMock.FileWrite(".pipeline/mavenProjectSettings", xmlstring, 0777)
165+
utilsMock.FileWrite(defaultMavenProjectSettingsPath, xmlstring, 0777)
166166

167-
_, err := UpdateProjectSettingsXML(".pipeline/mavenProjectSettings", "dummyRepoId2", "dummyRepoUser2", "dummyRepoPassword2", utilsMock)
167+
_, err := UpdateProjectSettingsXML(defaultMavenProjectSettingsPath, "dummyRepoId2", "dummyRepoUser2", "dummyRepoPassword2", utilsMock)
168168
if assert.Error(t, err) {
169169
assert.Contains(t, err.Error(), "failed to unmarshal settings xml file")
170170
}

0 commit comments

Comments
 (0)