#!/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: '-', useHash: false ] Map runConfig = defaults + config stage(runConfig.stepName) { printBanner(runConfig.stepName, [ boxStyle : 'plain' ]) if (runConfig.artifacts.size() < 1) { assert runConfig.artifacts : 'Error: No named artifacts to package!' } archiveName = runConfig.name + runConfig.separator + (runConfig.useHash ? runConfig.version : runConfig.tag) + runConfig.separator + runConfig.extension echo "Will tag result as: ${archiveName}" sh """ if command -v "${runConfig.archiveCmd}"; then ${runConfig.archiveCmd} ${runConfig.archiveParams} ${archiveName} ${runConfig.artifacts.join(' ')} else echo "Error: ${runConfig.archiveCmd} is not a valid executable!" exit 2 fi """ archiveArtifacts artifacts: archiveName, followSymlinks: false body() } }