【问题标题】:Passing a jenkins build parameter to sbt plugin将 jenkins 构建参数传递给 sbt 插件
【发布时间】:2016-09-24 06:22:27
【问题描述】:

我需要创建一个 jenkins 项目来编译和测试一个 scala 项目。有几个 scala 项目,因此构建将被参数化并为每个项目运行。

为了处理一个 scala 项目,我想使用 sbt 插件并使用构建参数“project_name”指定“子目录”。

我尝试使用 $project_name, ${project_name}, %project_name% 传递参数,但这些都不起作用。我得到如下输出(对于第一个变体):

[$project_name] $ cmd.exe /C " java -Dsbt.log.noformat=true -jar C:\.......\sbt\bin\sbt-launch.jar compile test "
The directory name is invalid
FATAL: command execution failed: Cannot run program "cmd.exe" (in directory "C:\.......\$project_name"): CreateProcess error=267, The directory name is invalid
java.io.IOException: Cannot run program "cmd.exe" (in directory "C:\.......\$project_name"): CreateProcess error=267, The directory name is invalid

如果我添加“执行 Windows 批处理命令”步骤,我可以使用 %project_name% 将参数传递给脚本。

什么是正确的语法?

【问题讨论】:

    标签: scala jenkins


    【解决方案1】:

    这是对我有用的解决方案。

    我没有指定要构建的每个项目的“子目录路径”,而是将其留空并定义了一个自定义工作区供 jenkins 作业(sbt 编译)在其中运行。

    与“子目录路径”不同,自定义工作区字段中的环境变量在构建过程中被解析为值。

    每次运行作业时,我都会指定 scala 项目的完整路径。

    所以我需要获取项目目录的路径作为作业参数 (pathToProject) 并使用它来定义自定义工作区 (${pathToProject})。选中“常规 -> 高级”下的“使用自定义工作区”框会显示“目录”字段。

    custom workspace

    一旦我的工作目录设置好了,我就可以使用 sbt 插件运行我想要的 sbt 命令

    sbt plugin

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 2014-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-26
        • 1970-01-01
        相关资源
        最近更新 更多