天天看點

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

本文講的是<b>部署流水線搭建小記:Docker、Jenkins、Java和Couchbase</b>【編者的話】這篇文章講述了如何用Jenkins和Docker來為一個需要和資料庫互動的Java應用建立部署流水線(deployment pipeline)。

Jenkins支援建立流水線。它使用一種基于Groovy的流水線領域特定語言(Pipeline DSL)的簡單腳。

而這些腳本,通常名字叫<code>Jenkinsfile</code>。它定義了一些根據指定參數執行簡單或複雜的任務的步驟。流水線建立好後,可以用來建構代碼,或者編排從代碼送出到傳遞過程中所需的工作。

對于我們本文中的應用,其基本的部署流程是這樣的:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

開發者更新工作區

Jenkins收到通知

Jenkins克隆工作區

Jenkins建立一個Docker鏡像

Jenkins運作測試

Jenkins将鏡像推到Docker Hub

讓我們開始吧!

先把Jenkins啟動起來:

這條指令指定了Jenkin家目錄的路徑。家目錄下面存放了所有的配置資訊。同時指定了Jenkins的監聽端口。這裡指定的是9090端口。

啟動Jenkins會在中終端中看到如下消息:

複制一下終端中顯示的密碼,這個密碼會用來解鎖Jenkins。

在浏覽器中輸入<code>localhost:9090</code>通路Jenkins,然後粘貼密碼:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

點選<code>Next</code>進入下一步:

建立第一個如圖所示的管理者使用者:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

點選<code>Save and Finish</code>繼續。

點選<code>Install suggested plugins</code>:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

然後就會安裝好一批預設的插件:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

(很奇怪Ant和Subversion是預設的插件。)

然後會彈出登陸框:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

輸入之前建立好的使用者名和密碼。

最後Jenkins就可以使用了。

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

不得不說,要安裝好一個簡單的Jenkins所需要的步驟不少。真的有必要需要這麼多步驟才能開始使用Jenkins嗎?能不能有一個更簡單,更傻瓜,更偷懶的方式來開始使用Jenkins呢?希望能遵守管理優先原則(Convention-over-Configuration)然後提供一個預先配置好的一鍵安裝包。

讓我們在Jenkins中建立一個用來運作流水線的作業。

在Jenkins重新開機之後,他會顯示一個登陸界面。輸入之前建立的使用者名和密碼。這會把你帶回到<code>Installing Plugins/Upgrade</code>頁面。點選頁面左上角的Jenkins圖示,可看到主要制面闆:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

點選<code>create new job</code>,作業的名字取做<code>docker-jenkins-pipeline</code>,類型選<code>Pipeline</code>。

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

點選OK按鈕。

按照如圖所示對流水線進行配置:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

這裡我們使用了本地的倉庫。你當然也可以選擇托管在Github上的倉庫。另外,這個倉庫可以配置一個git鈎子或者定時的輪詢器來觸發流水線的運作。點選<code>Save</code>按鈕來儲存配置。

在啟動這個作業之前,Couchbase資料庫需要顯式地進行啟動:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

點選<code>Build Now</code>你應該看見下圖類似的輸出:

部署流水線搭建小記:Docker、Jenkins、Java和Couchbase

看起來一切正常。

讓我們來試着了解下背後發生了什麼。

Jenkinsfile描述了流水線是如何建構的。從整體看它有四個階段 - 打包、建立Docker鏡像、運作應用和運作測試。每一個階段在Jenkins的控制台都是以一個方框顯示的。每一個階段花費的總體時間顯示在每一個方框中間。

然後我們試着了解每一個階段都做了什麼事情。

打包:應用的的源碼位于<code>webapp</code>目錄下。而這一條Maven指令:

用來建立應用的JAR包。注意Maven項目也包含測試,但是這裡被故意通過<code>-DskipTests</code>忽略了。

建立Docker鏡像:應用的Docker鏡像是使用<code>webapp</code>目錄下的Dockerfile來建構的。這個鏡像僅僅包含一個Fat JAR,可以通過<code>java -jar</code>來運作。

每一個鏡像都使用建構編号打上了标簽:

運作應用:運作應用需要運作應用的Docker容器。資料庫容器的IP位址可以通過下面這條指令來查到:

資料庫容器和應用容器同時運作在預設的<code>bridge</code>網絡中。這可以讓兩個容器來互相溝通。也可以在swarm模式的叢集中運作流水線,這需要建立并且使用覆寫網絡。

運作測試:測試可以使用如下指令來進行:

另外一個痛點找不到關于全局變量文法的文檔。隻有在<code>&amp;lt;JENKINS-HOST&gt;:&amp;lt;JENKINS-PORT&gt;/job/docker-jenkins-pipeline/pipeline-syntax/globals</code>能找到相關内容。這一點點戳。

<b>原文釋出時間為:</b>2016-10-08

<b>本文作者:</b>鐘最龍

<b>本文來自雲栖社群合作夥伴Dockerone.io,了解相關資訊可以關注Dockerone.io。</b>

<b></b>

<b>原文标題:</b><b>部署流水線搭建小記:Docker、Jenkins、Java和Couchbase</b>