mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-01-04 04:07:16 +02:00
b7468a7ae4
Having the step name always the same like the file name, which is in turn the class name is redundant.
122 lines
5.1 KiB
Groovy
122 lines
5.1 KiB
Groovy
import static com.sap.piper.Prerequisites.checkScript
|
|
|
|
import com.sap.piper.Utils
|
|
import groovy.transform.Field
|
|
|
|
import com.sap.piper.ConfigurationHelper
|
|
import com.sap.piper.cm.ChangeManagement
|
|
import com.sap.piper.cm.BackendType
|
|
import com.sap.piper.cm.ChangeManagementException
|
|
|
|
import hudson.AbortException
|
|
|
|
import static com.sap.piper.cm.StepHelpers.getTransportRequestId
|
|
import static com.sap.piper.cm.StepHelpers.getChangeDocumentId
|
|
import static com.sap.piper.cm.StepHelpers.getBackendTypeAndLogInfoIfCMIntegrationDisabled
|
|
|
|
@Field def STEP_NAME = getClass().getName()
|
|
|
|
@Field Set GENERAL_CONFIG_KEYS = [
|
|
'changeManagement'
|
|
]
|
|
|
|
@Field Set STEP_CONFIG_KEYS = GENERAL_CONFIG_KEYS.plus([
|
|
'applicationId'
|
|
])
|
|
|
|
@Field Set PARAMETER_KEYS = STEP_CONFIG_KEYS.plus([
|
|
'changeDocumentId',
|
|
'filePath',
|
|
'transportRequestId'])
|
|
|
|
void call(parameters = [:]) {
|
|
|
|
handlePipelineStepErrors (stepName: STEP_NAME, stepParameters: parameters) {
|
|
|
|
def script = checkScript(this, parameters) ?: this
|
|
|
|
ChangeManagement cm = parameters.cmUtils ?: new ChangeManagement(script)
|
|
|
|
ConfigurationHelper configHelper = ConfigurationHelper.newInstance(this)
|
|
.loadStepDefaults()
|
|
.mixinGeneralConfig(script.commonPipelineEnvironment, GENERAL_CONFIG_KEYS)
|
|
.mixinStepConfig(script.commonPipelineEnvironment, STEP_CONFIG_KEYS)
|
|
.mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, STEP_CONFIG_KEYS)
|
|
.mixin(parameters, PARAMETER_KEYS)
|
|
.addIfEmpty('filePath', script.commonPipelineEnvironment.getMtarFilePath())
|
|
|
|
Map configuration = configHelper.use()
|
|
|
|
BackendType backendType = getBackendTypeAndLogInfoIfCMIntegrationDisabled(this, configuration)
|
|
if(backendType == BackendType.NONE) return
|
|
|
|
configHelper
|
|
.withMandatoryProperty('changeManagement/changeDocumentLabel')
|
|
.withMandatoryProperty('changeManagement/clientOpts')
|
|
.withMandatoryProperty('changeManagement/credentialsId')
|
|
.withMandatoryProperty('changeManagement/endpoint')
|
|
.withMandatoryProperty('changeManagement/type')
|
|
.withMandatoryProperty('changeManagement/git/from')
|
|
.withMandatoryProperty('changeManagement/git/to')
|
|
.withMandatoryProperty('changeManagement/git/format')
|
|
.withMandatoryProperty('filePath')
|
|
|
|
new Utils().pushToSWA([step: STEP_NAME,
|
|
stepParam1: configuration.changeManagement.type,
|
|
stepParam2: parameters?.script == null], configuration)
|
|
|
|
def changeDocumentId = null
|
|
|
|
if(backendType == BackendType.SOLMAN) {
|
|
changeDocumentId = getChangeDocumentId(cm, script, configuration)
|
|
}
|
|
|
|
def transportRequestId = getTransportRequestId(cm, script, configuration)
|
|
|
|
configHelper
|
|
.mixin([changeDocumentId: changeDocumentId?.trim() ?: null,
|
|
transportRequestId: transportRequestId?.trim() ?: null], ['changeDocumentId', 'transportRequestId'] as Set)
|
|
|
|
if(backendType == BackendType.SOLMAN) {
|
|
configHelper
|
|
.withMandatoryProperty('changeDocumentId',
|
|
"Change document id not provided (parameter: \'changeDocumentId\' or via commit history).")
|
|
.withMandatoryProperty('applicationId')
|
|
}
|
|
configuration = configHelper
|
|
.withMandatoryProperty('transportRequestId',
|
|
"Transport request id not provided (parameter: \'transportRequestId\' or via commit history).")
|
|
.use()
|
|
|
|
def uploadingMessage = ["[INFO] Uploading file '${configuration.filePath}' to transport request '${configuration.transportRequestId}'"]
|
|
if(backendType == BackendType.SOLMAN)
|
|
uploadingMessage << " of change document '${configuration.changeDocumentId}'"
|
|
uploadingMessage << '.'
|
|
|
|
echo uploadingMessage.join()
|
|
|
|
try {
|
|
|
|
|
|
cm.uploadFileToTransportRequest(backendType,
|
|
configuration.changeDocumentId,
|
|
configuration.transportRequestId,
|
|
configuration.applicationId,
|
|
configuration.filePath,
|
|
configuration.changeManagement.endpoint,
|
|
configuration.changeManagement.credentialsId,
|
|
configuration.changeManagement.clientOpts)
|
|
|
|
} catch(ChangeManagementException ex) {
|
|
throw new AbortException(ex.getMessage())
|
|
}
|
|
|
|
|
|
def uploadedMessage = ["[INFO] File '${configuration.filePath}' has been successfully uploaded to transport request '${configuration.transportRequestId}'"]
|
|
if(backendType == BackendType.SOLMAN)
|
|
uploadedMessage << " of change document '${configuration.changeDocumentId}'"
|
|
uploadedMessage << '.'
|
|
echo uploadedMessage.join()
|
|
}
|
|
}
|