我刚刚开始研究与 jenkins 的共享库,以便跨多个几乎相同的存储库组合大量脚本和管道。
我已经加载并工作了共享库,但是当尝试在资源文件夹中执行脚本时,我不断收到未找到错误:
../releaseTagging-EO2DMYOPJ6JGB6JT5Q2RSFJWJWWPALA7F25H7CQNYBEV4ITTEB6Q@tmp/build.sh: not found
我正在使用以下内容创建文件的副本:
createTempLocation(String path) {
String tmpDir = pwd tmp: true
return tmpDir + File.separator + new File(path).getName()
}
和
copyGlobalLibraryScriptcall(String srcPath, String destPath = null) {
destPath = destPath ?: createTempLocation(srcPath)
writeFile file: destPath, text: libraryResource(srcPath)
echo "copyGlobalLibraryScript: copied ${srcPath} to ${destPath}"
sh "chmod +x ${destPath}"
echo "added executable permissions to ${destPath}"
return destPath
}
然后我这样调用最后一个函数:
runBuild(Map config) {
def script = copyGlobalLibraryScript('build.sh')
sh script
}
(我意识到我可以将上述功能折叠成一行)
然后通过调用(将整个文件调整为相关部分):
pipeline {
agent any
stages {
stage('Build') {
steps {
timestamps {
checkout scm
bbNotify( key: buildKey, name: BuildName) {
runBuild()
}
stash includes: '**', name: 'RelToSTAN'
}
}
}
}
这一切都因问题顶部的错误而失败,但是当 ssh 到构建服务器时,我可以在指定的位置找到该文件。
我不明白为什么詹金斯找不到它并执行它。