應用場景
程式員開發應用,開發後需要送出svn,然後從svn拉取代碼,進行建構,釋出到tomcat中,釋出,然後看呈現效果,這樣的工作是頻繁反複的在進行的,浪費了程式員的大量時間,那麼能不能把這些工作自動化呢,隻需要程式員更新代碼到svn,然後自動的建構,釋出,呈現效果,當然是可以的,通過jenkins和docker來實作。
操作步驟
1. 概述
開發者的工作大概流程是,eclipse編寫代碼,送出代碼到svn,然後進行編譯,打包,測試,部署,釋出。
這其中很多重複的工作,影響開發人員的情緒,應當讓開發者隻重視代碼階段,後面的内容不用去理會,隻要編寫代碼,送出代碼,然後就能打開頁面看到效果,那是最好的。
這就需要自動化建構,jenkins就是很好的自動化建構工具。
2. 自動化流程
具體流程如下:
- 1.編寫代碼,修改代碼
- 2.送出代碼到svn
- 3.Jenkins自動檢測到svn代碼更新,從svn拉取最新代碼
- 4.Jenkins自動編譯
- 5.Jenkins自動打成tomcat下能運作的war包
- 6.Jenkins自動上傳war包到docker主控端目錄
- 7.Jenkins自動建構web容器鏡像,包含項目demo
- 8.Jenkins自動啟動鏡像,變成容器,映射端口
- 9.最後就有項目運作的界面提供了
3. 環境準備
3.1 jenkins
Jenkins簡單點說就是一個war包。一個自動化服務,提供各種插件內建。 jenkins下載下傳位址
Jenkins部署有兩種方法(可以裝到windows或者linux,實驗中以windows的方式一為例):
Jenkins是用Java語言開發的系統,首先要确定伺服器上已經安裝JDK或者JRE。
1.方式一
直接運作java –jar jenkins.war(注意jenkins.war得是絕對路徑,例如下圖所示),在浏覽器中輸入 http://localhost:8080 即可。
到此,jenkins安裝部署完畢,關于如何使用jenkins,下文詳細介紹。
2.方式二
把jenkins的war包拷貝到tomcat的webapps目錄下,啟動tomcat,通路位址: http://ip:8080/jenkins
3.2 maven
參照windows安裝maven博文
3.3 svn
參照svn如何使用的相關博文 以及 windows端安裝svn伺服器端的博文
3.4 jdk
參考windows安裝jdk博文
3.5 docker
參考docker安裝使用博文
4. 基礎配置
4.1 jenkins配置
- 首先需要進入jenkins主界面,安裝必須要的插件。
進入插件頁面,選擇可選插件,搜尋ssh,安裝SSH plugin和Publish Over SSH插件,由于實驗已經安裝過,是以圖中沒有顯示了。
- 然後回到主界面,進行系統設定。
配置maven configuretion,加上本地maven安裝位址,指向settings檔案。
jdk配置,指向本地jdk安裝目錄。
Maven配置,指向本地maven安裝路徑。
配置jenkins location,配置管理者郵箱。
配置郵件通知,需要郵箱開啟pop3,smtp,可以測試驗證。後面配置郵件通知時需要用到。
配置Publish over SSH。這裡配置後才能在配置目标容器環境時,選擇到建構完成後釋出到的目标容器。
最後應用,儲存。
5.配置自動化
5.1 編寫代碼
這裡需要基于maven建構的工程。
5.2 送出代碼至svn
右擊項目,選擇team,送出,到svn伺服器的某個位址,實驗中送出到如下目錄:
需要在svn下建立mavenproject檔案夾,具體操作參考3.3。
5.3 建立jenkins項目連接配接svn
點選界面左側建立,項目名稱可以随意命名,選擇maven項目:
選擇源碼位址,這功能可以讓jenkins可以從svn上拉取代碼。
Repository URL擷取方式:
5.4 配置建構任務
該功能,jenkins可以檢測svn代碼,如果發生變化,那麼立即自動執行建構:
5.5 配置建構參數
該功能,jenkins可以自動給maven項目打包
5.6 郵件通知
該功能,jenkins建構過程中,可以向指定郵箱發送郵件,提示建構狀況。
5.7 配置目标容器環境
選擇send build artifacts over SSH,該功能可以實作将本地打包的war包,ssh到指定伺服器的目錄中,并且能在伺服器上執行腳本。
腳本如下:
docker rm -f microframe #删除已建的容器,防止容器名,端口沖突
sleep 1
cd /Dockerfile_tomcat
docker build -t xubin/website:v1 . #根據dockerfile生成web鏡像
sleep 1
docker run -d -p 8080:8080 --name microframe xubin/website:v1 #運作鏡像生成容器
這樣jenkins上就操作完畢了。
5.8 生成docker執行個體
在docker主控端輸入如下指令:
# git clone https://git.oschina.net/bingoxubin/Dockerfile_tomcat.git
執行完畢後,打開虛拟機上的/Dockerfile_tomcat目錄,修改該目錄下的Dockerfile檔案,加入如下一行:
COPY microframe-0.0.1.war /opt/apache-tomcat/webapps/microframe-0.0.1.war
5.9 測試
當我們修改eclipse上的代碼,然後送出到svn:
等幾分鐘就能看到結果。
可以看到jenkins自動開始建構了:
通路頁面:
最後可以看出,生成了指定的容器。