我想运行一个 python 脚本作为从 github repo 触发的 jenkins 管道的一部分。如果我将脚本直接存储在存储库本身中,我就可以sh 'python path/to/my_package/script.py'
完美地完成工作。但是,由于我想从多个 repos 的多个管道中使用它,所以我想把它放在 jenkins 共享库中。
我发现这个问题建议将python文件存储在resources
目录中并在使用前将其复制到临时文件中。仅当脚本是一个独立文件时才有效。不幸的是,我的是一个包含多个 python 文件并在它们之间导入的包,所以这是不行的。我还尝试从this question的答案中复制包含python包的整个文件夹,这表明使用
import groovy.transform.SourceURI
import java.nio.file.Path
import java.nio.file.Paths
class ScriptSourceUri {
@SourceURI
static URI uri
}
但它给了我以下错误:
Scripts not permitted to use staticMethod java.net.URI create java.lang.String. Administrators can decide whether to approve or reject this signature.
似乎需要一些额外的权限,我认为我无法获得(它是一台共享机器)。
所以?有谁知道我如何从 jenkins 共享库运行 python 包?目前我能想到的唯一解决方案是手动重新创建python包的目录结构,这显然非常混乱且不通用。
PS:没有特别的理由使用 python 脚本而不是在 groovy 中编写相同的脚本。只是python脚本经过了很好的测试、很好的理解和很好的支持。现在用 groovy 重写整个事情是不可行的。