diff --git a/src/org/ods/orchestration/FinalizeStage.groovy b/src/org/ods/orchestration/FinalizeStage.groovy index 912e766565..e979e4cd20 100644 --- a/src/org/ods/orchestration/FinalizeStage.groovy +++ b/src/org/ods/orchestration/FinalizeStage.groovy @@ -8,6 +8,7 @@ import org.ods.orchestration.util.Project import org.ods.services.BitbucketService import org.ods.services.OpenShiftService import org.ods.services.GitService +import org.ods.util.PipelineDebugInfo import org.ods.util.PipelineSteps import org.ods.util.IPipelineSteps import org.ods.util.Logger @@ -93,6 +94,7 @@ class FinalizeStage extends Stage { // Dump a representation of the project logger.debug("---- ODS Project (${project.key}) data ----\r${project}\r -----") + new PipelineDebugInfo().save(project, steps) levaDocScheduler.run(phase, MROPipelineUtil.PipelinePhaseLifecycleStage.PRE_END) diff --git a/src/org/ods/util/IPipelineSteps.groovy b/src/org/ods/util/IPipelineSteps.groovy index 1d4bf83b8a..690e6a2cb0 100644 --- a/src/org/ods/util/IPipelineSteps.groovy +++ b/src/org/ods/util/IPipelineSteps.groovy @@ -76,4 +76,5 @@ interface IPipelineSteps { def unwrap() def emailext(Map args) + } diff --git a/src/org/ods/util/PipelineDebugInfo.groovy b/src/org/ods/util/PipelineDebugInfo.groovy new file mode 100644 index 0000000000..0b8dcf60da --- /dev/null +++ b/src/org/ods/util/PipelineDebugInfo.groovy @@ -0,0 +1,42 @@ +package org.ods.util + +import com.cloudbees.groovy.cps.NonCPS +import groovy.json.JsonOutput +import hudson.EnvVars +import org.ods.orchestration.util.Project + +class PipelineDebugInfo { + + public final String PROJECT_DEBUG_INFO_FILENAME = "project_debug_info.yml" + public final String ENVIRONMENT_DEBUG_INFO_FILENAME = "environment_debug_info.yml" + + void save(Project project, PipelineSteps steps) { + + steps.writeFile(PROJECT_DEBUG_INFO_FILENAME, "${project}") + steps.archiveArtifacts(PROJECT_DEBUG_INFO_FILENAME) + + Map environmentDebugInfo = getStepsEnvDebugInfo(steps) + String environmentDebugInfoTxt = JsonOutput.toJson(environmentDebugInfo) + steps.writeFile(ENVIRONMENT_DEBUG_INFO_FILENAME, "${environmentDebugInfoTxt}") + steps.archiveArtifacts(ENVIRONMENT_DEBUG_INFO_FILENAME) + } + + private Map getStepsEnvDebugInfo(PipelineSteps steps) { + EnvVars environmentVariables = steps.getEnv().getEnvironment() + Set entriesSet = environmentVariables.entrySet() + return getVarsMapFromEntriesSet(entriesSet) + } + + @NonCPS + private Map getVarsMapFromEntriesSet(Set entriesSet) { + Map result = [:] + List entriesList = entriesSet.toList() + for (int i=0; i