一文详解Jenkins教程以及Jenkins中的CI/CD自动化部署机制

导读:本篇文章讲解 一文详解Jenkins教程以及Jenkins中的CI/CD自动化部署机制,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1. 引言

今天应技术经理的要求,来搭建Jenkins自动化部署。

不用每次停止(kill -9 manager.jar)服务,然后拷贝manager.jar包到服务器,再重新启动服务(nohup java -jar manager.jar > log.file 2>&1 &)。

如下是我在搭建jenkins时,整理出来的技术文档,以供大家参考所用。

2. Jenkins概述

2.1 Jenkins简介

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于HudsonHudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。

JenkinsJava语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。

通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVNGIT,构建工具有MavenAntGradle

2.2 什么是CI/CD

  1. CI

CIContinuous integration的简写,它的中文意思是持续集成,是一种软件开发时间。

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

借用如下网络图片对CI加以理解:

在这里插入图片描述

  1. CD

CDContinuous Delivery的英文简写,它的中文意思持续交付,是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。

比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

下图反应的是CI/CD的大概工作模式:

在这里插入图片描述

2.3 Jenkins实现原理

在这里插入图片描述

2.3.Jenkins部署环境

  1. jdk环境,Jenkinsjava语言开发的,因需要jdk环境。

  2. git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。

  3. maven客户端,因一般java程序是由maven工程,需要maven打包,当然也有其他打包方式,如:gradle

以上是自动化部署java程序jenkins需要的基本环境,请自己提前安装好,下面着重讲解Jenkins的安装部署配置。

3. Jenkins安装配置

3.1 Jenkins安装

  1. 点击链接jenkins.war下载安装包,如果出现如下情况:

在这里插入图片描述

可直接复制下载地址:https://ftp-nyc.osuosl.org/pub/jenkins/war-stable/latest/jenkins.war到浏览器的搜索框,按enter键即可,如下图所示:

在这里插入图片描述

  1. 在安装包根路径下,运行命令java -jar jenkins.war --httpPort=8080(linux环境、Windows环境都一样)

【注意事项】如果git自动触发时报403错误,启动加如是参数可以解决问题:nohup java -jar -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true /usr/local/jenkins/jenkins.war --httpPort=8080 &

  1. 打开浏览器进入链接http://localhost:8080

  2. 填写初始密码,激活系统

在这里插入图片描述

  1. 进入插件安装选择
  • 这里建议选择,推荐安装的插件,保证基本常用的功能可以使用。

在这里插入图片描述

  • 选择后,进入插件安装页面

在这里插入图片描述

  1. 设置初始用户和密码

在这里插入图片描述

  1. 进入系统,安装完成

在这里插入图片描述

【注意事项】:如果还是进入不了系统,需要稍等一下,或者刷新页面,如果还是进入不了,需要重新启动jenkinds服务器。

3.2 Jenkins配置

在这里插入图片描述

  1. Configure System (系统设置)

在系统设置这里,我们只需要设置最后面的一项,配置远程服务器地址,

即我们代码最终运行的服务器地址信息,就像我们之前手动部署时使用xshell登录Linux服务器一样,

当然这里是可以配置多台远程Linux服务器的,配置完成后点击保存即可,为后面我们配置自动化部署做准备,配置如下图:

在这里插入图片描述

  1. Configure Global Security (全局安全配置)
  • 配置用户相关的权限

在这里插入图片描述

  • 配置钩子程序(当用代码更新时通知)访问权限,避免报403错误

默认是勾选上了的,这里去掉勾选

在这里插入图片描述

  1. Global Tool Configuration (全局工具配置 )
  • 配置maven的全局settings路径

在这里插入图片描述

  • 配置jdk

在这里插入图片描述

  • 配置git

在这里插入图片描述

  • 配置maven的安装路径

在这里插入图片描述

  1. 配置必要插件

主要是检查如下这两个插件是否已安装

  • 插件1:Publish over SSH
  • 插件2:Deploy to container Plugin

在这里插入图片描述

到这里,我们配置一个自动化部署的的java程(springBoot+maven+gitHub),基本必要配置就差不多了,后面配置过程中如果需要在配置。

4. Jenkins自动化部署

springBoot+maven+gitHub项目为例子,来说明Jenkins自动化部署。

4.1.Jenkins项目创建和配置

