sbt universal:packageZipTarball 在通过 supervisord 或 git hook 启



>我已经设置了一个远程 git 存储库,它会在预接收钩子上触发我的应用程序构建。 我的应用程序是使用 Play 框架制作的,并使用sbt universal:packageZipTarball构建 我使用 supervisord 来管理流程,例如构建的应用程序运行器、nginx 、...

我尝试在预接收脚本中运行构建命令,并直接作为受监督的进程运行,但我无法从中获得任何输出,并且由于我的应用程序未构建而似乎卡住了......

我的主管会议文件:

sbt-build.conf

[program:sbtbuild]
priority=100
directory=/app/data/build
command=bash sbt-build.sh
user=root
autostart=false
autorestart=false
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=2048
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=2048

构建脚本

sbt-build.sh

#!/bin/bash
set -eu
BUILD_PATH="/app/data/build"
WEBSITE_PATH="/app/data/website"
echo "=> Build application..."
chmod -R +rwx $BUILD_PATH 
cd $BUILD_PATH
sbt universal:packageZipTarball # The script is stuck here...
echo "=> Unpack build..."
cd $BUILD_PATH/target/universal
tar -zxvf *.tgz --strip 1 -C $WEBSITE_PATH 
chmod +x $WEBSITE_PATH
cd $WEBSITE_PATH/bin
rm *.bat
mv * start
echo "=> Run application"
supervisorctl restart sbt

git 钩子按预期工作,并设置为简化supervisorctl start sbtbuild我得到的最后一个输出是:Build application...来自 sbt-build.sh 中的回声 CMD 此外,当我手动运行 sbt-build.sh 脚本时,它按预期工作

我终于在这里找到了解决方案,并进行了一些解释。

-Djline.terminal=jline.UnsupportedTerminal添加到 sbt 命令即可解决问题。

我的启动命令现在看起来像这样sbt -Djline.terminal=jline.UnsupportedTerminal universal:packageZipTarball

最新更新