6

我剛開始設置防彈夜間構建環境以基於Play應用程序。到目前爲止,我還沒有找到關於這個主題的好教程。您可以查看我正在安裝的當前解決方案嗎?謝謝。如何從Jenkins發佈Play Framework應用程序以加載平衡的環境

將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/app-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 

最好的問候, 馬爾

回答

1

我創建了一個python script從詹金斯連續部署播放應用。基本上,該腳本如下:

  • 投票詹金斯以檢查是否有新版本可用
  • 如果有一個可用
    • 退房對應的代碼提交
    • 編譯
    • 創建一個包。
    • 重新啓動服務器玩
  • 的延遲否則睡眠投票前,另一次

重啓策略是目前基本的,但你可以修改腳本很容易實現一個又一個。沒有更多的文件,但codeconfiguration file是可讀和評論。

+0

受你的腳本的啓發,我創建了一個類似的,但沒有使用jenkins並在本地編譯應用程序。這裏是鏈接:[play2-git-auto-deploy](https://github.com/mupakoz/play2-git-auto-deploy) –

1

我是你發佈的博客中的人。在那篇文章中,我建議你應該將所有的Play jar放在一個位置(/ home/play/libs/current - > play-2.0.4),所以不需要做play dist。在我們的例子中,我們使用播放階段,分別將我們的文件scp到webapps/foo/0.1-SNAPSHOT-20121011 /,然後更改符號鏈接當前

解壓後,我改變符號鏈接的/ home /播放/ Web應用程序/應用程序=> /home/play/webapp/app-1.0和重裝項目。這個符號鏈接真的需要 嗎?我可以將文件解壓縮到舊文件嗎?

這就是我喜歡我們的設置,使用符號鏈接,但這只是因爲我想保留,在某種程度上,以前的版本,特別是如果這些是從CI的。

我可以只創建一個jar文件並在服務器上運行嗎?

從技術上講,你可以創建其中包含的所有播放的和你的依賴,包括Netty中運行的JAR,但是這將是一個巨大的文件(只播放DEPS是33MB),你失去輕易改變播放版本的功能正在使用(我已經在過去兩個月內換了三次),最後,你需要使用的東西多玩,因爲不支持此選項(即http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html

我也想過創建一個重載腳本,其中驗證播放 應用程序正在運行,如果沒有,則啓動播放應用程序,而不是 重新啓動。

這是部署在博客條目顯示腳本:

#!/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稱爲從一個Ant腳本,或者手動像./deploy 0.1-SNAPSHOT-20121012

相關問題