目標(biāo):
通過docker部署運行jenkins環(huán)境攘蔽。并對maven項目進(jìn)行自動化測試、打包和持續(xù)部署。
過程如下:
1锦针,準(zhǔn)備docker環(huán)境
(我的操作環(huán)境是centos7,CentOS下安裝docker環(huán)境見我另外一篇文章)
# docker -v
Docker version 1.13.1
附:查看centos的版本命令
# cat /etc/os-release
2它浅,下載Jenkins的docker鏡像译柏,并運行
docker pull docker.io/jenkins/jenkins:latest
- 為Jenkins建立掛載目錄并未目錄授權(quán),我這里的目錄為 /docker/data/jenkins/
mkdir -r /docker/data/jenkins/
sudo chown -R 1000:1000 /docker/data/jenkins/
- 拉取 jenkins鏡像并構(gòu)建容器(這里用的是jenkins當(dāng)前最新的2.x版本)
docker run -itd -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /docker/data/jenkins:/var/jenkins_home docker.io/jenkins/jenkins:latest
docker ps
參數(shù)說明:
-p 8080:8080 -p 50000:50000是開發(fā)的訪問端口
--name jenkins 是容器名
--privileged=true 是提供掛載目錄的管理權(quán)限(centos默認(rèn)不提供)
-v /docker/data/jenkins:/var/jenkins_home 是目錄掛載
成功構(gòu)建后docker ps會顯示容器
3罚缕,初始化Jenkins配置
1)瀏覽器打開http://ip:8080進(jìn)行初始化
2)在Administrator password環(huán)境艇纺,通過運行docker命令查看
sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
在插件初始化時選左側(cè)經(jīng)典就好了。
3)在“系統(tǒng)管理”-“管理插件”添加插件“Deploy to container”用于部署編譯后的程序到tomcat
4)在“系統(tǒng)管理”-“Global Tool Configuration”中添加JDK工具和maven工具
需要注意的是要設(shè)置登錄oracle網(wǎng)站的賬號密碼
這2個工具都會在首次進(jìn)行項目構(gòu)建的時候自動下載邮弹。
4黔衡,添加項目配置
回到主頁,進(jìn)行項目添加腌乡,選擇“構(gòu)建一個自由風(fēng)格的軟件項目”盟劫。
1)General區(qū)設(shè)置項目名字、描述信息
2)源碼管理區(qū)設(shè)置git或svn的配置与纽,這里我用到的是svn
設(shè)置Repository URL為項目在服務(wù)器上的路徑
設(shè)置Credentials為賬號密碼
Local module directory和Repository depth保持不變侣签。
3)設(shè)置“構(gòu)建”選擇“Invoke top-level Maven targets”在Goals中填寫 package
用maven的package來打包項目生成war包
4)設(shè)置“構(gòu)建后操作”選擇 Deploy war/ear to a container 在WaR/EAR files 中填寫 target/<包名>.war
這里面的包名生成結(jié)構(gòu)是pom.xml中配置的artifactId標(biāo)簽值和 version標(biāo)簽值的組合: artifactId-version.war
不確定的話可以在項目上先后建一下確定war的名字
在“ Containers”中添加一個Container塘装,這里我選擇的是tomcat9.需要設(shè)置tomcat的的運行地址以及管理員賬號密碼
注:因為采用的是tomcat的熱部署
所以tomcat必須先配置tomcat-users.xml提供manager-script角色。
附:tomcat-users.xml的配置
<role rolename="manager-script"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-script"/>
5影所,運行構(gòu)建
執(zhí)行項目構(gòu)建后蹦肴,可以在構(gòu)建的ConsoleOutput中查看控制臺輸出的日志。首次構(gòu)建會看到對jdk和maven環(huán)境的下載和安裝
6猴娩,配置自動化持續(xù)構(gòu)建
Build after other projects are built:在其他項目觸發(fā)的時候觸發(fā)阴幌,里面有分為三種情況,也就是其他項目構(gòu)建成功卷中、失敗矛双、或者不穩(wěn)定的時候觸發(fā)項目;
Poll SCM:定時檢查源碼變更(根據(jù)SCM軟件的版本號)蟆豫,如果有更新就checkout最新code下來议忽,然后執(zhí)行構(gòu)建動作。
H/5 * * * * (每5分鐘檢查一次源碼變化)
Build periodically:周期進(jìn)行項目構(gòu)建(它不關(guān)心源碼是否發(fā)生變化)十减,如下圖配置:
H 2 * * * (每天2:00 必須build一次源碼)
在 Schedule 中填寫 0 * * * *栈幸。
第一個參數(shù)代表的是分鐘 minute,取值 0~59帮辟;
第二個參數(shù)代表的是小時 hour侦镇,取值 0~23;
第三個參數(shù)代表的是天 day织阅,取值 1~31壳繁;
第四個參數(shù)代表的是月 month,取值 1~12荔棉;
最后一個參數(shù)代表的是星期 week闹炉,取值 0~7,0 和 7 都是表示星期天润樱。
注意
如果maven不能自動安裝需要官方手動下載tar.gz到卷目錄渣触,并進(jìn)入容器內(nèi)進(jìn)行解壓,另在系統(tǒng)管理-全局共計配置-提供maven的 全局和默認(rèn) settings 配置壹若、maven的name和MAVEN_HOME配置
最后在項目構(gòu)建配置中選中對應(yīng)的name