前提環(huán)境可參考文章:docker-compose構(gòu)建cmdb聯(lián)合容器項(xiàng)目 和 什么是CICD
CI:持續(xù)集成
CD:持續(xù)部署
在cmdb中生成密鑰對(duì):
ssh-keygen
>>>然后一路回車(chē)
獲取cmdb的公鑰:
在gitlab中添加cmdb的公鑰:
jenkins中創(chuàng)建一個(gè)新的自由風(fēng)格的任務(wù):
添加任務(wù)的描敘信息:
配置git倉(cāng)庫(kù)
URL:填寫(xiě)gitlab相應(yīng)項(xiàng)目的ssh鏈接 如:git@gitlab的容器名:root/cicd-cmdb.git
注意:要將gitlab的ssh鏈接前面改為gitlab的容器名
添加全局配置:
配置git倉(cāng)庫(kù)時(shí)需要添加一個(gè)擁有連接gitlab權(quán)限的用戶(hù)瓷马,此時(shí)就需要添加一個(gè)全局配置
類(lèi)型使用:SSH Username with private key
也可以使用gitlab賬戶(hù)密碼的方式(username-password)展姐,但是由于安全機(jī)制场仲,采用私鑰方式解密更加安全
描述:這里可填對(duì)此全局配置的一些描述信息酣胀,加以區(qū)分其他全局配置
Private Key:此處填寫(xiě)的是jenkins的私鑰,用來(lái)解密
若對(duì)ssh原理以及公鑰私鑰使用比較迷惑停撞,可參考Linux下ssh-copy-id命令解析滋将、ssh-keygen的過(guò)程
構(gòu)建觸發(fā)器
此處創(chuàng)建了一個(gè)webhook
用于gitlab倉(cāng)庫(kù)發(fā)生更改
時(shí)(如push事件)用于通知jenkins
,觸發(fā)jenkins去gitlab拉取代碼撞蚕,實(shí)現(xiàn)ci持續(xù)集成操作
構(gòu)建
此處,我選擇構(gòu)建步驟為執(zhí)行shell
填寫(xiě)想執(zhí)行的shell命令邮破,可使用支持的環(huán)境變量
使用publish over SSH:
若安裝了此插件诈豌,可使用
這里填寫(xiě)的是打好包的路徑,是相對(duì)路徑抒和,相對(duì)于工作空間目錄的矫渔,工作空間默認(rèn)是在
$JENKINS_HOEM/workspace
目錄下。每次新建一個(gè)構(gòu)建任務(wù)時(shí)摧莽,會(huì)在此目錄下創(chuàng)建一個(gè)和任務(wù)名同名的目錄(比如:HelloMaven
)庙洼,在此目錄下存放從遠(yuǎn)程代碼庫(kù)拉取的源代碼,并且構(gòu)建完成的文件(比如jar
包)也會(huì)在HelloMaven/target
目錄下镊辕。是在把打好包的文件傳輸?shù)竭h(yuǎn)程應(yīng)用服務(wù)器時(shí)油够,不希望被創(chuàng)建的目錄名。 這個(gè)目錄名必須是在
Source files
選項(xiàng)中填寫(xiě)的路徑最前面的部分中征懈。遠(yuǎn)程應(yīng)用服務(wù)器的目錄石咬,這個(gè)目錄假如沒(méi)有會(huì)被自動(dòng)創(chuàng)建,但是此目錄是給相對(duì)路徑卖哎,相對(duì)于之前在
系統(tǒng)設(shè)置
中的SSH Servers
中配置的服務(wù)器端路徑鬼悠,如下圖中的/opt/studentInfo
-
指構(gòu)建后在遠(yuǎn)程應(yīng)用服務(wù)器上執(zhí)行的命令。
注意:這里執(zhí)行命令的用戶(hù)同樣是以下圖中的
Username
里填寫(xiě)的用戶(hù)的身份執(zhí)行的亏娜。假如執(zhí)行命令是執(zhí)行一個(gè)在遠(yuǎn)程應(yīng)用服務(wù)器上的一個(gè)腳本焕窝,那么路徑和文件都必須存在,并且维贺,腳本中的任何相對(duì)路徑都會(huì)相對(duì)于此用戶(hù)的家目錄它掂。
配置完成保存后可進(jìn)行構(gòu)建測(cè)試
修改項(xiàng)目上的靜態(tài)文件然后push至gitlab,可觀察到j(luò)enkins自動(dòng)捕捉到push動(dòng)作后溯泣,開(kāi)始自動(dòng)構(gòu)建虐秋,然后構(gòu)建完成后,訪問(wèn)nginx反向代理的端口即可觀察到修改成功垃沦。