基于Jenkins+Gitee实现SpringBoot项目自动化部署(Docker版)

发布时间 2023-07-06 20:42:01作者: 爱就码上行动

前言:

  上一篇笔记:基于Jenkins+Gitee实现SpringBoot项目自动化部署(非Docker版)

  本篇笔记介绍一下Docker版本的Jenkins如何实现项目自动化部署。

  本案例基于Linux CentOS 7服务器,防火墙开放8080端口(Jenkins使用),80端口(项目使用),云服务器直接在控制台配置安全规则即可。

1. 创建一个简单的SpringBoot项目,并提交到Gitee远程仓库

这里我直接使用上篇笔记的demo,名称为hello-jenkins

  GitHub使用类似,这里使用Gitee作为代码托管平台

2. 服务器安装Docker(社区版docker-ce)

  yum 包更新到最新

yum update

  卸载旧版本(如果安装过旧版本的话)

yum remove docker  docker-common docker-selinux docker-engine

  安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

  设置yum源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  安装docker

yum install docker-ce

  启动并设置开机自启

systemctl start docker
systemctl enable docker

  验证安装是否成功

docker version

  配置阿里云镜像仓库

  在阿里云官网注册登录,搜索容器镜像服务,进入控制台,复制如下命令执行,注意替换xxxx为自己的镜像源

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

  至此Docker安装完成。

3. docker 安装 Jenkins

  拉取2.346.1版本Jenkins镜像

docker pull jenkins/jenkins:2.346.1

  启动容器

docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker jenkins/jenkins:2.346.1

-v /var/jenkins_home:挂载Jenkins主工作目录

-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker:挂载docker运行变量到容器,否则无法在容器内使用docker命令

  启动成功后通过ip:8080访问,根据页面提示查看默认密码。

  下一步,选择推荐安装的插件

  最后,自定义一个管理员账号,即可开始使用Jenkins

4. Jenkins配置

下载可选插件

  首先在插件管理->高级 配置插件升级站点URL为阿里镜像源:https://mirrors.aliyun.com/jenkins/updates/update-center.json

  在可选插件安装 Maven Integration

  安装 Gitee

  如果需要远程推送,需要安装 Publish Over SSH,这里服务部署和Jenkins在同一台服务器,故不用安装。

全局工具配置

  Docker运行的Jenkins自带JDK11和Git,可以通过命令查看版本及安装目录,如果希望使用其他版本JDK或Git,可以在全局配置里勾选自动安装,但是安装JDK需要填写Oracle账号,且下载速度慢,我们可以自己上传到宿主机挂载的jenkins_home目录,在全局配置里配置HOME即可。

  示例这里我们使用自定义的JDK8和Maven3.6.3。

  先上传两个安装包到宿主机挂载的jenkins_home/app目录、解压

  不需要配置环境变量,但需要给Maven配置阿里云镜像仓库

<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

  在全局工具配置中,配置我们自定义的JDK和Maven。

  Maven的setting.xml路径

  JDK安装,配置JAVA_HOME,取消勾选自动安装

  Maven安装,配置MAVEN_HOME,取消勾选自动安装

  Git安装保持默认即可,点击保存。

系统配置

在系统配置中配置Gitee链接,根据提示获取access_tokens,该令牌只展示一次,注意保存。

 添加完成后可以点击 测试链接,出现成功则说明配置成功。

新建一个自由风格任务

  任务名称为hello-jenkins

   选择源码管理->Git,填写Gitee仓库地址,分支默认master

  点击添加凭证,填写Gitee用户名密码

   Credentials选择添加的Gitee凭证,报错消失

  点击构建选项,配置Maven执行以及Shell命令

  Shell如下,注意根据个人需求修改路径和端口

cd /var/jenkins_home/workspace/hello-jenkins
docker stop hello-jenkins || true
docker rm hello-jenkins || true
docker rmi hello-jenkins || true
docker build -t hello-jenkins .
docker run -d -p 80:80 --name hello-jenkins hello-jenkins:latest

  点击保存,Jenkins任务配置完成。

  打开本地项目,在根目录新建Dockerfile文件,写入以下内容,提交到远程仓库

# 基础镜像
FROM openjdk:8
# 维护人
MAINTAINER zxin<zxin@jenkins.com>
# 创建目录
RUN mkdir -p /home/app
# 拷贝项目jar
COPY target/hello-jenkins.jar /home/app/hello-jenkins.jar
# 执行命令启动jar
ENTRYPOINT ["java","-jar","/home/app/hello-jenkins.jar"]
# 暴露端口
EXPOSE 80

5. 运行

  点击立即构建,可以看到,依赖从我们配置的自定义版本Maven仓库下载

  等待构建完成,我们的hello-jenkins项目镜像创建成功,容器成功运行

  使用docker ps查看运行的容器

  访问ip(默认端口80)访问项目,应输出Hello, Docker!

  至此,基于Jenkins+Gitee实现SpringBoot项目自动化部署的目标顺利完成。