大体步骤:General(基础配置) –> 源码管理 –> 构建触发器 –> 构建环境 –> 构建 –> 构建后操作。

  1. 创建一个工程

在这里插入图片描述

  1. General(基础配置)

仅需填写标准部分,其他可不填写。

在这里插入图片描述

  1. 源码管理

在这里插入图片描述

上图中点击“添加”按钮添加一组账号和密码

在这里插入图片描述

  1. 构建触发器

在这里插入图片描述

如上图:当前项目的回调地址为:http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2

只要在浏览器上访问改地址,该项目就会发起一次构建项目,即拉取代码打包部署操作。

在实际中,是由git服务器回调改地址,在后面讲git服务器配置时详细讲解。

【注意事项】如果你是学习测试,使用的是GitHub服务,要确保你的回调地址已经试外网映射过的,即往外网可以访问。

  1. 构建环境(无需配置)

  2. 构建

在这里插入图片描述

  1. 构建后操作

构建后操作的意思是,jar打包好后,要将jar发送到哪里去,发送后去和启动等。

这里需要提前在需要部署的服务器上配置好路径,写好启动和停止项目的脚本,并设置为可以执行的脚本。

其实就是我们平时在Linux上手动部署项目操作的脚本。

在这里插入图片描述

  • 案例中给出的stop.sh脚本如下:
#!/bin/bash
echo "Stop Procedure : demo2-0.0.1-SNAPSHOT.jar"
pid=`ps -ef |grep java|grep demo2-0.0.1-SNAPSHOT.jar|awk '{print $2}'`
echo 'old Procedure pid:'$pid
if [ -n "$pid" ]
then
kill -9 $pid
fi
  • 案例中给出的start.sh脚本如下:
#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_131
echo ${JAVA_HOME}
echo 'Start the program : demo2-0.0.1-SNAPSHOT.jar' 
chmod 777 /home/ldp/app/demo2-0.0.1-SNAPSHOT.jar
echo '-------Starting-------' 
cd /home/ldp/app/
nohup ${JAVA_HOME}/bin/java -jar demo2-0.0.1-SNAPSHOT.jar &
echo 'start success'

到此,Jenkins服务器配置完成,接下来我还有要配置Linux服务器和Git服务器。

4.2.Linux服务器配置

Liux服务上,上传上文中的两个脚本,用于启动和停止。

在这里插入图片描述

4.3.GitHub服务器配置

GitHub服务器上的指定项目里面配置上文中提到的回调地址

【注意事项】:为了保证回调地址网可以使用,

我已经将地址:http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2,通过花生壳进行外网映射为:http://zhishidi.imwork.net/job/jenkinsSpringBootDemo/build?token=token_demo2

所以,下面配置的是外网映射地址:

在这里插入图片描述

到这里所有配置搞定,只需修改代码,提交到git,然后访问程序看是否生效。

5. 测试Jenkins

  1. 测试代码

在这里插入图片描述

  1. 提交代码到git,触发构建

  2. GitHub服务器上去看,是否已经触发

在这里插入图片描述

  1. Jenkins的控制台查看是否,正在构建

从下图中可以看出,正在构建

在这里插入图片描述

  1. 查看当次构建的控制台日志

在这里插入图片描述
说明已经启动成功。

  1. 查看Linux服务器,是否上传代码

在这里插入图片描述

  1. Linux上使用命令jps,查看是否启动

在这里插入图片描述

  1. 浏览器上访问,看是否能用

在这里插入图片描述

说明,已经正常启动可以使用。

  1. 再次确认是否能自动化部署

修改代码,重新提交代码,循环1到8步查看。

如果测试结果是你预期的,那么自动化部署成功。

6. 总结

自动化部署Jenkins,作为一款工具,有着非常强大的功能。

上面只讲了生产上做Java自动化部署的一个主要流程,其他的功能,大家可以参看官方文档:Jenkins 用户手册

但是,本着学习是为了解决生产的原则,个人建议,用到Jenkins的什么功能就学什么就可以了,没必要把Jenkins的所有功能都学完在使用。

就如同我们使用word文档一样,并没有系统的他word文档学完后,在开始使用,而是用到什么功能就学习什么功能!

7. 参考文档

  1. 官网地址:Jenkins 用户手册

  2. 博客地址:https://blog.csdn.net/zhishidi/article/details/118082509

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99143.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!