springboot maven项目根据jenkins自动打包,并自动构建镜像上传阿里云镜像仓库.

项目用到的技术或者工具

  • centos 7.x
  • jenkins(支持jdk1.8的最新版:docker pull jenkins/jenkins:latest-jdk8)
  • maven
  • jdk1.8(需要准备oracle账密.文档中java环境是自动下载安装—平时大家下载jdk 都需要登录账号)
  • docker
  • shell脚本
  • 阿里云镜像仓库
  • gitee

docker 安装

1、一键代码安装

curl -sSL https://get.daocloud.io/docker | sh

2、启动

systemctl start docker

3、查看安装是否成功

docker info
dokcer -v 查看版本

jenkins安装

1、拉取镜像

docker pull jenkins/jenkins:latest-jdk8

也可以在这里查找其他版本:docker-jenkins版本官网

2、创建挂载路径(目的是jenkins容器使用宿主机器外面的目录):

mkdir -p /data/jenkins_home

3、给目录授权

chmod 777 /data/jenkins_home

4、启动容器

docker run -d \
    -p 8040:8080 \
    -p 50000:50000 \
    --restart=always \
    --user root \
    -v /data/jenkins_home:/var/jenkins_home \
    -v /etc/localtime:/etc/localtime \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /usr/bin/docker:/usr/bin/docker \
    --name=jenkins \
    jenkins/jenkins:latest-jdk8

命令说明:

  • -d 保持后台运行
  • -p 映射端口,把外部端口映射到内部
  • –restart=always 跟随容器启动 自动启动
  • –user root 以root身份进入jenkins中,在jenkins中能使用宿主机的权限
  • -v 挂载目录,jenkins容器中能使用宿主机的目录,因为jenkins打包后会指定docker 构建镜像所以-v要挂载docker
  • –name 容器名字

-v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker \ 这两个属性非常重要.因为构建会在jenkins中执行docker命令..然后会把镜像构建在宿主机的docker环境中..不引入这个配置通过shell脚本进行构建镜像就比较麻烦.....

jenkins 配置

1、浏览器访问http://ip:8040 进入控制台

1663744042586.png

在宿主机里面输入:vi /data/jenkins_home/secrets/initialAdminPassword 即可查看密码(里面的字符串就是密码)
需要吧var 替换成data 因为宿主机挂载目录在这目录下
退出编辑模式::wq

2、直接使用推荐安装


1663744288221.png

3、等待安装


1663744404442.png

4、创建账号
1663744853006.png

5、安装maven、jdk、gitee插件
进入插件管理


5765243a59bff90ba3b8715642618b7.png

找到相应插件勾选上点击按钮执行


02e24c3fe67675512d01f7165d3c03e.png

安装完重启下


1663745854257.png

6、安装jdk 和maven版本 在全局工具配置中设置如下:
配置jdk


jdk配置

配置maven


maven配置

7、选择jdk、maven自动安装后 最后点击应用

8、然后回首页 进入系统管理->系统配置 找到gitee:


gitee配置
添加gitee令牌

jenkins 项目构建

1、新建任务(构建项目)


构建项目

创建后会进入该项目配置:
2、源码管理


源码管理

3、构建触发器
构建触发器

生成webhook密码

4、生成webhook


生成webhook

5、首次构建项目
点击立即构建(第一次比较慢.需要下面maven环境,和jdk 包等)


立即构建

在任务中查看控制台信息


控制台信息

宿主机目录

测试一下,你重新gitee提交manster分支代码.jenkins 中的demo项目就会自动构建…
以上自动构建,已经完成.接下来实现自动构建镜像,并上传阿里云私有的镜像仓库

构建docker镜像

1、Dockerfile编写
文件放在项目的src/main/resources 目录下 文件名:Dockerfile 内容如下:

FROM openjdk:8-jdk-alpine
MAINTAINER "维护者"
LABEL description="demo项目自动构建镜像文本"
WORKDIR /www
ADD target/demo-0.0.1-SNAPSHOT.jar /app/app.jar
EXPOSE 8081
CMD java -jar /app/app.jar
# 如果有不同环境 CMD java -jar /app/app.jar --spring.profiles.active=prod

编辑好之后,需要提交到gitee上去

2、创建阿里云镜像仓库


阿里云镜像

创建阿里云仓库

本地仓库

镜像信息

3、在jenkins项目demo下的写入shell脚本


1663761949732.png

shell脚本

自己稍微要改一下脚本

#!/bin/sh
#上传镜像

# 特别注意 如果是本机在运行这个项目...需要停止容器 并删除运行的容器
# docker stop demo
# docker rm demo

#删除本地镜像
echo "正在删除镜像..."
# 删除阿里云的镜像
DID=$(docker images | grep "自己阿里云上的命名空间/ali_demo" | awk '{print $3}')
if [ -n "$DID" ]; then
  echo "正在删除阿里云镜像"
  docker rmi -f $DID
fi

# 删除本地镜像
DID=$(docker images | grep "demo" | awk '{print $3}')
if [ -n "$DID" ]; then
  echo "正在删除本地镜像"
  docker rmi -f $DID
fi

# 删除好这些东西后,我们准备构建镜像
echo "开始构建镜像...."
# 我们使用的一个插件来自动构建镜像  这个要修改为你自己项目路径..我叫demo. 你叫啥改啥
docker build -f /var/jenkins_home/workspace/demo/target/classes/Dockerfile -t demo:v1 .
echo "获取当前镜像id..."
# 我们获取我们构建好的镜像的id
DID=$(docker images | grep "demo" | awk '{print $3}')
echo "登录..."
docker login --username=你的账户名字 --password=你创建仓库设置的密码 registry.cn-hangzhou.aliyuncs.com

echo "建立映射中..."
docker tag $DID registry.cn-hangzhou.aliyuncs.com/自己阿里云上的命名空间/ali_demo:v1
echo "镜像推送至阿里云仓库中..."
docker push registry.cn-hangzhou.aliyuncs.com/自己阿里云上的命名空间/ali_demo:v1
echo "自动化部署完成!"

#如果是单机运行....你还可以后面 直接 docker run  就能启动这个镜像 运行这个容器
#例如:docker run -d --name mydemo --restart=always -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime  -p 8021:8081 demo:v1

4、测试构建镜像
点击jenkins demo项目中的立即构建,监控控制台.显示构建成功
构建完成后,就能在阿里云上看到镜像上传版本和最新上传时间了


1663763406278.png

5、自动部署
现在jenkins 能自动通过maven环境 构建springboot项目成jar包.并自动构建成镜像,然后上传到阿里云私有仓库…接下来我们生产环境或者测试环境可能会有比较多的服务器…单台单台去 docker pull或者run 比较费人工…

那么就有了如何根据jenkins 自动部署仓库容器(需要ssh远程执行脚本或者k8s)
docker+jenkins打包构建镜像后.批量发布项目-远程发布

你可能感兴趣的:(springboot maven项目根据jenkins自动打包,并自动构建镜像上传阿里云镜像仓库.)