2018-06-20 11:36:41 +02:00
import com.sap.piper.GitUtils
import groovy.transform.Field
2018-07-06 09:05:26 +02:00
import com.sap.piper.ConfigurationHelper
2018-06-20 11:36:41 +02:00
import com.sap.piper.ConfigurationMerger
import com.sap.piper.cm.ChangeManagement
import com.sap.piper.cm.ChangeManagementException
import hudson.AbortException
@Field def STEP_NAME = 'transportRequestCreate'
@Field Set stepConfigurationKeys = [
2018-06-28 16:24:14 +02:00
'credentialsId' ,
2018-06-29 13:38:41 +02:00
'clientOpts' ,
2018-07-10 14:43:15 +02:00
'endpoint' ,
'gitFrom' ,
'gitTo' ,
'gitChangeDocumentLabel' ,
'gitFormat'
2018-06-20 11:36:41 +02:00
]
2018-07-12 09:49:18 +02:00
@Field Set parameterKeys = stepConfigurationKeys . plus ( [ 'changeDocumentId' , 'developmentSystemId' ] )
2018-07-06 09:05:26 +02:00
@Field generalConfigurationKeys = stepConfigurationKeys
2018-06-20 11:36:41 +02:00
def call ( parameters = [ : ] ) {
handlePipelineStepErrors ( stepName: STEP_NAME , stepParameters: parameters ) {
def script = parameters ? . script ? : [ commonPipelineEnvironment: commonPipelineEnvironment ]
2018-06-29 09:34:46 +02:00
ChangeManagement cm = parameters . cmUtils ? : new ChangeManagement ( script )
2018-06-20 11:36:41 +02:00
2018-07-13 09:28:41 +02:00
ConfigurationHelper configHelper = ConfigurationHelper
. loadStepDefaults ( this )
. mixinGeneralConfig ( script . commonPipelineEnvironment , generalConfigurationKeys )
. mixinStageConfig ( script . commonPipelineEnvironment , parameters . stageName ? : env . STAGE_NAME , stepConfigurationKeys )
. mixinStepConfig ( script . commonPipelineEnvironment , stepConfigurationKeys )
. mixin ( parameters , parameterKeys )
. withMandatoryProperty ( 'endpoint' )
. withMandatoryProperty ( 'developmentSystemId' )
Map configuration = configHelper . use ( )
2018-06-20 11:36:41 +02:00
2018-06-28 08:46:23 +02:00
def changeDocumentId = configuration . changeDocumentId
2018-07-10 14:43:15 +02:00
if ( changeDocumentId ? . trim ( ) ) {
echo "[INFO] ChangeDocumentId '${changeDocumentId}' retrieved from parameters."
} else {
echo "[INFO] Retrieving ChangeDocumentId from commit history [from: ${configuration.gitFrom}, to: ${configuration.gitTo}]." +
"Searching for pattern '${configuration.gitChangeDocumentLabel}'. Searching with format '${configuration.gitFormat}'."
try {
changeDocumentId = cm . getChangeDocumentId (
configuration . gitFrom ,
configuration . gitTo ,
configuration . gitChangeDocumentLabel ,
configuration . gitFormat
)
echo "[INFO] ChangeDocumentId '${changeDocumentId}' retrieved from commit history"
} catch ( ChangeManagementException ex ) {
echo "[WARN] Cannot retrieve changeDocumentId from commit history: ${ex.getMessage()}."
}
}
2018-07-13 09:28:41 +02:00
configuration = configHelper . mixin ( [ changeDocumentId: changeDocumentId ? . trim ( ) ? : null ] , [ 'changeDocumentId' ] as Set )
. withMandatoryProperty ( 'changeDocumentId' ,
"Change document id not provided (parameter: \'changeDocumentId\' or via commit history)." )
. use ( )
2018-06-20 11:36:41 +02:00
def transportRequestId
2018-07-12 08:54:04 +02:00
echo "[INFO] Creating transport request for change document '${configuration.changeDocumentId}' and development system '${configuration.developmentSystemId}'."
2018-06-20 11:36:41 +02:00
withCredentials ( [ usernamePassword (
2018-07-12 08:54:04 +02:00
credentialsId: configuration . credentialsId ,
2018-06-20 11:36:41 +02:00
passwordVariable: 'password' ,
usernameVariable: 'username' ) ] ) {
try {
2018-07-12 08:54:04 +02:00
transportRequestId = cm . createTransportRequest ( configuration . changeDocumentId ,
configuration . developmentSystemId ,
configuration . endpoint ,
username ,
password ,
configuration . clientOpts )
2018-06-20 11:36:41 +02:00
} catch ( ChangeManagementException ex ) {
throw new AbortException ( ex . getMessage ( ) )
}
}
echo "[INFO] Transport Request '$transportRequestId' has been successfully created."
return transportRequestId
}
}