sbt dist在终端中工作但不与Jenkins一起作为shell脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sbt dist在终端中工作但不与Jenkins一起作为shell脚本相关的知识,希望对你有一定的参考价值。
我对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'
}
}
}
}
}
}
詹金斯2.89.1,sbt尝试了两个:0.13和1.0.x
我现在从评论中看到你正在开发Play应用程序,所以现在很清楚dist
任务的来源。
在Jenkins中,当你运行SBT任务时,你需要做的第一件事就是你已经加载了SBT你的项目的build.xml
。在shell脚本中,无论您是否位于根项目文件夹中,它实际上都不可见。
Jenkins也更好地与SBT集成,然后通过shell脚本运行它。您需要首先将this plugin添加到Jenkins。查看附带的屏幕截图,其中显示了我的一个Jenkins项目的一部分:
詹金斯有一种特殊的构建步骤。在项目配置中,您应该在“构建步骤”下拉列表中看到它:
我相信你应该从那里开始。如果仍需要运行shell脚本,请确保在运行SBT命令之前还要使用cd /path/to/your/project
文件夹。
我接受了@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
。
一个值得注意的是,cd to to project只需要sbt dist
,因为它附带Play
。标准的sbt命令(例如:sbt compile)在play项目目录外运行正常。
以上是关于sbt dist在终端中工作但不与Jenkins一起作为shell脚本的主要内容,如果未能解决你的问题,请参考以下文章