DevOps之安装和配置 Jenkins (一)
DevOps 之 CI/CD入门操作 (二)
Sonar Qube介绍和安装(三)
Harbor镜像仓库介绍&安装 (四)
Jenkins容器使用宿主机Docker(五)
Jenkins流水线初体验(六)
一、Jenkins制作自定义镜像并推送到Harbor镜像仓库
上一篇章讲到了Harbor镜像仓库的使用,构建镜像和发布镜像到Harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可
1.1 Jenkins容器使用宿主机Docker
- 设置Jenkins容器使用宿主机Docker
- 设置宿主机docker.sock权限
sudo chown root:root /var/run/docker.sock
sudo chmod o+rw /var/run/docker.sock
1.2 添加数据卷
cd /usr/local/docker/jenkins_docker
vi docker-compose.yml
version: "3.1"
services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./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
重启Jenkins容器
docker-compose up -d
1.3 添加构建操作
docker build -t mytest:$tag docker/
docker login -u admin -p Harbor12345 192.168.43.141:80
docker tag mytest:$tag 192.168.43.141:80/repo/mytest:$tag
docker push 192.168.43.141:80/repo/mytest:$tag
1.4 测试
- 1.4.1 修改代码并推送到GitLab
- GitLab新建tag:v4.0.0
- Jenkins 构建 v4.0.0
- 查看Harbor镜像仓库
mytest:v4.0.0镜像已经成功推送到仓库
二、目标服务器拉取镜像
部署项目需要通过Publish Over SSH插件,让目标服务器执行命令。为了方便一次性实现拉取镜像和启
动的命令,推荐采用脚本文件的方式。
添加脚本文件到目标服务器,再通过Publish Over SSH插件让目标服务器执行脚本即可
2.1 编写脚本文件,添加到目标服务器
vi deploy.sh
脚本 deploy.sh
harbor_url=$1
harbor_project_name=$2
project_name=$3
tag=$4
port=$5imageName=$harbor_url/$harbor_project_name/$project_name:$tagcontainerId=`docker ps -a | grep ${project_name} | awk '{print $1}'`
if [ "$containerId" != "" ] ; thendocker stop $containerIddocker rm $containerIdecho "Delete Container Success"
fiimageId=`docker images | grep ${project_name} | awk '{print $3}'`
if [ "$imageId" != "" ] ; thendocker rmi -f $imageIdecho "Delete Image Success"
fidocker login -u DevOps -p P@ssw0rd $harbor_url
docker pull $imageName
docker run -d -p $port:$port --name $project_name $imageName
echo "Start Container Success"
echo $project_name
2.2 设置权限为可执行
chmod a+x deploy.sh
2.3 测试脚本
2.4 将脚本移到PATH目录下
ls
echo $PATH
mv deploy.sh /usr/bin
2.5 Jenkins配置
增加构建后操作
deploy.sh 192.168.43.141:80 repo ${JOB_NAME} $tag 8081
2.6 构建
- 构建前将镜像mytest:v4.0.0删除
- 构建后
- 浏览器访问