mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-12 10:55:20 +02:00
2310bb4bd5
changeId is removed from the step parameters since the changeId is specific to the build. Hence there is no reason for providing it from the deeper configuration layers.
72 lines
2.7 KiB
Groovy
72 lines
2.7 KiB
Groovy
import com.sap.piper.GitUtils
|
|
import groovy.transform.Field
|
|
|
|
import com.sap.piper.ConfigurationHelper
|
|
import com.sap.piper.ConfigurationMerger
|
|
import com.sap.piper.cm.ChangeManagement
|
|
import com.sap.piper.cm.ChangeManagementException
|
|
|
|
import hudson.AbortException
|
|
|
|
|
|
@Field def STEP_NAME = 'transportRequestRelease'
|
|
|
|
@Field Set stepConfigurationKeys = [
|
|
'credentialsId',
|
|
'cmClientOpts',
|
|
'endpoint'
|
|
]
|
|
|
|
@Field Set parameterKeys = stepConfigurationKeys.plus([
|
|
'changeDocumentId',
|
|
'transportRequestId',
|
|
])
|
|
|
|
@Field Set generalConfigurationKeys = stepConfigurationKeys
|
|
|
|
def call(parameters = [:]) {
|
|
|
|
handlePipelineStepErrors (stepName: STEP_NAME, stepParameters: parameters) {
|
|
|
|
def script = parameters?.script ?: [commonPipelineEnvironment: commonPipelineEnvironment]
|
|
|
|
ChangeManagement cm = new ChangeManagement(script)
|
|
|
|
Map configuration = ConfigurationHelper
|
|
.loadStepDefaults(this)
|
|
.mixinGeneralConfig(script.commonPipelineEnvironment, generalConfigurationKeys)
|
|
.mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, stepConfigurationKeys)
|
|
.mixinStepConfig(script.commonPipelineEnvironment, stepConfigurationKeys)
|
|
.mixin(parameters, parameterKeys)
|
|
.use()
|
|
|
|
def changeDocumentId = configuration.changeDocumentId
|
|
if(!changeDocumentId) throw new AbortException("Change document id not provided (parameter: 'changeDocumentId').")
|
|
|
|
def transportRequestId = configuration.transportRequestId
|
|
if(!transportRequestId) throw new AbortException("Transport Request id not provided (parameter: 'transportRequestId').")
|
|
|
|
def credentialsId = configuration.credentialsId
|
|
if(!credentialsId) throw new AbortException("Credentials id not provided (parameter: 'credentialsId').")
|
|
|
|
def endpoint = configuration.endpoint
|
|
if(!endpoint) throw new AbortException("Solution Manager endpoint not provided (parameter: 'endpoint').")
|
|
|
|
echo "[INFO] Closing transport request '$transportRequestId' for change document '$changeDocumentId'."
|
|
|
|
withCredentials([usernamePassword(
|
|
credentialsId: credentialsId,
|
|
passwordVariable: 'password',
|
|
usernameVariable: 'username')]) {
|
|
|
|
try {
|
|
cm.releaseTransportRequest(changeDocumentId, transportRequestId, endpoint, username, password, configuration.cmClientOpts)
|
|
} catch(ChangeManagementException ex) {
|
|
throw new AbortException(ex.getMessage())
|
|
}
|
|
}
|
|
|
|
echo "[INFO] Transport Request '${transportRequestId}' has been successfully closed."
|
|
}
|
|
}
|