从 Jenkins 工作区外的文件中读取 DSL
Read DSL from file in Jenkins outside of workspace
我知道可以 运行 来自外部源的 .dsl 文件,而不是仅仅在作业描述中编写流程代码,但每次我尝试 运行 让我们说:
/home/flows/flow_script.dsl
我收到以下错误:
java.io.FileNotFoundException:/home/flows/flow_script.dsl (No such file or directory)
路径是正确的,我可以从 shell 通过该路径看到文件,但它不允许我 select "builds workspace" 之外的任何内容。
我最近 运行 遇到了这个问题:我的 DSL 脚本在我的工作空间之外(通过软件包安装)。问题是 DSL 脚本路径是 Ant 格式,只允许特定模式(而不是绝对路径)。
我的解决方法是 hacky,但它确实有效:在将外部目录符号链接到工作区的 "Process Job DSLs" 步骤 之前添加一个执行 Shell 步骤 .
像这样:
echo "Creating a symlink from /home/flows to workspace"
ln -sf "/home/flows" .flows
然后您可以将 DSL 脚本路径设置为“.flows/flow_script.dsl”。
当然,这还有一些额外的注意事项:您从中建立符号链接的目录需要 jenkins 用户可以访问。它可能违反了很多最佳实践。
我知道可以 运行 来自外部源的 .dsl 文件,而不是仅仅在作业描述中编写流程代码,但每次我尝试 运行 让我们说:
/home/flows/flow_script.dsl
我收到以下错误:
java.io.FileNotFoundException:/home/flows/flow_script.dsl (No such file or directory)
路径是正确的,我可以从 shell 通过该路径看到文件,但它不允许我 select "builds workspace" 之外的任何内容。
我最近 运行 遇到了这个问题:我的 DSL 脚本在我的工作空间之外(通过软件包安装)。问题是 DSL 脚本路径是 Ant 格式,只允许特定模式(而不是绝对路径)。
我的解决方法是 hacky,但它确实有效:在将外部目录符号链接到工作区的 "Process Job DSLs" 步骤 之前添加一个执行 Shell 步骤 .
像这样:
echo "Creating a symlink from /home/flows to workspace"
ln -sf "/home/flows" .flows
然后您可以将 DSL 脚本路径设置为“.flows/flow_script.dsl”。
当然,这还有一些额外的注意事项:您从中建立符号链接的目录需要 jenkins 用户可以访问。它可能违反了很多最佳实践。