要将 Jenkins 集成 Harbor,您可以简单地按照以下步骤操作:
- 配置 Jenkins 可以操作宿主机docker
- 配置 Jenkins 构建步骤,在静态代码扫描结束后通过dockerfile制作镜像
- 将构建 Docker 项目镜像并将其推送到 Harbor 仓库中
- 在 Jenkins 中配置 ssh server,以便在推送新镜像时触发自动部署。
一、构建镜像上传 Harbor
- 第一步操作可以参考之前的 Harbor 镜像 文章内容。
- 构建镜像并推送至 harbor 仓库
![](https://img.haomeiwen.com/i19160182/f086fd1bf15c5426.png)
echo "1. 制作服务镜像"
mv target/test_demo2-0.0.1-SNAPSHOT.jar ./
docker build -t test_demo2:1.0.0 .
echo "2. 登录 harbor 镜像仓库"
docker login -u admin -p Harbor12345 192.168.88.152:80
echo "3. 推送镜像至 harbor 仓库"
docker tag test_demo2:1.0.0 192.168.152:80/auto_test/test_demo2:1.0.0
docker push 192.168.152:80/auto_test/test_demo2:1.0.0
![](https://img.haomeiwen.com/i19160182/e5b5e0afd28b31d5.png)
二 、目标服务部署
首先分析一下目标服务器拉取镜像并进行部署的整个过程会存在哪些问题?
- 需要告知服务器拉取哪个镜像
- 判断当前服务器是否正在运行容器,是则删除
- 判断目标服务器是否已经存在当前镜像,是则删除
- 目标服务器服务器如何拉取 harbor 上的镜像?
- 将拉取下来的镜像以什么方式运行?
远程服务配置
路径:系统管理-系统配置
![](https://img.haomeiwen.com/i19160182/8f9024f775159a03.png)
配置远程目标服务的工作目录以及连接信息
准备部署脚本
1.创建脚本并授权
$ vim deploy.sh
harbor_addr=$1
harbor_repo=$2
project=$3
version=$4
port=$5
imageName=$harbor_addr/$harbor_repo/$project:$version
echo $imageName
containerId=`docker ps -a | grep ${project} | awk '{print $1}'`
echo $containerId
if [ "$containerId" != "" ] ; then
docker stop $containerId
docker rm $containerId
fi
tag=`docker images | grep ${project} | awk '{print $2}'`
echo $tag
if [[ "$tag" =~ "$version" ]]; then
docker rmi -f $imageName
fi
# 登录 harbor 仓库
docker login -u admin -p Harbor12345 $harbor_addr
# 拉取镜像
docker pull $imageName
# 运行容器
docker run --name $project -p $port:$port -d $imageName
echo "Success"
测试脚本
# 授权
$ chmod a+x deploy.sh
# 调试脚本
$ sh ./deploy.sh 192.168.88.152:80 auto_test test_demo2 1.0.0 8080
# 添加环境变量
$ echo $PATH
$ mv deploy.sh /usr/bin
Jenkins 任务配置
![](https://img.haomeiwen.com/i19160182/3c09095b0a9dd2c3.png)
1.docker 查看 容器运行情况
2.浏览器查看服务是否可以访问
![](https://img.haomeiwen.com/i19160182/0fbfa5c967ad2c32.png)
至此,简单就完成了CI/CD流水线的微服务部署,后续会通过 pipeline 方式配置。
网友评论