我对sbt和Jenkins都是全新的。我正在尝试使用Jenkins piplelines构建构建计划。以下命令在shell脚本中运行正常:sbt compile
& sbt package
但是,sbt dist
不起作用。我收到错误not a valid command
对于它的工作原理,这里是jenkinsfile的内容(我知道sbt dist
应该在构建中,但我还在尝试):
pipeline {
agent any
stages {
stage('Build') {
parallel {
stage('Build') {
steps {
sh 'echo "Compiling... "'
sh 'sbt compile'
}
}
stage('Deploy') {
steps {
sh 'echo "Deploying... "'
sh 'echo "packaging.. "'
sh 'sbt dist'
}
}
}
}
}
}
Jenkins 2.89.1,sbt尝试了两个:0.13和1.0.x
答案 0 :(得分:1)
我现在从评论中看到您正在使用Play应用程序,因此现在很清楚dist
任务的来源。
在Jenkins中,当您运行SBT任务时,您需要做的第一件事是您已经加载到项目的build.xml
SBT。在shell脚本中,无论您是否在根项目文件夹中,它实际上都不可见。
Jenkins也更好地与SBT集成,然后通过shell脚本运行它。您需要先向Jenkins添加this plugin。查看附带的屏幕截图,其中显示了我的一个Jenkins项目的一部分:
詹金斯有一种特殊的构建步骤。在项目配置中,您应该在“构建步骤”下拉列表中看到它:
我相信你应该从那里开始。如果您仍需要运行shell脚本,请确保在运行SBT命令之前还要cd /path/to/your/project
文件夹。
答案 1 :(得分:0)
我接受了@Alexander Arendar的回答,因为这是正确答案。我只是想详细说明我是如何做到的,所以它对其他人有用。
@Alexander提到的答案是If you still need to run through shell script make sure you also cd /path/to/your/project folder before running SBT commands
。我实际上是这样做的。但我完全忘记的是,cd
到目录并且运行sbt dist
必须与jenkins步骤相同。我在两个单独的步骤中执行此操作,最终在原始目录中运行sbt dist
。
值得注意的是,仅sbt dist
需要cd to project,因为它附带Play
。标准的sbt命令(例如:sbt compile)在play项目目录外运行正常。