在CloudBees上开发,测试和部署独立应用程序
CloudBees是一個云平臺,為您的應(yīng)用程序提供存儲庫,CI服務(wù)(Jenkins)和服務(wù)器。 因此,您需要開發(fā),測試和部署所有內(nèi)容。 有很多選項,例如存儲庫可以是Git或SVN,對于服務(wù)器,您可以選擇Jetty,Tomcat,Glassfish,JBoss,Wildfly等。還可以運行帶有端口號的獨立應(yīng)用程序,因此您可以啟動自己的服務(wù)器。 在這種情況下,我們將在這里介紹。
spray.io是適用于Web應(yīng)用程序的Scala框架。 它允許您創(chuàng)建獨立的Web應(yīng)用程序(啟動它們自己的服務(wù)器,使用Spray-can)或稍微受限制的.war的Web應(yīng)用程序(spray-servlet),您可以將其部署在Glassfish,JBoss等JEE服務(wù)器上。我們將使用獨立的這里。
您可以從github克隆應(yīng)用程序。 現(xiàn)在讓我們快速瀏覽一下。
該應(yīng)用程序
開機
Boot文件是Scala App ,因此它類似于具有main方法的java類。 它是可運行的。 它創(chuàng)建Service角色,該角色正在處理所有HTTP請求。 它還從app.port系統(tǒng)屬性讀取端口號, app.port服務(wù)綁定到主機和端口。 app.port由CloudBees提供,如果要在本地運行該應(yīng)用程序,則需要通過jvm命令行-Dapp.port=8080 。
服務(wù)
Service具有MyService特性,該特性僅處理到空路徑的路由。 是的,該應(yīng)用程序不是很復(fù)雜!
建檔
build.gradle文件更有趣。 讓我們從頭開始。
- mainClassName屬性設(shè)置為Scala App。 當(dāng)您通過gradlew run從命令行在本地運行該類時,將要運行該類。
- applicationDefaultJvmArgs設(shè)置為-Dapp.port=8080 ,這也是從gradle本地運行的必要條件。 這樣,我們設(shè)置了要綁定Service端口。
- jar.archiveName是用于設(shè)置生成的.jar名稱的設(shè)置。 沒有它,則取決于項目目錄名稱。
您可以通過發(fā)出gradlew run (確保gradlew文件是可執(zhí)行文件)來運行應(yīng)用程序。 當(dāng)它運行時,您可以將瀏覽器指向http:// localhost:8080,然后應(yīng)該看到“向噴霧罐上的噴霧路由問好!” 沒什么,對不起。
也有“ cb”任務(wù)定義為gradle。 如果發(fā)出gradlew cb ,它將構(gòu)建zip文件,其所有依賴項.jars和szjug-sprayapp-1.0.jar位于其根目錄中。 對于CloudBees獨立應(yīng)用程序,此布局是必需的。
部署到CloudBees
首先,您需要在CloudBees上創(chuàng)建一個帳戶。 如果有的話,請下載CloudBees SDK –這樣您就可以從命令行運行命令。 在Mac上,我更喜歡brew install ,但是您可以自由選擇方式。
安裝后,運行bees命令。 首次運行時,它會詢問您的登錄名/密碼,因此您不需要每次使用bees時都提供它。
生成.zip,我們將其部署到云中。 進(jìn)入應(yīng)用程序目錄( szjug-sprayapp )并發(fā)出gradlew cb命令。 該命令不僅創(chuàng)建.zip文件,還打印.jars列表,這些列表對于作為類路徑傳遞給bees命令很有用。
使用從szjug-sprayapp目錄運行的以下命令部署應(yīng)用程序:
bees app:deploy -a spray-can -t java -R class=pl.szjug.sprayapp.Boot -R classpath=spray-can-1.3.1.jar:spray-routing-1.3.1.jar:spray-testkit-1.3.1.jar:akka-actor_2.10-2.3.2.jar:spray-io-1.3.1.jar:spray-http-1.3.1.jar:spray-util-1.3.1.jar:scala-library-2.10.3.jar:spray-httpx-1.3.1.jar:shapeless_2.10-1.2.4.jar:akka-testkit_2.10-2.3.0.jar:config-1.2.0.jar:parboiled-scala_2.10-1.1.6.jar:mimepull-1.9.4.jar:parboiled-core-1.1.6.jar:szjug-sprayapp-1.0.jar build/distributions/szjug-sprayapp-1.0.zip這里是可讀性的縮寫版本:
bees app:deploy -a spray-can -t java -R class=pl.szjug.sprayapp.Boot -R classpath=...:szjug-sprayapp-1.0.jar build/distributions/szjug-sprayapp-1.0.zipspray-can是應(yīng)用程序名稱, -t java是應(yīng)用程序類型。 -R是CloudBees屬性,例如要運行的類和要使用的類路徑。 當(dāng)gradle運行cb任務(wù)時,會很好地打印classpath的文件,因此您只需要復(fù)制和粘貼即可。
就是這樣! 我們的應(yīng)用程序正在CloudBees服務(wù)器上運行。 可從CloudBees控制臺的URL訪問。
使用CloudBees服務(wù)
該應(yīng)用程序已部署在CloudBees上,僅此而已? 正如我提到的,我們也可以使用git倉庫和Jenkins。 讓我們現(xiàn)在就開始做吧。
倉庫(Git)
在您的CloudBees帳戶上創(chuàng)建新的git存儲庫。 選擇左側(cè)的“存儲庫”,“添加存儲庫”……這非常簡單。
將其命名為“ szjug-app-repo”,并記住它應(yīng)該是Git。
接下來,將此存儲庫添加為本地git存儲庫的遠(yuǎn)程存儲庫。 在CloudBees控制臺的存儲庫頁面上,有一個非常有用的關(guān)于如何執(zhí)行的便覽表。
首先添加git遠(yuǎn)程存儲庫。 命名為cb
git remote add cb ssh://git@git.cloudbees.com/pawelstawicki/szjug-app-repo.git然后將您的提交推送到此處:
git push cb master現(xiàn)在,您在CloudBees上有了代碼。
CI構(gòu)建服務(wù)器(Jenkins)
現(xiàn)在該配置在CI服務(wù)器上構(gòu)建的應(yīng)用程序了。 轉(zhuǎn)到“建筑物”。 這就是詹金斯的住所。 創(chuàng)建新的“自由式”工作。
將git存儲庫設(shè)置為工作,以便Jenkins檢出始終為最新代碼版本。 您將需要存儲庫URL。 您可以從“回購”頁面上獲取它。
在此處設(shè)置URL:
接下來要設(shè)置的是gradle任務(wù)。 添加類型為“調(diào)用gradle腳本”的下一個構(gòu)建步驟。 選擇“使用Gradle包裝器” –這樣,您可以使用項目隨附的gradle版本。 將“ cb”設(shè)置為要運行的gradle任務(wù)。
好了,這就是構(gòu)建應(yīng)用程序所需的全部。 但是我們要部署它,不是嗎? 添加構(gòu)建后操作“部署應(yīng)用程序”。 輸入應(yīng)用ID( spray-can在我們的例子中,區(qū)域會自動改變)。 這樣,我們就告訴Jenkins 在哪里部署。 它還需要知道要部署什么 。 輸入build/distributions/szjug-app-job-*.zip作為“應(yīng)用程序文件”。
由于您是通過命令行較早地部署應(yīng)用程序的,因此像應(yīng)用程序類型,主類,類路徑等設(shè)置已經(jīng)存在,您無需再次提供它。
保留每個構(gòu)建中的zip文件可能也很有用,因此我們可以將其存檔。 只需添加構(gòu)建后操作“存檔工件”并設(shè)置相同的zip文件即可。
好的,這就是在Jenkins上進(jìn)行構(gòu)建配置的全部內(nèi)容。 現(xiàn)在,您可以單擊“立即構(gòu)建”鏈接,并且應(yīng)該將構(gòu)建添加到隊列中。 完成后,您可以查看日志,狀態(tài)等。但是更重要的是,應(yīng)將應(yīng)用程序部署到全世界并可以訪問。 現(xiàn)在,您可以更改其中的某些內(nèi)容,點擊“立即構(gòu)建”,完成后檢查是否應(yīng)用了更改。
測驗
可能您還注意到有附加的測試。 您可以通過gradlew test運行它。 它的specs2測試,用特質(zhì)MyService ,所以我們有機會獲得myRoute ,并Specs2RouteTest所以我們有機會獲得spray.io檢測設(shè)施。
@RunWith(classOf[JUnitRunner])是在gradle中運行測試所必需的。
現(xiàn)在,當(dāng)我們進(jìn)行測試時,我們希望看到測試結(jié)果。 這是詹金斯的另一個構(gòu)建后步驟。 按“添加構(gòu)建后操作”->“發(fā)布JUnit測試結(jié)果報告”。
Gradle不會將測試結(jié)果放在maven所在的地方,因此您需要指定報告文件的位置。
完成后,下一個版本應(yīng)顯示測試結(jié)果。
觸發(fā)構(gòu)建作業(yè)
現(xiàn)在,您可以進(jìn)行構(gòu)建作業(yè),以構(gòu)建,測試和部署應(yīng)用程序。 但是,此構(gòu)建僅在您手動運行時才能運行。 讓我們每天運行一次,并將每一次更改推送到存儲庫之后。
摘要
因此,現(xiàn)在您擁有開發(fā)應(yīng)用程序所需的一切。 Git存儲庫,持續(xù)集成構(gòu)建系統(tǒng)以及用于將應(yīng)用程序部署到(實際上也是連續(xù)地)的基礎(chǔ)架構(gòu)。
想想您自己的應(yīng)用程序,……開心地發(fā)展!
翻譯自: https://www.javacodegeeks.com/2014/07/develop-test-and-deploy-standalone-apps-on-cloudbees.html
總結(jié)
以上是生活随笔為你收集整理的在CloudBees上开发,测试和部署独立应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java并发教程–线程之间的可见性
- 下一篇: (linux system)