import com.sap.piper.Utils import com.sap.piper.ConfigurationHelper import groovy.transform.Field @Field String STEP_NAME = 'pipelineStashFilesBeforeBuild' @Field Set STEP_CONFIG_KEYS = ['runOpaTests', 'stashIncludes', 'stashExcludes'] @Field Set PARAMETER_KEYS = STEP_CONFIG_KEYS def call(Map parameters = [:]) { handlePipelineStepErrors (stepName: STEP_NAME, stepParameters: parameters, stepNameDoc: 'stashFiles') { def utils = parameters.juStabUtils if (utils == null) { utils = new Utils() } def script = parameters.script if (script == null) script = [commonPipelineEnvironment: commonPipelineEnvironment] //additional includes via passing e.g. stashIncludes: [opa5: '**/*.include'] //additional excludes via passing e.g. stashExcludes: [opa5: '**/*.exclude'] Map config = ConfigurationHelper .loadStepDefaults(this) .mixinGeneralConfig(script.commonPipelineEnvironment, STEP_CONFIG_KEYS) .mixinStepConfig(script.commonPipelineEnvironment, STEP_CONFIG_KEYS) .mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, STEP_CONFIG_KEYS) .mixin(parameters, PARAMETER_KEYS) .use() new Utils().pushToSWA([step: STEP_NAME], config) if (config.runOpaTests){ utils.stash('opa5', config.stashIncludes?.get('opa5')?config.stashIncludes.opa5:'**/*.*', config.stashExcludes?.get('opa5')?config.stashExcludes.opa5:'') } //store build descriptor files depending on technology, e.g. pom.xml, package.json utils.stash( 'buildDescriptor', config.stashIncludes.buildDescriptor, config.stashExcludes.buildDescriptor ) //store deployment descriptor files depending on technology, e.g. *.mtaext.yml utils.stashWithMessage( 'deployDescriptor', '[${STEP_NAME}] no deployment descriptor files provided: ', config.stashIncludes.deployDescriptor, config.stashExcludes.deployDescriptor ) //store git metadata for SourceClear agent sh "mkdir -p gitmetadata" sh "cp -rf .git/* gitmetadata" sh "chmod -R u+w gitmetadata" utils.stashWithMessage( 'git', '[${STEP_NAME}] no git repo files detected: ', config.stashIncludes.git, config.stashExcludes.git ) //store nsp & retire exclusion file for future use utils.stashWithMessage( 'opensourceConfiguration', '[${STEP_NAME}] no opensourceConfiguration files provided: ', config.stashIncludes.get('opensourceConfiguration'), config.stashExcludes.get('opensourceConfiguration') ) //store pipeline configuration including additional groovy test scripts for future use utils.stashWithMessage( 'pipelineConfigAndTests', '[${STEP_NAME}] no pipeline configuration and test files found: ', config.stashIncludes.pipelineConfigAndTests, config.stashExcludes.pipelineConfigAndTests ) utils.stashWithMessage( 'securityDescriptor', '[${STEP_NAME}] no security descriptor found: ', config.stashIncludes.securityDescriptor, config.stashExcludes.securityDescriptor ) //store files required for tests, e.g. Gauge, SUT, ... utils.stashWithMessage( 'tests', '[${STEP_NAME}] no files for tests provided: ', config.stashIncludes.tests, config.stashExcludes.tests ) } }