项目用到的技术或者工具
- 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 进入控制台
在宿主机里面输入: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打包构建镜像后.批量发布项目-远程发布
网友评论