mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-12 10:55:20 +02:00
3992f17b32
- NPMRegistry was always an empty string - MTA did not use npm registry
80 lines
3.1 KiB
Groovy
80 lines
3.1 KiB
Groovy
import com.sap.piper.BuildTool
|
|
import com.sap.piper.DownloadCacheUtils
|
|
import com.sap.piper.BashUtils
|
|
import groovy.transform.Field
|
|
import static com.sap.piper.Prerequisites.checkScript
|
|
|
|
@Field def STEP_NAME = getClass().getName()
|
|
@Field String METADATA_FILE = 'metadata/mavenExecute.yaml'
|
|
|
|
def call(Map parameters = [:]) {
|
|
final script = checkScript(this, parameters) ?: this
|
|
parameters = DownloadCacheUtils.injectDownloadCacheInParameters(script, parameters, BuildTool.MAVEN)
|
|
|
|
validateParameter(parameters.defines, 'defines')
|
|
validateParameter(parameters.flags, 'flags')
|
|
validateParameter(parameters.goals, 'goals')
|
|
validateStringParameter(parameters.pomPath)
|
|
validateStringParameter(parameters.projectSettingsFile)
|
|
validateStringParameter(parameters.globalSettingsFile)
|
|
validateStringParameter(parameters.m2Path)
|
|
|
|
List credentials = []
|
|
piperExecuteBin(parameters, STEP_NAME, METADATA_FILE, credentials)
|
|
|
|
String output = ''
|
|
if (parameters.returnStdout) {
|
|
String outputFile = '.pipeline/maven_output.txt'
|
|
if (!fileExists(outputFile)) {
|
|
error "[$STEP_NAME] Internal error. A text file with the contents of the maven output was expected " +
|
|
"but does not exist at '$outputFile'. " +
|
|
"Please file a ticket at https://github.com/SAP/jenkins-library/issues/new/choose"
|
|
}
|
|
output = readFile(outputFile)
|
|
}
|
|
return output
|
|
}
|
|
|
|
private void validateParameter(parameter, name) {
|
|
if (!parameter) {
|
|
return
|
|
}
|
|
|
|
String errorMessage = "Expected parameter ${name} with value ${parameter} to be of type List, but it is ${parameter.class}. "
|
|
|
|
// Specifically check for string-like types as the old step (v1.23.0 and before) allowed that as input
|
|
if (parameter in CharSequence) {
|
|
errorMessage += "This is a breaking change for mavenExecute in library version v1.24.0 which allowed strings as input for defines, flags and goals before. " +
|
|
"To fix that, please update the interface to pass in lists, or use v1.23.0 which is the last version with the old interface. "
|
|
|
|
if (parameter.contains(BashUtils.ESCAPED_SINGLE_QUOTE)) {
|
|
errorMessage += "It looks like your input contains shell escaped quotes. "
|
|
}
|
|
|
|
error errorMessage + "Note that *no* shell escaping is allowed."
|
|
}
|
|
|
|
if (!parameter in List) {
|
|
error errorMessage + "Note that *no* shell escaping is allowed."
|
|
}
|
|
|
|
for (int i = 0; i < parameter.size(); i++) {
|
|
String element = parameter[i]
|
|
validateStringParameter(element)
|
|
}
|
|
}
|
|
|
|
private void validateStringParameter(String element) {
|
|
if (!element) {
|
|
return
|
|
}
|
|
|
|
if (element =~ /-D.*='.*'/) {
|
|
echo "[$STEP_NAME WARNING] It looks like you passed a define in the form -Dmy.key='this is my value' in $element. Please note that the quotes might cause issues. Correct form: -Dmy.key=this is my value"
|
|
}
|
|
|
|
if (element.length() >= 2 && element.startsWith("'") && element.endsWith("'")) {
|
|
echo "[$STEP_NAME WARNING] It looks like $element is quoted but it should not be quoted."
|
|
}
|
|
}
|