Playframework 如何将Play Framework应用程序从Jenkins发布到负载平衡环境
我刚刚开始设置防弹的夜间构建环境,以便基于游戏的应用程序。到目前为止,我还没有找到关于这个主题的好教程。你能回顾一下我目前正在设置的解决方案吗?谢谢 将Play Framework安装到Jenkins服务器并创建一个作业,该作业每24小时从git/svn存储库创建一个分发包Playframework 如何将Play Framework应用程序从Jenkins发布到负载平衡环境,playframework,centos,playframework-2.0,load-balancing,nightly-build,Playframework,Centos,Playframework 2.0,Load Balancing,Nightly Build,我刚刚开始设置防弹的夜间构建环境,以便基于游戏的应用程序。到目前为止,我还没有找到关于这个主题的好教程。你能回顾一下我目前正在设置的解决方案吗?谢谢 将Play Framework安装到Jenkins服务器并创建一个作业,该作业每24小时从git/svn存储库创建一个分发包 play dist 上面的命令创建app-1.0.zip文件。文件被复制并解压缩到多个节点。我们正在使用负载平衡器。最终文件被解压缩到/home/play/webapp/app-1.0文件夹 解压后,我更改symlink/
play dist
上面的命令创建app-1.0.zip文件。文件被复制并解压缩到多个节点。我们正在使用负载平衡器。最终文件被解压缩到/home/play/webapp/app-1.0文件夹
解压后,我更改symlink/home/play/webapp/app=>/home/play/webapp/app-1.0并重新加载项目。真的需要这个符号链接吗?我可以在旧文件上解压文件吗?我真的需要解压项目吗?我可以创建一个jar文件并在服务器上运行它吗
play reload
最后,旧的应用程序被删除
rm -rf /home/play/webapp/app-0.9
版本app-0.9最初是通过运行以下脚本启动的
/etc/init.d/play start
脚本是对以下脚本的修改:
基本上,该脚本运行以下命令,我在app-xxx.zip文件的开始文件中找到了该命令
exec java $* -cp "`dirname $0`/lib/*" play.core.server.NettyServer `dirname $0`
我还考虑过创建一个重新加载脚本,该脚本验证play应用程序是否正在运行,如果没有,则说明play应用程序已启动,而不是重新启动
/etc/init.d/play reload
致以最良好的祝愿,
Markku我创建了一个用于从Jenkins连续部署播放应用程序的应用程序。脚本的基本功能如下:
- 轮询Jenkins以检查是否有新版本可用
- 如果有的话
- 检查与提交对应的代码
- 编撰
- 创建一个包
- 重新启动播放服务器
- 否则,请在下次轮询之前延迟睡眠
重启策略目前是基本的,但是您可以修改脚本以非常容易地实现另一个。没有更多的文档,但是可以阅读和注释 我就是你博客上的那个人。在那篇文章中,我建议你应该把所有的游戏罐放在一个位置(/home/Play/libs/current->Play-2.0.4),这样就不需要做播放距离。在我们的例子中,我们使用播放阶段,将我们的文件分别scp到webapps/foo/0.1-SNAPSHOT-20121011/,然后更改当前符号链接 解压后,我更改符号链接/home/play/webapp/app=> /home/play/webapp/app-1.0并重新加载项目。这真的是符号链接吗 需要?我可以在旧文件上解压文件吗 这就是我喜欢我们的设置,使用符号链接,但这只是因为我想在某种程度上保留以前的版本,特别是那些来自CI的版本 我可以创建一个jar文件并在服务器上运行它吗
play reload
从技术上讲,您可以创建一个可运行的JAR,其中包含所有Play和您的依赖项,包括Netty,但这将是一个巨大的文件(只有Play dep是33MB),您无法轻松更改正在使用的Play版本(我在过去两个月内更改了三次),最后,由于不支持此选项,您需要使用比“播放”更多的内容(即)
我也考虑过创建一个重新加载脚本,用于验证播放效果
应用程序正在运行,如果未运行,则启动播放应用程序,而不是
重新启动
/etc/init.d/play reload
这是博客条目中显示的部署脚本:
#!/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
这个脚本的想法是从Jenkins中的ANT脚本使用SSH调用,或者手动调用。/deploy 0.1-SNAPSHOT-20121012受您的脚本启发,我创建了一个类似的脚本,但没有使用Jenkins,而是在本地编译应用程序。以下是链接: