我刚刚开始为基于Play的应用程序设置防弹夜间构建环境。到目前为止,我还没有找到一个关于这个主题的好教程。你能检查一下我目前正在设置的解决方案吗?谢谢
将Play Framework安装到Jenkins服务器并创建一个作业,该作业每24小时从git/svn存储库创建一个分发包。
play dist
上面的命令创建app-1.0.zip文件。文件被复制并解压缩到多个节点。我们正在使用负载平衡器。最终文件被解压缩到/home/play/webapp/app-1.0文件夹。
解压缩后,我更改symlink/home/play/webapp/app=>/home/play/webapp/apps-1.0并重新加载项目。真的需要这个符号链接吗?我可以在旧文件上解压缩文件吗?我真的需要解压缩项目吗?我可以创建一个jar文件并在服务器上运行吗?
play reload
最后,旧应用程序被删除。
rm -rf /home/play/webapp/app-0.9
app-0.9版本最初是通过运行以下脚本启动的。
/etc/init.d/play start
脚本是对以下脚本的修改:
http://monocaffe.blogspot.fr/2012/09/a-play-framework-server-setup.html
基本上,脚本运行以下命令,这是我从app-xxx.zip文件中的启动文件中找到的。
exec java $* -cp "`dirname $0`/lib/*" play.core.server.NettyServer `dirname $0`
我还考虑过创建一个重载脚本,验证播放应用程序是否正在运行,如果没有,则播放应用程序已启动,而不是重新启动。
/etc/init.d/play reload
谨致问候,Markku
我创建了一个python脚本,用于从Jenkins连续部署一个play应用程序。基本上,脚本的作用如下:
- 轮询Jenkins以检查是否有新的构建可用
- 如果有
- 检查与提交相对应的代码
- 编译
- 创建一个包
- 重新启动播放服务器
- 否则,在轮询另一个时间之前延迟睡眠
重启策略目前是基本的,但您可以很容易地修改脚本以实现另一个。并没有更多的文档,但是代码和配置文件是可读的,并且有注释。
我就是你发布的博客中的那个人。在那篇文章中,我建议你应该把所有的Play罐子都放在一个位置(/home/Play/libs/current->Play-2.0.4),所以没有必要做Play-dist。在我们的案例中,我们使用播放阶段,将我们的文件分别scp到webapps/foo/0.1-SNAPSHOT-20121011/,然后更改符号链接当前。
解压缩后,我更改symlink/home/play/webapp/app=>/home/play/webapp/apps-1.0并重新加载项目。这个符号链接真的吗需要吗?我可以在旧文件上解压缩文件吗?
这就是我喜欢我们的设置,使用符号链接,但这只是因为我想在某种程度上保留以前的版本,特别是如果这些是来自CI.的版本
我可以创建一个jar文件并在服务器上运行吗?
从技术上讲,你可以创建一个可运行的JAR,其中包含所有Play和你的依赖项,包括Netty,但这将是一个巨大的文件(只有Play dep是33MB),你失去了轻松更改正在使用的Play版本的能力(我在过去两个月里已经更改了三次),最后,由于不支持此选项(即。http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html)
我也考虑过创建一个重新加载脚本,以验证播放应用程序正在运行,如果没有,播放应用程序将启动,而不是重新启动。
这是博客条目中显示的deploy脚本:
#!/bin/bash
#
# Script to automate CI deployments. Simply stop all
# servers, change the "current" symlinks to the given
# target folder and finally, start all servers
#
export JAVA_HOME="/usr/lib/jvm/default-java"
play_home="/home/play"
webapps_folder="${play_home}/webapps"
apps=( "foo" "bar" "api" )
for app in ${apps[@]}; do
echo "Stopping server ${app}"
${play_home}/bin/${app} stop
echo "Regenerate current symlink of ${app}"
rm ${webapps_folder}/${app}/current
ln -s ${webapps_folder}/${app}/${1} ${webapps_folder}/${app}/current
echo "Starting server ${app}"
${play_home}/bin/${app} nohup
done
exit 0
这个脚本的想法是用SSH从Jenkins中的ANT脚本调用,或者像这样手动调用/部署0.1-SNAPSHOT-20121012