我想将PlayFramework应用程序集成到IBM Bluemix Delivery Pipeline服务中。当我在构建阶段创建一个新作业时,我有一个支持的构建器类型列表:
Play应用程序使用SBT进行构建,但它不在列表中。如果我使用" Shell Script"选项并调用一些sbt
命令,该作业显然失败,并显示错误消息" sbt:command not found"。
有没有办法在执行构建的环境中安装sbt?
答案 0 :(得分:1)
首先,了解使用Continuous Delivery运行管道作业时会发生什么的背景知识。您在作业配置的自定义脚本字段中放置的所有内容都将在新容器上执行。使用IBM提供的基本映像,此容器在作业执行时站起来。任何未包含在所述基本图像中的内容都不会在您的管道作业中可用,至少不是开箱即用。
现在,由于所述基本图像不包含SBT,您必须下载它并手动将其添加到PATH中。以下是您可以用来执行此操作的脚本。
#!/bin/bash
wget --output-document=/tmp/sbt.tgz https://github.com/sbt/sbt/releases/download/v1.0.0/sbt-1.0.0.tgz
tar -xvf /tmp/sbt.tgz --directory=/tmp
export PATH="/tmp/sbt/bin:$PATH"
chmod +x /tmp/sbt
// Run sbt commands below here
注意:我不熟悉SBT及其配置方式,但您可能需要在容器上使用Java运行时来支持您使用SBT的scala版本。包括Java7和8,其中7是默认值。要切换到Java8,您可以在作业脚本中包含以下内容:
#!/bin/bash
export JAVA_HOME=$JAVA8_HOME
export PATH="$JAVA_HOME/bin/:$PATH"
java -version # Verify that we are using java8 runtime