佛山網(wǎng)站優(yōu)化公司做百度推廣代運(yùn)營(yíng)有用嗎
jenkins,基本是最常用的持續(xù)集成工具。在實(shí)際的工作中,后端研發(fā)一般沒(méi)有jenkins的操作權(quán)限,只有一些查看權(quán)限,但是我們的代碼是經(jīng)過(guò)這個(gè)工具構(gòu)建出來(lái)部署到服務(wù)器的,所以我覺(jué)著有必要了解一下這個(gè)工具的搭建過(guò)程以及簡(jiǎn)單的一些使用。盡可能多的了解公司中和你開(kāi)發(fā)相關(guān)的所有東西,不要只是干CRUD的工作,只有這樣,你才會(huì)有成長(zhǎng)。
我本地使用的mac充當(dāng)宿主機(jī),因?yàn)樽罱恢痹诳磀ocker相關(guān)的東西,docker對(duì)于搭建測(cè)試環(huán)境非常方便,所以這次也選擇用docker搭建jenkins。有一點(diǎn),特別提一下,因?yàn)槲覀円L(fǎng)問(wèn)github、dockerhub,所以需要能科學(xué)上網(wǎng)。
這篇文章的主要目標(biāo)是搭建起我們本地的jenkins,然后用jenkins對(duì)我們的本地項(xiàng)目進(jìn)行自動(dòng)化的構(gòu)建,打包,也就是我們常常手動(dòng)執(zhí)行的maven的clean、install命令。
好,下面正式開(kāi)始搭建過(guò)程
文章目錄
- 1、下載jenkins鏡像
- 2、創(chuàng)建jenkins容器
- 3、驗(yàn)證jenkins容器啟動(dòng)成功
- 4、安裝jenkins插件
- 5、創(chuàng)建一個(gè)jenkins用戶(hù)
- 6、安裝jenkins工具
- 7、創(chuàng)建第一個(gè)jenkins任務(wù)
- 7.1、創(chuàng)建一個(gè)任務(wù)
- 7.2、配置git倉(cāng)庫(kù)的信息
- 7.3、執(zhí)行maven的打包命令
- 8、測(cè)試jenkins打包
- 9、jenkins構(gòu)建時(shí)間和服務(wù)器同步
1、下載jenkins鏡像
jenkins需要依賴(lài)jdk環(huán)境,所以我們直接下載帶JDK的jenkins鏡像,如下圖
docker pull jenkins/jenkins:jdk11
最好不要嘗試下載純jenkins的容器,否則可能會(huì)報(bào):
The JAVA_HOME environment variable is not defined correctly
2、創(chuàng)建jenkins容器
下面是創(chuàng)建jenkins容器的docker命令,解釋一下創(chuàng)建參數(shù)
docker run
-p 8080:8080
-p 5030:5000
--restart=always
-v /etc/localtime:/etc/localtime
-v /Users/abc/personal/test/docker/jenkins1/jenkins-data:/var/jenkins_home
-v /Users/abc/.docker/run/docker.sock:/var/run/docker.sock
-v /Users/abc/personal/test/docker/maven/apache-maven-3.8.1:/usr/local/maven
--name jenkins_jdk11
-d
jenkins/jenkins:jdk11
1)、-p 8080:8080和 -p 5030:5000,都是將容器端口映射到宿主機(jī)的一個(gè)端口
2)、–restart=alwasy,是容器啟動(dòng)失敗后重啟
3)、-v是卷的意思,將宿主機(jī)目錄映射到容器中的目錄,卷在docker中很重要,感興趣的同學(xué)可以再詳細(xì)了解一下。
可以看到,我們的容器創(chuàng)建命令中有4個(gè)卷的指令。
第一個(gè):將宿主機(jī)的時(shí)間文件映射到容器中,為的是讓宿主機(jī)的時(shí)間和容器的時(shí)間保持一致
第二個(gè):創(chuàng)建jenkins的工作目錄,這個(gè)目錄很重要。jenkins構(gòu)建好的項(xiàng)目就會(huì)放到這個(gè)目錄中。這里我們將jenkins的工作目錄映
射到了宿主機(jī)的一個(gè)目錄中
第三個(gè):將本地的docker監(jiān)聽(tīng)的文件映射到容器中。
第四個(gè):將本地maven映射到容器的maven中。
4)、–name jenkins_jdk11,容器的名稱(chēng)是jenkins_jdk11
5)、-d 容器后臺(tái)運(yùn)行
6)、jenkins/jenkins:jdk11,使用這個(gè)鏡像創(chuàng)建容器
3、驗(yàn)證jenkins容器啟動(dòng)成功
可以訪(fǎng)問(wèn)127.0.0.1:8080,如果可以看到j(luò)enkins的登錄頁(yè)面就算安裝成功了
我們查看一下登錄密碼,輸入,就可以登錄到j(luò)enkins的主頁(yè)面
4、安裝jenkins插件
初始化jenkins的時(shí)候,會(huì)提示你安裝建議的插件或者自行安裝插件,我建議大家聽(tīng)jenkins的建議,畢竟當(dāng)務(wù)之急是讓jenkins先跑起來(lái)。
jenkins推薦的插件有一點(diǎn)多,需要等一會(huì)。
5、創(chuàng)建一個(gè)jenkins用戶(hù)
隨便搞一下,但是要記住,否則后面就登錄不了jenkins了
下面這個(gè)配置信息,直接使用默認(rèn)即可,不需要更改
6、安裝jenkins工具
主要就是讓jenkins使用上我們?nèi)萜髦械膍aven。
選擇Manage Jenkins標(biāo)簽下的Tools標(biāo)簽
拉到最后
/usr/local/maven,是我們?nèi)萜鞯膍aven目錄,實(shí)際上是映射的宿主機(jī)中的maven(創(chuàng)建容器的時(shí)候,我們使用-v指定了本地的maven目錄映射到容器的/user/local/maven目錄中)
7、創(chuàng)建第一個(gè)jenkins任務(wù)
7.1、創(chuàng)建一個(gè)任務(wù)
填寫(xiě)一個(gè)任務(wù)名稱(chēng),然后選擇Freestyle project,接著點(diǎn)擊ok
7.2、配置git倉(cāng)庫(kù)的信息
尤其注意最下面那個(gè)main,不是master了,我卡在這個(gè)地方好久,太大意了。這里稍微偏點(diǎn)題,github為什么要將用了很多年的master修改為main呢?據(jù)說(shuō)是因?yàn)閙aster、slave在老美那邊代表的是奴隸制的詞匯,很多人建議不要使用這種帶有歧視性的詞匯,所以github就將主分支的名稱(chēng)從master換成了main
這里要注意,你填寫(xiě)的git倉(cāng)庫(kù)代碼,根路徑下必須有一個(gè)pom文件,否則maven打包就會(huì)因?yàn)檎也坏絧om而報(bào)錯(cuò):
The goal you specified requires a project to execute but there is no POM in this directory
7.3、執(zhí)行maven的打包命令
這個(gè)地方是為了驗(yàn)證我們的jenkins是不是安裝成功了
8、測(cè)試jenkins打包
點(diǎn)擊Build Now標(biāo)簽,開(kāi)始構(gòu)建項(xiàng)目,首次構(gòu)建需要將項(xiàng)目依賴(lài)的jar包下載到容器中,可能需要一點(diǎn)時(shí)間,第二次構(gòu)建就快多了。這里注意:我們的首次構(gòu)建,不是要構(gòu)建本地項(xiàng)目的docker鏡像,只是測(cè)試一下jenkins的構(gòu)建功能是否正常。
如下圖,就是正在構(gòu)建
如果看到構(gòu)建任務(wù)的結(jié)束標(biāo)志是一個(gè)?,就是構(gòu)建成功了。反之就是構(gòu)建失敗
如果構(gòu)建失敗,我們可以點(diǎn)擊#1
然后點(diǎn)擊Console Output來(lái)查看具體的報(bào)錯(cuò)信息
9、jenkins構(gòu)建時(shí)間和服務(wù)器同步
不知道大家有沒(méi)有注意到構(gòu)建結(jié)果那里的時(shí)間和我們的宿主機(jī)以及docker容器的時(shí)間對(duì)不上,差了8個(gè)小時(shí)。
這是因?yàn)?#xff0c;本地宿主機(jī)是CST時(shí)區(qū),東8區(qū)
而docker因?yàn)槭抢厦赖臇|西,所以默認(rèn)是UTC時(shí)區(qū),標(biāo)準(zhǔn)時(shí)間。這2個(gè)時(shí)區(qū)的時(shí)間差是8個(gè)小時(shí),所以導(dǎo)致了我們jenkins的構(gòu)建時(shí)間和宿主機(jī)差了8個(gè)小時(shí)。
修改的方式很簡(jiǎn)單,我們只需要在jenkins上執(zhí)行一條命令即可
點(diǎn)擊Manage Jenkins標(biāo)簽,然后選擇最下面的Script Console
然后輸入如下的命令,點(diǎn)擊run
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')
如果Result是這個(gè)結(jié)果,就證明執(zhí)行成功了
此時(shí),返回到j(luò)ob的構(gòu)建結(jié)果處,再看我們的構(gòu)建時(shí)間,就和宿主機(jī)保持一致了
下一篇,講一下如何通過(guò)jenkins構(gòu)建一個(gè)本地項(xiàng)目的docker鏡像并運(yùn)行