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

@TOC


推荐个人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界面的平台 在这里插入图片描述

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防火墙 在这里插入图片描述 注意:第一次启动的时候正在加载jenkins大概会等待3-10分钟。出现下图即可 在这里插入图片描述

3 解锁jenkins

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

在这里插入图片描述 输入上面复制的解锁密码 在这里插入图片描述 点击安装推荐插件 在这里插入图片描述 等待完成就好了 在这里插入图片描述 大概需要等待3-10分钟

4 创建新的用户

自己输入填完 在这里插入图片描述 点击开始使用 在这里插入图片描述 出现下图就成功了 在这里插入图片描述

Jenkins全局工具配置

1 配置JDK

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

在这里插入图片描述 在点击 在这里插入图片描述 找到jdk添加,别名随便写,这个JAVA_HOME就是自己查询出来的JDK路径 在这里插入图片描述 填写完点击保存

2 配置Maven

在这里插入图片描述 在这里插入图片描述 Maven的话就选择直接点击自动安装就好了 在这里插入图片描述

3.配置项目Maven插件

上面不是配置了Maven插件吗,那是不一样的,上面那个是全局的Jenkins的Maven插件,我这里是需要配置项目的Maven插件,现在的项目基本都Maven项目,所以需要部署时联网下载。 在这里插入图片描述

搜索插件名称:
Maven Integration
复制代码

在这里插入图片描述 在选择安装后重启 在这里插入图片描述 等待完成就OK啦

使用Jenkins自动打包SpringBoot项目

1 新建一个SpringBoot项目

我只勾选了WEB开发 在这里插入图片描述 添加这一点点代码 在这里插入图片描述

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 在这里插入图片描述 运行访问看看: 在这里插入图片描述

2 上传项目至GitLab

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

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

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

整个项目打包上来: 在这里插入图片描述

3 Jenkins实现Springboot项目自动部署

1 新建一个发布任务

在这里插入图片描述 选择Maven项目,在点击确定

注:如果没有Maven选项的话,就是 没有完成上面:3 配置项目Maven插件这一步骤. 在这里插入图片描述

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

上面那一步骤完成后,往下移,找到源码管理,点击Git 在这里插入图片描述 配置里面的地址参数 在这里插入图片描述 把上面的复制下来:http://120.77.0.58/root/springboot_test.git

我这里加了有点不一样,我加上了端口号,因为我服务器80端口未打开,我就使用了我GitLab的端口号,如果防火墙开发了80端口就不需要加上端口号 在这里插入图片描述 在配置用户名密码: 在这里插入图片描述 ID和描述可以不需要填,只需要填写正确的地址和用户名密码就行了 在这里插入图片描述 还未完成 在这里插入图片描述 还未完!

3 配置项目自动打包

接着往下移找到Build

填写
clean install
复制代码

在这里插入图片描述 在点击保存 在这里插入图片描述 完成后,在点击立即构建 在这里插入图片描述 在点击左下角 在这里插入图片描述 选择控制台,即可查看打包的日志 在这里插入图片描述 下面是成功的样子: 第一次构建可能耗时比较长,因为需要下载一些相关依赖jar包

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

在这里插入图片描述

注意如果报错:ERROR: Maven JVM terminated unexpectedly with exit code 137在这里插入图片描述 问题原因:因为maven设置的内存不足,也就是服务器内存不足,运行内存不足,可以输入top命令把大的进程给关了:TOP命令详解

4 找到Jenkins打包的项目位置

Jenkins打包的项目是在Docker中Jenkins容器内,要找到打包的项目必须进入容器才能查看 在这里插入图片描述

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

在这里插入图片描述 上面的选项 4 就是打包成功的JAR包,这个包是可以直接在Docker容器内运行的,但是我们不要去容器内运行,我们要在可视化Jenkins中内实现打包后自动运行


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

1、选择项目 在这里插入图片描述 2、点击配置 在这里插入图片描述 3、往下移动找到Post Steps,选择添加Shall脚本 在这里插入图片描述 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
复制代码

在这里插入图片描述

5、保存完了后点击:立即构建: 在这里插入图片描述 成功! 在这里插入图片描述

配置Docker容器映射外网访问

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

在这里插入图片描述 发现已经配置完成,

但是外网访问不了,就算关闭了防火墙也访问不了,需要重新映射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端口号是我的项目端口号 在这里插入图片描述

2 重新构建项目

等待重启完成,在次点击立即构建 在这里插入图片描述 等待构建完成即可

外网访问测试

输入:IP地址+端口号+接口路径 在这里插入图片描述 完成!

何为自动化部署项目

1、现在的项目输入是这样的: 在这里插入图片描述 2、修改源代码 在这里插入图片描述

3.使用Git重新提交项目 在这里插入图片描述 4.点击关闭,在点击构建 在这里插入图片描述 5.在此访问查看 在这里插入图片描述 成功!

来源:https://juejin.cn/post/7006343537155375112
posted @ 2022-12-24 22:13  程序员小明1024  阅读(331)  评论(0编辑  收藏  举报