我有一个带有.groovy脚本的共享库,我在这样的jenkins文件中调用:
MySharedLibFunction{ .. some args}
我的共享库中还有一个.ps1文件,我想执行。但是当我从我的共享库函数中执行powershell pwd
时,我从jenkinsfile调用该函数时,当前工作目录是我的管道的jenkins工作目录,其中jenkinsfile位于(通常是你想要的)。 / p>
有没有办法访问共享库中的文件?我想做powershell -File ps1FileInMySharedLibVarsFolder.ps1
答案 0 :(得分:9)
您只能使用内置步骤libraryResource
获取内容。这就是为什么在my shared library中使用以下函数将其复制到临时目录并返回文件的路径:
/**
* Generates a path to a temporary file location, ending with {@code path} parameter.
*
* @param path path suffix
* @return path to file inside a temp directory
*/
@NonCPS
String createTempLocation(String path) {
String tmpDir = pwd tmp: true
return tmpDir + File.separator + new File(path).getName()
}
/**
* Returns the path to a temp location of a script from the global library (resources/ subdirectory)
*
* @param srcPath path within the resources/ subdirectory of this repo
* @param destPath destination path (optional)
* @return path to local file
*/
String copyGlobalLibraryScript(String srcPath, String destPath = null) {
destPath = destPath ?: createTempLocation(srcPath)
writeFile file: destPath, text: libraryResource(srcPath)
echo "copyGlobalLibraryScript: copied ${srcPath} to ${destPath}"
return destPath
}
当它返回临时文件的路径时,您可以将其传递给期望文件名的任何步骤:
sh(copyGlobalLibraryScript('test.sh'))
用于共享库中resources/test.sh
内的文件。
答案 1 :(得分:2)
stephenking的答案较为完整,但在简单情况下,可以执行以下操作:
foreach ($content as $item) {
echo $item->title;
}