Skip to content

Commit b71ff0a

Browse files
authored
Extend nexusUpload to also handle npm (#1379)
1 parent 0740cbe commit b71ff0a

File tree

8 files changed

+284
-102
lines changed

8 files changed

+284
-102
lines changed

cmd/nexusUpload.go

+47-9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"path/filepath"
99
"strings"
1010

11+
b64 "encoding/base64"
12+
1113
"github.com/SAP/jenkins-library/pkg/command"
1214
"github.com/SAP/jenkins-library/pkg/log"
1315
"github.com/SAP/jenkins-library/pkg/maven"
@@ -28,6 +30,7 @@ type nexusUploadUtils interface {
2830
dirExists(path string) (bool, error)
2931
usesMta() bool
3032
usesMaven() bool
33+
usesNpm() bool
3134
getEnvParameter(path, name string) string
3235
getExecRunner() execRunner
3336
evaluate(pomFile, expression string) (string, error)
@@ -94,6 +97,10 @@ func (u *utilsBundle) usesMaven() bool {
9497
return u.projectStructure.UsesMaven()
9598
}
9699

100+
func (u *utilsBundle) usesNpm() bool {
101+
return u.projectStructure.UsesNpm()
102+
}
103+
97104
func (u *utilsBundle) getEnvParameter(path, name string) string {
98105
return piperenv.GetParameter(path, name)
99106
}
@@ -126,19 +133,50 @@ func nexusUpload(options nexusUploadOptions, _ *telemetry.CustomData) {
126133
}
127134

128135
func runNexusUpload(utils nexusUploadUtils, uploader nexus.Uploader, options *nexusUploadOptions) error {
129-
err := uploader.SetRepoURL(options.Url, options.Version, options.Repository)
136+
performMavenUpload := len(options.MavenRepository) > 0
137+
performNpmUpload := len(options.NpmRepository) > 0
138+
err := uploader.SetRepoURL(options.Url, options.Version, options.MavenRepository, options.NpmRepository)
139+
if err != nil {
140+
return err
141+
}
142+
143+
if utils.usesNpm() && performNpmUpload {
144+
log.Entry().Info("NPM project structure detected")
145+
err = uploadNpmArtifacts(utils, uploader, options)
146+
} else {
147+
log.Entry().Info("Skipping npm upload because either no package json was found or NpmRepository option is not provided.")
148+
}
130149
if err != nil {
131150
return err
132151
}
133-
if utils.usesMta() {
134-
log.Entry().Info("MTA project structure detected")
135-
return uploadMTA(utils, uploader, options)
136-
} else if utils.usesMaven() {
137-
log.Entry().Info("Maven project structure detected")
138-
return uploadMaven(utils, uploader, options)
152+
153+
if performMavenUpload {
154+
if utils.usesMta() {
155+
log.Entry().Info("MTA project structure detected")
156+
return uploadMTA(utils, uploader, options)
157+
} else if utils.usesMaven() {
158+
log.Entry().Info("Maven project structure detected")
159+
return uploadMaven(utils, uploader, options)
160+
}
139161
} else {
140-
return fmt.Errorf("unsupported project structure")
162+
log.Entry().Info("Skipping maven and mta upload because mavenRepository option is not provided.")
141163
}
164+
165+
return nil
166+
}
167+
168+
func uploadNpmArtifacts(utils nexusUploadUtils, uploader nexus.Uploader, options *nexusUploadOptions) error {
169+
execRunner := utils.getExecRunner()
170+
environment := []string{"npm_config_registry=http://" + uploader.GetNpmRepoURL(), "[email protected]"}
171+
if options.User != "" && options.Password != "" {
172+
auth := b64.StdEncoding.EncodeToString([]byte(options.User + ":" + options.Password))
173+
environment = append(environment, "npm_config__auth="+auth)
174+
} else {
175+
log.Entry().Info("No credentials provided for npm upload, trying to upload anonymously.")
176+
}
177+
execRunner.SetEnv(environment)
178+
err := execRunner.RunExecutable("npm", "publish")
179+
return err
142180
}
143181

144182
func uploadMTA(utils nexusUploadUtils, uploader nexus.Uploader, options *nexusUploadOptions) error {
@@ -270,7 +308,7 @@ func uploadArtifacts(utils nexusUploadUtils, uploader nexus.Uploader, options *n
270308
}
271309

272310
var defines []string
273-
defines = append(defines, "-Durl=http://"+uploader.GetRepoURL())
311+
defines = append(defines, "-Durl=http://"+uploader.GetMavenRepoURL())
274312
defines = append(defines, "-DgroupId="+uploader.GetGroupID())
275313
defines = append(defines, "-Dversion="+uploader.GetArtifactsVersion())
276314
defines = append(defines, "-DartifactId="+uploader.GetArtifactsID())

cmd/nexusUpload_generated.go

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

0 commit comments

Comments
 (0)