说明
全部都基于 Docker 服务搭建使用,首先用 Docker 安装 Jenkins 环境,Docker 安装 GitLab 版本管理系统,执行 Jenkins 拉取指定版本 tag 进行编译构建,在用 SonarQube 进行代码质量检测,在打包制作镜像,发布到 Harbor 镜像仓库,最后启动 SpringBoot 工程并进行访问。
系统平台
CentOS Linux 7
Docker Version: 24.0.5
Docker Compose version v2.20.2
上面的环境搭建准备,这里就不在过多描述。
相关技术栈
序号 | 名称 | 版本 | 备注 |
1 | OS | CentOS Linux7 | 操作系统 |
2 | docker | 24.0.5 | 容器 |
3 | Docker Compose | 2.20.2 | 多容器应用的部署和管理工具 |
4 | Jenkins | 2.414.1 | CICD |
5 | GitLab | 14.6.1 | 版本管理 |
6 | Maven | 3.5.3 | 构建工具 |
7 | JDK | 1.8.0_301 | Java开发工具包 |
8 | SonarQube | 8.9.8 | 代码质量扫描 |
9 | Harbor | 2.8.3 | 镜像仓库 |
GitLab 创建个 HelloSpringBoot 仓库,导入 base 代码。
Jenkins 创建一个自由风格的 Job 工程。
选择 tag 版本,进行构建编译,发现部署有问题,可以及时回滚构建版本发布。
构建编译过程
编译构建过程中的关键执行步骤如下
#!/bin/bash -x
pwd
chmod -R 777 /usr/local/docker
rm -rf /usr/local/docker/testing/*
sleep 1
cp -rf target/*.jar /usr/local/docker/testing/
cp -rf Docker/* /usr/local/docker/testing/
cd /usr/local/docker/testing
docker-compose up -d --build
docker image prune -f
docker tag mytest:$tag 192.*.*.*:80/repository/mytest:$tag
docker login -u admin -p scm#Admin1 192.*.*.*:80
if [ $? -ne 0 ]; then
echo "=====failed====="
exit 1
else
docker push 192.*.*.*:80/repository/mytest:$tag
echo "===== Push images Succeed ====="
fi
构建完成,打包制作镜像,发布到 Harbor 镜像仓库。
构建编译过程,执行了 SonarQube 代码扫描分析,把代码扫描质量结果发布到系统上。
发布制作的 docker 镜像,发布到 Harbor 仓库。
浏览器访问部署的 springboot 服务,可以看到已正常访问了。
到此,整个 Docker 部署 Jenkins 构建 SpringBoot 工程,进行编译,进行代码的质量扫描,然后发布镜像到镜像仓库中,最后部署 SpringBoot 工程,全部任务都完成了。
今天的分享也就结束了。