如何只在Jenkins上执行一个子模块的包?

Ale*_*bon 9 sbt jenkins

我有4个模块SBT项目:module-a,module-b,module-c,module-d.

每个模块都可以打包为WAR.我想在Jenkins上设置一个部署,它只构建4个模块中的一个并将其部署到容器中.

详细地说,我想有4个詹金斯工作- ,job-a,job-b,job-c,job-d每个建筑物仅定义模块(a至d).

目前,我正在使用clean update test packageJenkins sbt构建的命令,但这会导致打包所有4个不必要的模块.

我已经尝试project -module-a clean update test package但没有运气.

Jac*_*ski 11

您可能还希望执行项目范围cleantest任务,如下所示:

sbt module-a/clean module-a/test
Run Code Online (Sandbox Code Playgroud)

对于以下命令适用于哪个项目,解决方案略短且更清晰.

您不需要执行update任务,因为它是test按照中所描述的那样隐式执行的inspect tree test.

有一种方法可以使用别名使其更清洁.在以下位置使用以下内容build.sbt:

addCommandAlias("jenkinsJob4ModuleA", "; module-a/clean; module-a/test")
Run Code Online (Sandbox Code Playgroud)

使用别名,执行jenkinsJob4ModuleA与上述解决方案具有相同的效果.


Ale*_*bon 5

用引号引出project的参数,即project module-a,并且不要在子模块的名称前使用破折号。

Jenkins作业的整个命令行如下:

./sbt "project module-a" clean update test
Run Code Online (Sandbox Code Playgroud)