高端网站建设的介绍,仿唧唧帝笑话门户网站源码带多条采集规则 织梦搞笑图片视频模板,吸引人的微信软文,微博推广方式构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可
设置Jenkins容器使用宿主机Docker
设置宿主机docker.sock权限 chown root:root /var/run/docker.sock chmod orw /var/run/docker.sock 添加数据卷 v…构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可
设置Jenkins容器使用宿主机Docker
设置宿主机docker.sock权限 chown root:root /var/run/docker.sock chmod orw /var/run/docker.sock 添加数据卷 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 添加构建操作
添加参数化部署这里添加一个参数projectVersion用来给镜像指定具体的版本 将原来使用over ssh推送jar及dockerFile文件的构建后操作步骤删除 在代码质量检测完成后执行镜像打包操作,并把镜像推送到目标服务器上 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} 编写部署脚本
在代码部署的服务器上编写如下脚本deploy,并且将脚本移动环境变量中 [rootlocalhost bin]# ls /usr/bin/ | grep deploy.sh deploy.sh [rootlocalhost bin]# cat /usr/bin/deploy.sh harbor_url$1 harbor_project_name$2 project_name$3 tag$4 port$5 imageName$harbor_url/$harbor_project_name/$project_name:$tag containerIddocker ps -a | grep ${project_name} | awk {print $1} if [ $containerId ! ] ; then docker stop $containerId docker rm $containerId echo Delete Container Success fi imageIddocker images | grep ${project_name} | awk {print $3} if [ $imageId ! ] ; then docker rmi -f $imageId echo Delete Image Success fi docker 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 配置构建后操作
在项目的参数中添加如下host_port参数
在excu command中配置如下命名
deploy.sh 192.168.19.7:80 repo mytest ${projectVersion} ${host_port} 测试执行构建
在源码中修改hello 接口为 把代码推送到仓库然后执行构建 在浏览器上输入192.168.19.7:8081/hello查看输出观看响应是否已经更改。 看到确实已经修改
至此我们已经完成了一个基本的CI/CD的流水线。
实现的功能有
1、开发者编完代码后将代码推送到gitlab仓库中。
2、jenkins将拉取代码然后通过maven打包
3、打包完成后通过sonarQube进行代码质量检测
4、质量检测完成后将代码打包成镜像
5、将生成的镜像文件推送到Harbor服务器上
6、jenkins服务器通知部署服务器做发布操作 6.1 如果项目有正在运行的容器需要停止 6.2 如果有原来项目的镜像需要把镜像进行删除 6.3 从Harbor服务器上拉取镜像到部署服务器上 6.4 根据拉取到的最小镜像来运行一个新的容器