【问题标题】:Read DSL from file in Jenkins outside of workspace从工作区外的 Jenkins 中的文件中读取 DSL
【发布时间】:2016-07-27 03:06:29
【问题描述】:
我知道可以从外部源运行 .dsl 文件,而不仅仅是在作业描述中编写流程代码,但每次我尝试运行时都可以说:
/home/flows/flow_script.dsl
我收到以下错误:
java.io.FileNotFoundException:/home/flows/flow_script.dsl (No such file or directory)
路径是正确的,我可以从 shell 中通过该路径看到文件,但它不允许我选择“构建工作区”之外的任何内容。
【问题讨论】:
标签:
jenkins
jenkins-plugins
dsl
jenkins-build-flow
【解决方案1】:
我最近遇到了这个问题:我的 DSL 脚本在我的工作区之外(通过包安装)。问题在于 DSL 脚本路径是一种 Ant 格式,只允许特定模式(而不是绝对路径)。
我的解决方法很老套,但确实有效:在“处理作业 DSLs”步骤之前添加一个 Execute Shell 步骤,将外部目录符号链接到工作区。
类似这样的:
echo "Creating a symlink from /home/flows to workspace"
ln -sf "/home/flows" .flows
然后您可以将 DSL Scripts 路径设置为“.flows/flow_script.dsl”。
当然,这还有一些额外的注意事项:您从中进行符号链接的目录需要 jenkins 用户可以访问。而且它可能违反了很多最佳实践。