jenkin+docker 构建项目
jenkins發布項目
在構建項目之前我們需要做一些配置,安裝一些插件
- 點擊系統管理
 
- 點擊插件管理
 
- 需要安裝一下這個maven插件
 
- 插件安裝完成之后我們需要配置一下全局工具 "系統管理>全局工具配置"
 
 注意:安裝了jdk 就不要在點自動安裝了
這里需要配置一下jdk , 別名隨便輸入,JAVA_HOME填寫安裝jenkins的服務器上面的JAVA_HOME就行
 如果是linux機器輸入 下面的命令可以看到
- jdk配置完成之后還需要配置一下maven(前提是服務器裝了maven)
 
 和jdk配置差不多,這里要注意,如果HOME路徑不存在就會報上圖的錯誤,填寫正確就不會報錯,同樣輸入下面的命令可以看到MAVEN_HOME
- 暫時我們就配置這兩個,點擊保存、應用就可以了
 
 到這里我們的前期準備工作已經做好了,下面可以開始正式構建項目了
- 首先我們這里構建一個maven項目,輸入自己的項目名稱,點擊完成。
 
- 然后我們進入構建配置頁面,配置一下構建參數
 
- 這里我們使用參數化構建,選擇字符參數(其他類型參數可以自己嘗試一下)
 
選擇字符參數后會出現以下界面
 
 這里配置下項目名稱(這個是可有可無的,這里主要是測試下參數化配置,后期有其他參數需要傳遞在詳細配置)
- 接下來是源碼管理配置
 
url輸入自己的Git項目路徑
 Credentials 是需要驗證git的登錄信息
 點擊圖中的 “添加” 按鈕
 輸入自己登錄git的用戶名密碼就可以
 分支默認就行,如果有自己分支,輸入分支名稱就行
 
- 觸發器這里選擇默認就行
 
- 接下來就行構建前后執行的命令配置
 
- pre steps 為構建前執行,這里我們選擇執行 shell
 
輸入下面的執行shell 腳本的命令 (腳本文件是項目中編寫好的,文章后面會給出來)
/bin/bash runPre.sh ${PRODUCT_NAME}- build中需要填寫構建的pom.xml文件
 
(這里是單個項目直接填寫pom.xml就行,如果是maven父子工程,填寫父工程的pom.xml文件地址)
Goals and options:是構建項目執行的maven命令
 (這里是通過docker-maven-plugin 插件將項目構建為一個docker鏡像,shell腳本主要也是控制docker鏡像的啟動,停止,刪除)
Post Steps : 為構建后參數(運行腳本文件,主要是通過鏡像啟動容器)
/bin/bash runPost.sh ${PRODUCT_NAME}到這里配置就OK了,點擊保存退出就行
可以看到我們項目現在大概是這樣的
 
 下面我們再來看一下項目結構
 
這里我就寫了一個測試controller
 Dockerfile文件可以不要(主要的之前測試了用dockerfile文件和用配置兩種情況)
- 配置文件內容如下
 
這里對于初步接觸dockerfile配置的來說可以理解為
 編譯docker鏡像,當我們通過鏡像啟動容器時會執行下面的命令
-  
為docker鏡像起名為${project.artifactId}:${project.version}
 -  
在容器中下載并按照jdk
 -  
執行 java -version 命令
 -  
執行java -jar ${project.build.finalName}.jar 命令
 
這樣容器就啟動起來了。
開啟docker遠程訪問
- 最后在看一下shell文件(runPre.sh)
 
- runPost.sh
 
這里注意項目文件放的位置不要隨意改動。
- 下面我們就可以開始構建項目了,點擊 Build with Parameters,在點擊開始構建
 
- 可以看到項目就開始構建
 
- 點擊 #24 這次構建進去看下日志
 
 這里可以看到,它是先去我們給定的git地址下載項目,然后執行我們配置好的runPre.sh 腳本
 這里因為我之前構建過,所以會出現刪除容器,第一次構建不會出現
 然后就開始執行docker-maven的構建操作
 構建完成之后就會執行我們設置的腳本 runPost.sh (啟動容器)
 
 這里可以看到容器啟動成功了。
 網頁輸入地址就可以訪問到我們的程序
 后面我們改了代碼,直接提交git,然后點擊構建項目就行
 (jenkins是可以自動構建了,這里主要的初步構建,就沒有在說自動構建的情況)
 
 服務器上輸出 docker ps 可以看到我們構建的容器正在運行中
注 : 第一次啟動可能會報以下錯誤sudo: no tty present and no askpass program specified
附上解決方法
總結
以上是生活随笔為你收集整理的jenkin+docker 构建项目的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 基于STM32高级定时器的全桥移相PWM
 - 下一篇: 「竞品分析报告」不会写?不知从哪收集数据