From 61fdd601b48119d4e18329dd3d2c290f69ef2850 Mon Sep 17 00:00:00 2001 From: Matt Rendina Date: Tue, 7 May 2019 15:34:00 -0400 Subject: Dump YAML version of conda environment (#48) * Dump a YAML file describing the environment used in the job. * Adjust git rev-parse call to maintain compatibility with very old git. --- vars/utils.groovy | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'vars') diff --git a/vars/utils.groovy b/vars/utils.groovy index 4081980..b38d362 100644 --- a/vars/utils.groovy +++ b/vars/utils.groovy @@ -501,11 +501,32 @@ def buildAndTest(config) { conda_exe = local_conda } if (conda_exe != '') { - println("About to dump environment: 'conda_env_dump_${config.name}.txt'") - sh(script: "${conda_exe} list --explicit > 'conda_env_dump_${config.name}.txt'") + dump_name = "conda_env_dump_${config.name}.txt" + println("About to dump environment: ${dump_name}") + sh(script: "${conda_exe} list --explicit > '${dump_name}'") + + dump_name = "conda_env_dump_${config.name}.yml" + println("About to dump environment: ${dump_name}") + sh(script: "${conda_exe} env export > '${dump_name}'") + remote_out = sh(script: "git remote -v | head -1", returnStdout: true).trim() + remote_repo = remote_out.tokenize()[1] + commit = sh(script: "git rev-parse HEAD", returnStdout: true).trim() + // Remove 'prefix' line as it isn't needed and complicates the + // addition of the 'pip' section. + sh(script: "sed -i '/prefix/d' ${dump_name}") + pip_section = sh(script: "grep 'pip:' ${dump_name}", returnStatus: true) + if (pip_section != 0) { + sh "echo ' - pip:' >> ${dump_name}" + } + // Add git+https line in pip section to install the commit + // used for the target project of this job. + extra_yml_1 = " - ${remote_repo}@${commit}" + sh "echo '${extra_yml_1}' >> ${dump_name}" // Stash spec file for use on master node. - stash includes: '**/conda_env_dump*', name: "conda_env_dump_${config.name}", useDefaultExcludes: false + stash includes: '**/conda_env_dump*', + name: "conda_env_dump_${config.name}", + useDefaultExcludes: false } } // end withEnv -- cgit