1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-12 10:55:20 +02:00
sap-jenkins-library/vars/abapEnvironmentPipelineStageInit.groovy

70 lines
2.9 KiB
Groovy

import com.sap.piper.Utils
import groovy.transform.Field
import com.sap.piper.ConfigurationHelper
import com.sap.piper.ConfigurationLoader
import static com.sap.piper.Prerequisites.checkScript
@Field String STEP_NAME = getClass().getName()
@Field Set GENERAL_CONFIG_KEYS = []
@Field STAGE_STEP_KEYS = [
/** If set to true, the default scm checkout is skipped */
'skipCheckout',
/**
* Optional list of file paths or URLs, which must point to YAML content. These work exactly like
* `customDefaults`, but from local or remote files instead of library resources. They are merged with and
* take precedence over `customDefaults`.
*/
'customDefaultsFromFiles',
/**
* Mandatory if you skip the checkout. Then you need to unstash your workspace to get the e.g. configuration.
*/
'stashContent'
]
@Field Set STEP_CONFIG_KEYS = GENERAL_CONFIG_KEYS.plus(STAGE_STEP_KEYS)
@Field Set PARAMETER_KEYS = STEP_CONFIG_KEYS
/**
* This stage initializes the ABAP Environment Pipeline run
*/
void call(Map parameters = [:]) {
def utils = parameters.juStabUtils ?: new Utils()
def script = checkScript(this, parameters) ?: this
def stageName = parameters.stageName?:env.STAGE_NAME
piperStageWrapper (script: script, stageName: stageName, stashContent: [], stageLocking: false, ordinal: 1, telemetryDisabled: true) {
def skipCheckout = parameters.skipCheckout
if (skipCheckout != null && !(skipCheckout instanceof Boolean)) {
error "[${STEP_NAME}] Parameter skipCheckout has to be of type boolean. Instead got '${skipCheckout.class.getName()}'"
}
if (!skipCheckout) {
checkout scm
}
else {
def stashContent = parameters.stashContent
if(stashContent == null || stashContent.size() == 0) {
error "[${STEP_NAME}] needs stashes if you skip checkout"
}
utils.unstashAll(stashContent)
}
setupCommonPipelineEnvironment script: script,
customDefaults: parameters.customDefaults,
customDefaultsFromFiles: parameters.customDefaultsFromFiles
// load default & individual configuration
Map config = ConfigurationHelper.newInstance(this)
.loadStepDefaults()
.addIfEmpty('stageConfigResource', 'com.sap.piper/pipeline/abapEnvironmentPipelineStages.yml')
.addIfEmpty('stashSettings', 'com.sap.piper/pipeline/abapEnvironmentPipelineStashSettings.yml')
.withMandatoryProperty('stageConfigResource')
.use()
Map stashConfiguration = readYaml(text: libraryResource(config.stashSettings))
if (config.verbose) echo "Stash config: ${stashConfiguration}"
script.commonPipelineEnvironment.configuration.stageStashes = stashConfiguration
//handling of stage and step activation
piperInitRunStageConfiguration script: script, stageConfigResource: config.stageConfigResource
}
}