#!/usr/bin/env groovy void call(Map config = [:], Closure body) { Map defaults = [ name: env.BUILD_TAG, archiveCmd: 'tar', archiveParams: 'zcvf', extension: 'tgz', artifacts: [], stepName: 'Package', separator: '-' ] Map runConfig = defaults + config stage(runConfig.stepName) { printBanner(runConfig.stepName) if (runConfig.artifacts.size() < 1) { assert runConfig.artifacts : 'Error: No named artifacts to package!' } archiveName = runConfig.name + separator + runConfig.tag + separator + runConfig.extension echo "Will tag result as: ${archiveName}" sh """ if command -v "${runconfig.archiveCmd}"; then ${runConfig.archiveCmd} ${archiveName} ${runConfig.artifacts.join(' ')} else echo "Error: ${runConfig.archiveCmd} is not a valid executable!" exit 2 """ archiveArtifacts artifacts: archiveName, followSymlinks: false body() } }