【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目

基于Docker安装Jenkins实现自动化构建、部署、测试、监控项目

      • 什么是Jenkins
      • CI/CD是什么
      • Jenkins的特点
      • 使用Docker 安装jenkins
        • 1 使用docker 安装jenkins
        • 2 访问jenkins所在的IP地址加上8080端口
        • 3 解锁jenkins
        • 4 创建新的用户
      • Jenkins全局工具配置
        • 1 配置JDK
        • 2 配置Maven
        • 3.配置项目Maven插件
      • 使用Jenkins自动打包SpringBoot项目
        • 1 新建一个SpringBoot项目
        • 2 上传项目至GitLab
        • 3 Jenkins实现Springboot项目自动部署
          • 1 新建一个发布任务
          • 2 配置任务git地址和账号密码
          • 3 配置项目自动打包
          • 4 找到Jenkins打包的项目位置
      • 使用Jenkins实现打包后执行shll脚本部署项目
      • 配置Docker容器映射外网访问
        • 1 配置Jenkins容器映射端口号
        • 2 重新构建项目
      • 外网访问测试
      • 何为自动化部署项目


推荐个人Docker文章,讲的非常详细

【玩转Docker容器 1】Dockerd的详解及安装
【玩转Docker容器 2】基于Docker一分钟搭建完 Jdk、Mysql、Nginx、Redis、Tomcat环境
【玩转Docker容器 3】基于Docker部署SpringBoot项目
【玩转Docker容器 4】基于Docker搭建Docker私服,以及如何使用Docker私服详解
【玩转Docker容器 5】基于Docker搭建Maven私服,以及项目如何使用Maven私服详解
【玩转Docker容器 6】基于Docker构建GitLab管理代码
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、测试、监控项目

什么是Jenkins

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,它用Java语言编写而成,可持续集成、自动的构建/测试软件项目、监控外部任务的运行的web界面的平台
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第1张图片

CI/CD是什么

CI(Continuous integration),中文意思是持续集成,是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

CD(Continuous Delivery), 中文意思持续交付,是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

Jenkins的特点

1、开源的java语言开发持续集成工具,支持CI,CD;

2、易于安装部署配置:可通过yum安装,通过docker容器等快速实现安装部署,可通过web界面配置管理;

3、消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告;

4、分布式构建:支持Jenkins能够让多台计算机一起构建/测试;

5、文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等;

6、丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等。

7、支持项目持续监控,日志输出

使用Docker 安装jenkins

1 使用docker 安装jenkins

输入下载(有可能比较久)
# docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean 

2 访问jenkins所在的IP地址加上8080端口

注意关闭8080防火墙
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第2张图片
注意:第一次启动的时候正在加载jenkins大概会等待3-10分钟。出现下图即可
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第3张图片

3 解锁jenkins

进入jenkins容器 查看密码
# docker ps
# docker exec -it 容器id /bin/bash 
# cat /var/jenkins_home/secrets/initialAdminPassword

在这里插入图片描述
输入上面复制的解锁密码
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第4张图片
点击安装推荐插件
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第5张图片
等待完成就好了
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第6张图片
大概需要等待3-10分钟

4 创建新的用户

自己输入填完
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第7张图片
点击开始使用
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第8张图片
出现下图就成功了
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第9张图片

Jenkins全局工具配置

1 配置JDK

进入jenkins容器 查看java环境安装地址
# docker ps
# docker exec -it 容器id /bin/bash 
# echo $JAVA_HOME

在这里插入图片描述
在点击
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第10张图片
找到jdk添加,别名随便写,这个JAVA_HOME就是自己查询出来的JDK路径
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第11张图片
填写完点击保存

2 配置Maven

【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第12张图片
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第13张图片
Maven的话就选择直接点击自动安装就好了
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第14张图片

3.配置项目Maven插件

上面不是配置了Maven插件吗,那是不一样的,上面那个是全局的Jenkins的Maven插件,我这里是需要配置项目的Maven插件,现在的项目基本都Maven项目,所以需要部署时联网下载。
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第15张图片

搜索插件名称:
Maven Integration

【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第16张图片
在选择安装后重启
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第17张图片
等待完成就OK啦

使用Jenkins自动打包SpringBoot项目

1 新建一个SpringBoot项目

我只勾选了WEB开发
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第18张图片
添加这一点点代码
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第19张图片

package com.example.demo.api;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestApi {

    @RequestMapping("/test")
    public String test(){
        System.out.println("基于Docker安装Jenkins实现自动化构建、部署、测试、监控项目");
        return "基于Docker安装Jenkins实现自动化构建、部署、测试、监控项目";
    }
}

端口号:5656
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第20张图片
运行访问看看:
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第21张图片

2 上传项目至GitLab

使用git上传,或者使用IDEA上传,或者Eclipse上传到GitLab上

我自己是找到项目地址使用Git打开git bash输入命令上传的

不懂看这篇文章,搭建、上传、下载过程都有:
【玩转Docker容器 6】基于Docker构建GitLab管理代码

