github.com/xgoffin/jenkins-library@v1.154.0/vars/piperPipelineStageIntegration.groovy (about) 1 import com.sap.piper.ConfigurationHelper 2 import com.sap.piper.GenerateStageDocumentation 3 import com.sap.piper.StageNameProvider 4 import com.sap.piper.Utils 5 import groovy.transform.Field 6 7 import static com.sap.piper.Prerequisites.checkScript 8 9 @Field String STEP_NAME = getClass().getName() 10 @Field String TECHNICAL_STAGE_NAME = 'integration' 11 12 @Field Set GENERAL_CONFIG_KEYS = [] 13 @Field STAGE_STEP_KEYS = [ 14 /** Runs npm scripts to run generic integration tests written on JavaScript */ 15 'npmExecuteScripts', 16 /** Runs backend integration tests via the Jacoco Maven-plugin */ 17 'mavenExecuteIntegration', 18 /** Publishes test results to Jenkins. It will automatically be active in cases tests are executed. */ 19 'testsPublishResults', 20 ] 21 @Field Set STEP_CONFIG_KEYS = GENERAL_CONFIG_KEYS.plus(STAGE_STEP_KEYS) 22 @Field Set PARAMETER_KEYS = STEP_CONFIG_KEYS 23 24 /** 25 * The stage allows to execute project-specific integration tests.<br /> 26 * Typically, integration tests are very project-specific, thus they can be defined here using the [stage extension mechanism](../extensibility.md). 27 */ 28 @GenerateStageDocumentation(defaultStageName = 'Integration') 29 void call(Map parameters = [:]) { 30 31 def script = checkScript(this, parameters) ?: this 32 def utils = parameters.juStabUtils ?: new Utils() 33 def stageName = StageNameProvider.instance.getStageName(script, parameters, this) 34 35 Map config = ConfigurationHelper.newInstance(this) 36 .loadStepDefaults() 37 .mixinGeneralConfig(script.commonPipelineEnvironment, GENERAL_CONFIG_KEYS) 38 .mixinStageConfig(script.commonPipelineEnvironment, stageName, STEP_CONFIG_KEYS) 39 .mixin(parameters, PARAMETER_KEYS) 40 .addIfEmpty('npmExecuteScripts', script.commonPipelineEnvironment.configuration.runStep?.get(stageName)?.npmExecuteScripts) 41 .addIfEmpty('mavenExecuteIntegration', script.commonPipelineEnvironment.configuration.runStep?.get(stageName)?.mavenExecuteIntegration) 42 .use() 43 44 piperStageWrapper (script: script, stageName: stageName) { 45 46 // telemetry reporting 47 utils.pushToSWA([step: STEP_NAME], config) 48 49 boolean publishResults = false 50 try { 51 writeTemporaryCredentials(script: script) { 52 if (config.npmExecuteScripts) { 53 publishResults = true 54 npmExecuteScripts script: script 55 } 56 if (config.mavenExecuteIntegration) { 57 publishResults = true 58 mavenExecuteIntegration script: script 59 } 60 } 61 } 62 finally { 63 if (publishResults) { 64 testsPublishResults script: script 65 } 66 } 67 } 68 }