一、前言
在開始之前,我們需要保證系統(tǒng)中已經(jīng)安裝了Docker、JDK、Maven。
二、Docker 拉取鏡像
我這里使用的是 2.344 版本的 Jenkins,拉取命令如下:
docker pull jenkins/jenkins:2.344
需要稍微等一會(huì),等待拉取完成。
鏡像下載完成后,我們可以通過如下命令查看我們 docker 中的所有鏡像。
docker images
這里可以看到我們剛才拉取的 2.344版本的 Jenkins 鏡像。
三、運(yùn)行容器
下載鏡像成功后,我們需要用此鏡像運(yùn)行一個(gè)容器,命令如下:
docker run \
-d \
--name jenkins \
-u 0 \
-p 9999:8080 \
-p 8888:8888 \
-p 50000:50000 \
-v /usr/local/java/jdk-11.0.18:/usr/local/java/jdk-11.0.18 \
-v /usr/local/maven/apache-maven-3.6.1:/usr/local/maven/apache-maven-3.6.1 \
-v /home/jenkins_home:/home/jenkins_home \
jenkins/jenkins:2.344
命令解釋:
- -d:在后臺(tái)運(yùn)行
- --name:為我們當(dāng)前運(yùn)行的容器取一個(gè)名稱
- -u:以某個(gè)用戶的身份啟動(dòng)(此處的 0 代表是 root 用戶,而如果不加該命令,jenkins 啟動(dòng)會(huì)默認(rèn)以 1000 的用戶 jenkins 啟動(dòng),這樣會(huì)導(dǎo)致某些文件夾的讀寫權(quán)限不足問題,因此建議加上 -u 0 命令啟動(dòng)容器)
- p:指定映射的IP和端口,前者為本地系統(tǒng)的端口號(hào),后者為容器內(nèi)部的端口號(hào)。以 -p 9999:8888 舉例,8888為容器內(nèi)的端口號(hào),而9999為容器內(nèi)端口號(hào)映射到本地系統(tǒng)(容器外部)的端口,即我們?cè)L問本地系統(tǒng)的9999端口,實(shí)際會(huì)映射到容器內(nèi)部的8888端口上。此處開放8888端口是因?yàn)楹竺鏄?gòu)建項(xiàng)目時(shí),項(xiàng)目的端口也為8888,避免重新給容器開放端口映射。
- -v:綁定數(shù)據(jù)卷,拿 -v /usr/local/java/jdk-11.0.18:/usr/local/java/jdk-11.0.18 舉例:表示將本地系統(tǒng)的 /usr/local/java/jdk-11.0.18 映射到 容器內(nèi)部的 /usr/local/java/jdk-11.0.18。
最后的 jenkins/jenkins:2.344 表示當(dāng)前啟動(dòng)的容器是基于哪個(gè)鏡像的,語(yǔ)法 Repository:Tag,如果當(dāng)前的鏡像是唯一的,也可以不用加Tag。
此處我將本地系統(tǒng)的 jdk11 和 maven 都映射到了 當(dāng)前啟動(dòng)的容器中,而路徑我為了便于統(tǒng)一(容器內(nèi)的路徑可以隨便自定義),容器內(nèi)的路徑設(shè)置為和容器外一樣的路徑。
/usr/local/java/jdk-11.0.18 路徑為本地系統(tǒng)JAVA_HOME 配置的路徑,如果忘記了配置的路徑,可以通過如下命令查看:
which java
我們復(fù)制路徑到bin目錄的上一級(jí)即可,如此處為:/usr/local/java/jdk-11.0.18
/usr/local/maven/apache-maven-3.6.1 路徑為本地系統(tǒng)JAVA_HOME 配置的路徑,如果忘記了配置的路徑,可以通過如下命令查看:
which mvn
同理,復(fù)制到 bin 目錄的上一層即可,此處為:/usr/local/maven/apache-maven-3.6.1
四、訪問Jenkins
當(dāng)我們輸入上述的 docker run 命令后,會(huì)生成一個(gè)容器,我們可以通過命令查看當(dāng)前啟動(dòng)的容器:
docker ps
如果某些同學(xué)輸入命令后,沒有看到該信息,那說(shuō)明我們的容器運(yùn)行失敗了,可以通過如下命令查看所有容器的狀態(tài):
docker ps -a
這里的 STATUS 大概率會(huì)顯示 Exit… 表明你的容器啟動(dòng)失敗。我們可以查看具體原因。
解鎖Jenkins
如果我們的容器啟動(dòng)成功,那么我們直接訪問 本地的ip:9999 即可查看到當(dāng)前頁(yè)面。
此時(shí)我們?nèi)绻苯釉诒镜剌斎朊?cat /var/jenkins_home/secrets/initialAdminPassword 是查看不到的,因?yàn)樵撀窂绞侨萜鲀?nèi)部的路徑,我們需要先進(jìn)入容器內(nèi)部,再輸入該命令,才能夠成功看到密碼。
進(jìn)入容器命令:
docker exec -it 容器id/容器名稱 bash
你可以輸入的容器id或者容器名稱,我一般習(xí)慣輸入容器名稱,如果你的 docker run 命令和我一樣,那么可以直接復(fù)制如下命令進(jìn)入容器內(nèi)部:
docker exec -it jenkins bash
成功進(jìn)入容器后,我們?cè)谳斎肴缦旅畈榭闯跏济艽a:
cat /var/jenkins_home/secrets/initialAdminPassword
我們復(fù)制打印出來(lái)的密碼,粘貼到網(wǎng)頁(yè),點(diǎn)擊“繼續(xù)”,進(jìn)行下一步操作。
自定義Jenkins
此處我建議點(diǎn)擊“安裝推薦的插件”的選項(xiàng)。然后耐心等待,有可能部分插件會(huì)安裝失敗,因?yàn)榇颂幍南螺d源在國(guó)外。部分插件安裝失敗,我們可以點(diǎn)擊重試,如果多次重試仍然失?。ň褪俏冶救耍覀冎苯狱c(diǎn)擊下一步。
創(chuàng)建第一個(gè)管理員用戶
這里可以輸入你想創(chuàng)建的賬號(hào),輸入完畢后,點(diǎn)擊保存并完成。
配置實(shí)例
這里默認(rèn)即可,點(diǎn)擊保存并完成。
Jenkins 已就緒
點(diǎn)擊 “開始使用Jenkins”,就可以進(jìn)入到 Jenkins 的頁(yè)面了。
五、Jenkins 配置
安裝Maven插件
Maven插件默認(rèn)是不會(huì)給我們安裝的,因此我們需要自己安裝。
首先點(diǎn)擊左側(cè) “Manage Jenkins”,然后找到 “Manage Plugins”并點(diǎn)擊,
然后點(diǎn)擊“可選插件”并輸入 maven,找到如下插件 Maven Integration plugin,點(diǎn)擊下面的 Install without restart。
全局配置
首先點(diǎn)擊左側(cè) “Manage Jenkins”,然后找到 “Global Tool Configuration”并點(diǎn)擊,
在這里我們需要配置JDK、Git、Maven。
JDK
點(diǎn)擊 “JDK安裝”
輸入別名及JAVA_HOME,這里的JAVA_HOME對(duì)應(yīng)的是我們docker容器內(nèi)部的JAVA_HOME,而我們?cè)诘谌綄⑦\(yùn)行容器,將 java 映射的地址為 /usr/local/java/jdk-11.0.18(根據(jù)你 docker run 時(shí)的配置填寫),因此這里直接上即可,如圖:
/usr/local/java/jdk-11.0.18
GIT
Git會(huì)在我們自定義Jenkins時(shí)安裝插件的時(shí)候,自動(dòng)幫我們安裝,此處我們無(wú)需填寫,默認(rèn)即可。
Maven
同理,此處需要填寫maven的別名和MAVEN_HOME.
MAVEN_HOME在我們運(yùn)行容器映射的地址為:
/usr/local/maven/apache-maven-3.6.1
我們填上即可。
最后我們點(diǎn)擊應(yīng)用,然后點(diǎn)擊保存即可。
六、部署Maven項(xiàng)目
首先,回到Jenkins首頁(yè),點(diǎn)擊“+新建任務(wù)”,如圖:
新建Maven項(xiàng)目
輸入我們項(xiàng)目的名稱,點(diǎn)擊構(gòu)建一個(gè)Maven項(xiàng)目,然后點(diǎn)擊確定,如圖:
配置Git倉(cāng)庫(kù)
首先配置我們的Git倉(cāng)庫(kù)地址,此處我用的是自己開源的項(xiàng)目,所以無(wú)需填寫憑證,如果大家的項(xiàng)目需要憑證,可以自行添加:
添加憑證非常簡(jiǎn)單,我相信都會(huì),填好需要的賬號(hào)密碼點(diǎn)擊保存即可。
當(dāng)我們添加完后,URL下方?jīng)]有出現(xiàn)紅色的錯(cuò)誤提示表示能夠正常連接到該倉(cāng)庫(kù)了,可以繼續(xù)配置倉(cāng)庫(kù)分支,這里我選用的是一個(gè) helloworld 的分支,大家根據(jù)實(shí)際情況自行填寫:
配置Maven構(gòu)建參數(shù)
接下來(lái)就是配置Maven,對(duì)項(xiàng)目進(jìn)行打包,Root POM 不用修改,就用 pom.xml,而 Goals and options 我們填寫:
clean install -Dmaven.test.skip=true
這時(shí)候Maven的最基本配置就完成了。大家可以點(diǎn)擊應(yīng)用,并保存,開始構(gòu)建項(xiàng)目,看看能不能打包成功。
查看控制臺(tái)輸出:
啟動(dòng)項(xiàng)目
這樣就代表成功了,接下來(lái)就開始啟動(dòng)項(xiàng)目了,點(diǎn)擊項(xiàng)目,打開左側(cè)的配置,依次選擇 Post Steps -> Add post build steps -> 執(zhí)行shell
填上我們的啟動(dòng)腳本,這里只是最簡(jiǎn)單的腳本,大家可以根據(jù)實(shí)際情況填寫:
cd /var/jenkins_home/workspace/flowable_study/target
nohup java -jar flowable_study-1.0-SNAPSHOT.jar >flowable_study.log &2>1 &
注意:我這里是在docker容器內(nèi)部運(yùn)行的java項(xiàng)目,大部分實(shí)際情況是需要通過jenkins連接到其他服務(wù)器去部署項(xiàng)目。大致的流程為:
- 將容器內(nèi)的jar包拷貝到目標(biāo)服務(wù)器
- 切換目錄,殺掉當(dāng)前正在運(yùn)行的項(xiàng)目
- 啟動(dòng)項(xiàng)目
我這里只做最基本的部署演示,因此就不弄那么麻煩。同時(shí)我這里項(xiàng)目的端口號(hào)為8888,我在創(chuàng)建容器,使用 docker run 時(shí),已經(jīng)將容器內(nèi)的8888端口映射到宿主機(jī)的8888端口了。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-537821.html
寫好之后直接應(yīng)用、保存。然后重新構(gòu)建項(xiàng)目,這里就能夠直接訪問8888端口了。
由此,整個(gè)Maven項(xiàng)目構(gòu)建完成。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-537821.html
到了這里,關(guān)于Docker 安裝 Jenkins 并部署 Maven 項(xiàng)目的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!