構(gòu)建鏡像和發(fā)布鏡像到harbor都需要使用到docker命令。而在Jenkins容器內(nèi)部安裝Docker官方推薦直接采用宿主機(jī)帶的Docker即可
設(shè)置Jenkins容器使用宿主機(jī)Docker
- 設(shè)置宿主機(jī)docker.sock權(quán)限
chown root:root /var/run/docker.sock
chmod o+rw /var/run/docker.sock
- 添加數(shù)據(jù)卷
version: "3.1"
services:
? jenkins:
? ? image: jenkins/jenkins
? ? container_name: jenkins
? ? ports:
? ? ? - 8080:8080
? ? ? - 50000:50000
? ? volumes:
? ? ? - ./data/:/var/jenkins_home/
? ? ? - /var/run/docker.sock:/var/run/docker.sock
? ? ? - /usr/bin/docker:/usr/bin/docker
? ? ? - /etc/docker/daemon.json:/etc/docker/daemon.json
? ? restart: always
添加構(gòu)建操作
添加參數(shù)化部署,這里添加一個(gè)參數(shù)projectVersion,用來給鏡像指定具體的版本
?將原來使用over ssh推送jar及dockerFile文件的構(gòu)建后操作步驟刪除
在代碼質(zhì)量檢測(cè)完成后執(zhí)行鏡像打包操作,并把鏡像推送到目標(biāo)服務(wù)器上
mv target/*.jar docker/
docker build -t mytest:${projectVersion} docker/
docker login -u admin -p Harbor12345 192.168.19.7:80
docker tag mytest:${projectVersion} 192.168.19.7:80/repo/mytest:${projectVersion}
docker push 192.168.19.7:80/repo/mytest:${projectVersion}
編寫部署腳本
在代碼部署的服務(wù)器上編寫如下腳本deploy,并且將腳本移動(dòng)環(huán)境變量中:
[root@localhost bin]# ls /usr/bin/ | grep deploy.sh
deploy.sh
?
[root@localhost bin]# cat /usr/bin/deploy.sh?
harbor_url=$1
harbor_project_name=$2
project_name=$3
tag=$4
port=$5imageName=$harbor_url/$harbor_project_name/$project_name:$tag
containerId=`docker ps -a | grep ${project_name} | awk '{print $1}'`
if [ "$containerId" != "" ] ; then
? ? docker stop $containerId
? ? docker rm $containerId
? ? echo "Delete Container Success"
fiimageId=`docker images | grep ${project_name} | awk '{print $3}'`
if [ "$imageId" != "" ] ; then
? ? docker rmi -f $imageId
? ? echo "Delete Image Success"
fidocker login -u admin -p Harbor12345 $harbor_url
docker pull $imageName
docker run -d -p $port:8080 --name $project_name $imageName
echo "Start Container Success"
echo $project_name
?
配置構(gòu)建后操作
在項(xiàng)目的參數(shù)中添加如下host_port參數(shù):
在excu command中配置如下命名:
deploy.sh 192.168.19.7:80 ?repo mytest ?${projectVersion} ${host_port}
測(cè)試執(zhí)行構(gòu)建:
在源碼中修改hello 接口為:
?把代碼推送到倉庫,然后執(zhí)行構(gòu)建
?在瀏覽器上輸入:192.168.19.7:8081/hello,查看輸出,觀看響應(yīng)是否已經(jīng)更改。
看到確實(shí)已經(jīng)修改
至此,我們已經(jīng)完成了一個(gè)基本的CI/CD的流水線。
實(shí)現(xiàn)的功能有:
1、開發(fā)者編完代碼后,將代碼推送到gitlab倉庫中。
2、jenkins將拉取代碼,然后通過maven打包
3、打包完成后,通過sonarQube進(jìn)行代碼質(zhì)量檢測(cè)
4、質(zhì)量檢測(cè)完成后,將代碼打包成鏡像
5、將生成的鏡像文件推送到Harbor服務(wù)器上
6、jenkins服務(wù)器通知部署服務(wù)器做發(fā)布操作
? ? ? ? ? 6.1? 如果項(xiàng)目有正在運(yùn)行的容器,需要停止
? ? ? ? ? 6.2 如果有原來項(xiàng)目的鏡像需要把鏡像進(jìn)行刪除
? ? ? ? ? 6.3 從Harbor服務(wù)器上拉取鏡像到部署服務(wù)器上
? ? ? ? ?6.4? 根據(jù)拉取到的最小鏡像來運(yùn)行一個(gè)新的容器
文章來源:http://www.zghlxwxcb.cn/news/detail-673207.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-673207.html
到了這里,關(guān)于最簡單配置jenkins容器使用宿主機(jī)的docker方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!