我尝试配置 Jenkins 的种子作业,其中整个业务都在提供的 DSL 脚本中。我想将该脚本与其配置分开,我想在额外的 yml 文件中找到该配置。当我尝试读取该文件时:
@Grab('org.yaml:snakeyaml:1.17')
import org.yaml.snakeyaml.Yaml
def workDir = SEED_JOB.getWorkspace()
def config = new Yaml().load(("${workDir}/config.yml" as File).text)
我收到错误
java.io.FileNotFoundException: /var/lib/jenkins/workspace/test.dsl/config.yml (No such file or directory)
我想 Jenkins 正在主主机上查找文件,而不是工作区所在的代理节点。是否可以在代理节点上的 DSL 构建步骤中读取 yml 文件?或者,也许我必须始终在我的主主机上执行该种子作业?
这似乎是不可能的,因为 jobDsl 脚本是在主服务器上执行的。您可以尝试强制在带有标签master
的主服务器上运行作业。
从脚本位置部分中的文档:
作业 DSL 脚本在 Jenkins 主节点上执行,但包含脚本文件的种子作业工作区可能驻留在构建节点上。这意味着可能无法从 DSL 脚本直接访问 FILE 指定的文件。有关详细信息,请参阅分布式构建。