前提:前面我們已經(jīng)做了自己的鏡像倉庫比藻,本次實(shí)驗(yàn)是在jenkins上做好應(yīng)用的鏡像 push 到本地倉庫边琉,遠(yuǎn)程機(jī)器去本地倉庫下載啟動(dòng)j鏡像。
一捉片、安裝需要的插件
Maven Intergration plugin #用于構(gòu)建maven項(xiàng)目的插件
Checkstyle plugin #檢測(cè)代碼的格式是否規(guī)范的插件
Findbugs plugin #對(duì)提交的代碼靜態(tài)檢測(cè)平痰,靜態(tài)語法
Deploy to Container Plugin #將項(xiàng)目部署到Tomcat中需要用到的插件 (或者其他容器)
Publish over SSH plugin #需要部署項(xiàng)目到遠(yuǎn)程linux時(shí)需要到的插件
Gogs plugin #使用web鉤子推送時(shí)汞舱,必須下載此插件伍纫,不然就會(huì)報(bào)403錯(cuò)誤
Hudson SCP publisher plugin:拷貝部署文件到遠(yuǎn)程虛擬機(jī)
Publish Over SSH:執(zhí)行遠(yuǎn)程部署命令
Environment Injector Plugin:注入變量
二宗雇、系統(tǒng)設(shè)置-Publish over SSH
系統(tǒng)管理-系統(tǒng)設(shè)置-Publish over SSHname:自己取
Hostname:就是遠(yuǎn)程服務(wù)器的ip
Usename:就是用戶名
Remote Directory:這個(gè)目錄是上傳文件的路徑。
Port:端口根據(jù)實(shí)際情況配置。保存良漱!
三舞虱、項(xiàng)目個(gè)性化配置
配置-增加構(gòu)建后操作步驟。Name:選擇配置好的遠(yuǎn)程機(jī)器
Source files: 默認(rèn)位置是項(xiàng)目的工作目錄母市,所以要寫上需要遠(yuǎn)程傳輸?shù)奈募南鄬?duì)地址矾兜。
Remove prefix:去掉war包前面的文件夾
Exec command:是遠(yuǎn)程服務(wù)器上需要執(zhí)行的腳本的位置椅寺。可以在該腳本中寫部署啟動(dòng)腳本蒋失。此處先不寫返帕,先嘗試一下是否可以把本地文件發(fā)到遠(yuǎn)程機(jī)器。
點(diǎn)擊保存篙挽,立即構(gòu)建荆萤。構(gòu)建成功:
遠(yuǎn)程機(jī)器的目標(biāo)目錄存在war包:
注意 :此處傳輸失敗的很多原因基本是目錄沒有寫對(duì),我也是嘗試了好幾次才寫對(duì)的铣卡。
四链韭、遠(yuǎn)程上傳下載鏡像
- Execute shell中做好鏡像后,不是在本機(jī)啟動(dòng)煮落, 而是上傳到鏡像倉庫敞峭。
#!/bin/bash
dates=`date "+%Y%m%d"`
projects="preview"
registry="192.168.22*.**:8088"
sudo rm -rf /opt/product/preview/apps/preview/*
sudo cp -rf /var/lib/jenkins/workspace/preview/WebContent/* /opt/product/preview/apps/preview/
sudo docker stop $projects || true
sudo docker rm -f $projects || true
sudo docker rmi $registry/$projects:$dates || true
sudo docker build -t $registry/$projects:$dates /opt/product/preview
#sudo docker run --name=$projects -d -ti -p 38001:8080 -v /opt/product/data:/opt/product/data -v /data/jdk:/data/jdk $projects:$dates
sudo docker push $registry/$projects:$dates
2.遠(yuǎn)程機(jī)器運(yùn)行腳本位置
Exec command:/opt/test/gaoyx/remote/preview/preview.sh
腳本內(nèi)容如下:
#!/bin/bash
dates=`date "+%Y%m%d"`
projects="preview"
registry="192.168.22*.**:8088"
sudo docker stop $projects || true
sudo docker rm -f $projects || true
sudo docker rmi $registry/$projects:$dates || true
sudo docker pull $registry/$projects:$dates
sudo docker run --name=$projects --restart=always -d -ti -p 6801:8080 -v /opt/product/data:/opt/product/data -v /data/jdk:/data/jdk $registry/$projects:$dates
構(gòu)建后可能不會(huì)立即成功,基本上是涉及到倉庫的配置州邢,根據(jù)報(bào)錯(cuò)慢慢調(diào)試就ok 了儡陨。
我的疑問:剛開始我認(rèn)為倉庫里面的鏡像需要先刪除,才能提交鏡像量淌,因?yàn)槠澹襭ush相同名字的鏡像時(shí),jenkins的日志顯示Layer already exists 等信息呀枢,后來我做了測(cè)試胚股,改了應(yīng)用里面的文件重復(fù)提交后發(fā)現(xiàn)其實(shí)是可以更新的。這樣很好裙秋,就不用再找方法先去刪除倉庫里面的鏡像再提交了琅拌。
其實(shí)在倉庫里面也可以看到鏡像缨伊,有個(gè)更新時(shí)間的,說明支持更新进宝。還有最后下載時(shí)間刻坊。<完谭胚!>