整个项目打包上来:
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第22张图片

3 Jenkins实现Springboot项目自动部署

1 新建一个发布任务

【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第23张图片
选择Maven项目,在点击确定

注:如果没有Maven选项的话,就是 没有完成上面:3 配置项目Maven插件这一步骤.
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第24张图片

2 配置任务git地址和账号密码

上面那一步骤完成后,往下移,找到源码管理,点击Git
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第25张图片
配置里面的地址参数
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第26张图片
把上面的复制下来:http://120.77.0.58/root/springboot_test.git

我这里加了有点不一样,我加上了端口号,因为我服务器80端口未打开,我就使用了我GitLab的端口号,如果防火墙开发了80端口就不需要加上端口号
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第27张图片
在配置用户名密码:
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第28张图片
ID和描述可以不需要填,只需要填写正确的地址和用户名密码就行了
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第29张图片
还未完成
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第30张图片
还未完!

3 配置项目自动打包

接着往下移找到Build

填写
clean install

【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第31张图片
在点击保存
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第32张图片
完成后,在点击立即构建
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第33张图片
在点击左下角
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第34张图片
选择控制台,即可查看打包的日志
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第35张图片
下面是成功的样子:
第一次构建可能耗时比较长,因为需要下载一些相关依赖jar包

结尾出现:Finished: SUCCESS		代表成功
结尾出现:Finished: FAILURE		代表失败

【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第36张图片

注意如果报错:ERROR: Maven JVM terminated unexpectedly with exit code 137【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第37张图片
问题原因:因为maven设置的内存不足,也就是服务器内存不足,运行内存不足,可以输入top命令把大的进程给关了:TOP命令详解

4 找到Jenkins打包的项目位置

Jenkins打包的项目是在Docker中Jenkins容器内,要找到打包的项目必须进入容器才能查看
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第38张图片

输入:
# docker ps
# docker exec -it 容器id /bin/bash 
# cd /var/jenkins_home/workspace/springboot_test/target/
# ls

【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第39张图片
上面的选项 4 就是打包成功的JAR包,这个包是可以直接在Docker容器内运行的,但是我们不要去容器内运行,我们要在可视化Jenkins中内实现打包后自动运行


使用Jenkins实现打包后执行shll脚本部署项目

1、选择项目
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第40张图片
2、点击配置
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第41张图片
3、往下移动找到Post Steps,选择添加Shall脚本
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第42张图片
4、配置脚本
配置:(需要修改前面四个)服务名、Jar包名称、Jar包路径、Jar包路劲
建议重控制台输出去复制粘贴上来

#!/bin/bash
#服务名称,最好和项目名称一致
SERVER_NAME=springboot_test
# 源jar路径,mvn打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的webapps目录下运行,这里使用jar包,用java -jar 命令执行  
JAR_NAME=demo-0.0.1-SNAPSHOT
# 源jar路径  
JAR_PATH=/var/jenkins_home/workspace/springboot_test/target/
JAR_WORK_PATH=/var/jenkins_home/workspace/springboot_test/target/

echo "查询进程id-->$SERVER_NAME"
PID=`ps -ef | grep "$SERVER_NAME" | awk '{print $2}'`
echo "得到进程ID:$PID"
echo "结束进程"
for id in $PID
do
	kill -9 $id  
	echo "killed $id"  
done
echo "结束进程完成"

#复制jar包到执行目录
echo "复制jar包到执行目录:cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "复制jar包完成"
cd $JAR_WORK_PATH
#修改文件权限
chmod 755 $JAR_NAME.jar


#如果要设置后台启动方式的话,修改底下为:BUILD_ID=dontKillMe nohup java -jar  $JAR_NAME.jar  &
java -jar  $JAR_NAME.jar

【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第43张图片

5、保存完了后点击:立即构建:
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第44张图片
成功!
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第45张图片

配置Docker容器映射外网访问

输入:
# docker ps
# docker exec -it 容器id /bin/bash 
# cd /var/jenkins_home/workspace/springboot_test/target/
# ps

【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第46张图片
发现已经配置完成,

但是外网访问不了,就算关闭了防火墙也访问不了,需要重新映射Docker中的Jenkins容器的端口号

1 配置Jenkins容器映射端口号

1.重启容器

输入:
systemctl restart  docker  

2.清空未运行的容器

输入:
docker run -d -p 8080:8080 -p 5656:5656 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

5656端口号是我的项目端口号
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第47张图片

2 重新构建项目

等待重启完成,在次点击立即构建
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第48张图片
等待构建完成即可

外网访问测试

输入:IP地址+端口号+接口路径
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第49张图片
完成!

何为自动化部署项目

1、现在的项目输入是这样的:
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第50张图片
2、修改源代码
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第51张图片

3.使用Git重新提交项目
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第52张图片
4.点击关闭,在点击构建
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第53张图片
5.在此访问查看
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、监控项目_第54张图片
成功!

你可能感兴趣的:(Docker,服务器,Linux)