49 lines
1.5 KiB
Groovy
49 lines
1.5 KiB
Groovy
#!/usr/bin/env groovy
|
|
|
|
String call(Map config = [:], Closure body = { }) {
|
|
Map defaults = [
|
|
name: env.BUILD_TAG,
|
|
archiveCmd: 'tar',
|
|
archiveParams: 'zcvf',
|
|
extension: 'tgz',
|
|
artifacts: [],
|
|
stepName: 'Package',
|
|
separator: '-',
|
|
useHash: false
|
|
]
|
|
archiveName = ''
|
|
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.hash : runConfig.version) +
|
|
'.' +
|
|
runConfig.extension
|
|
|
|
echo "Info: Will archive results 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
|
|
withEnv([
|
|
"TAG=${runConfig.tag}",
|
|
"HASH=${runConfig.hash}",
|
|
"VERSION=${runConfig.version}",
|
|
"ARCHIVE=${archiveName}"]) {
|
|
body()
|
|
}
|
|
}
|
|
return archiveName
|
|
}
|