Jenkins(CI/CD)

CI/CD:

(持续集成/持续发布) :开发(git) -->git主库-->jenkins(git+jdk+tomcat+maven打包+测试)-->发布到tomcat服务器 

CI:英文全称:Continuous  Integration
    中文全称:持续集成工具
    持续集成是一种软件开发实践。在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以多次。每次集成会经过自动构建(包括自动测试)的检验,以尽快发现集成错误。

CD:英文全称:(CONTINUOUS DELIVERY)

中文全称:持续交付

持续交付就是讲我们的应用发布出去的过程。这个过程可以确保我们尽可能快的实现交付。这就意味着除了自动化测试,我们还需要有自动化的发布流,以及通过一个按键就可以随时随地实现应用的部署上线。

通过持续交付,您可以决定每天,每周,每两周发布一次,这完全可以根据自己的业务进行设置。

但是,如果您真的希望体验持续交付的优势,就需要先进行小批量发布,尽快部署到生产线,以便在出现问题时方便进行故障排除。

持续部署: 英文名称 CONTINUOUS DEPLOYMENT

如果我们想更加深入一步的话,就是持续部署了。通过这个方式,任何修改通过了所有已有的工作流就会直接和客户见面。没有人为干预(没有一键部署按钮),只有当一个修改在工作流中构建失败才能阻止它部署到产品线。

持续部署是一个很优秀的方式,可以加速与客户的反馈循环,但是会给团队带来压力,因为不再有“发布日”了。开发人员可以专注于构建软件,他们看到他们的修改在他们完成工作后几分钟就上线了。基本上,当开发人员在主分支中合并一个提交时,这个分支将被构建、测试,如果一切顺利,则部署到生产环境中。

Jenkins:

Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
意思是我们通过配置,将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到web容器中。

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。jenkins构建工具有Maven、Ant、Gradle。

Jenkins目标:是监控软件开发流程,快速显示问题,提高开发效率,过程控制。

Jenkins特性:

Jenkins工作流程图:

1. 开发者检入代码到源代码仓库。
 2. CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
 3. CI系统会在对应的工作区内执行构建过程。
 4. (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
 5. (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。
 6. CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
 Jenkins就是这么一个CI系统。之前叫做Hudson。

JENKINS实战实例:

环境

github

192.168.10.5 部署jenkins        192.168.10.9充当tomcat网站的服务器

部署git

#####注:以下所用安装包可以去官网自行下载#########

安装依赖包: #yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y

下载git::#wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz

安装git:

解压编译git

 #tar xf git-2.9.5.tar.gz    
 #cd   git-2.9.5/
# make prefix=/usr/local/git all             #编译源码包

#make prefix=/usr/local/git instal                #源码安装

修改变量#vim /etc/bashrc     #source /etc/bashrc     后测试git版本是否有误 # git --version

jdk环境部署

安装依赖包:#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y

下载jdk包:#wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz

修改环境变量:

#vim /etc/bashrc

#追加以下字段
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin

# source  /etc/bashrc

测试jdk:#java -vison                #如已安装请卸载

部署maven:

下载解压maven:

# wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
# tar xvzf apache-maven-3.5.3-bin.tar.gz -C /usr/local/
# mv /usr/local/apache-maven-3.5.3/ /usr/local/maven

修改环境变量:

#vim /etc/bashrc

export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export JAVA_HOME=/usr/local/jdk
export PATH

# source  /etc/bashrc

测试maven

部署tomcat:

官网下载解压:

apache-tomcat-9.0.1.tar.gz 
# tar xvzf apache-tomcat-9.0.1.tar.gz  -C /usr/local/
# mv /usr/local/apache-tomcat-9.0.1/ /usr/local/tomcat

定义tomcat所需要的变量

# vim /etc/profile    
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
# source /etc/profile

#/usr/local/tomcat/bin/startup.sh                #启动tomcat

测试tomcat:http://192.168.10.5:8080

部署Jenkins:

官网下载最新Jenkins

部署jenkins.war到tomcat下:
    # cp jenkins.war  /usr/local/tomcat/webapps/
    注释
        重置jenkins
            关闭tomcat /usr/local/tomcat/bin/shutdown.sh
            rm -rf /usr/local/tomcat/webapp/jenkins*
            rm -rf ~/.jenkins*
            启动tomcat即可访问jenkins

启动tomcat: 注意启动tomcat会自动解压webapps下的war包

# /usr/local/tomcat/bin/startup.sh 
    Using CATALINA_BASE:    /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:    /usr/local/jdk
    Using CLASSPATH:   /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Tomcat started.

登录Jenkins

http://127.0.0.1:8080/jenkins        #显示Jenkins的web界面
    

将文件密码输入粘贴到上述图片中

# cat /root/.jenkins/secrets/initialAdminPassword                #密码各不相同

然后点击continue

选择suggested的插件进行下载,等待安装完成

#创建登录用户密码

#安装完成

#一切准备就绪,来到欢迎界面(老头)

管理插件:

配置的是 git + maven 方式的自动化部署, 所以需要git和maven的相关插件,ssh用于机器间的文件传送.

插件:Deploy to container的作用是支持自动化将代码部署到tomcat容器

安装步骤:系统管理-->插件管理-->可选插件-->过滤Deploy to container-->勾选,点击下边的按钮:直接安装

例图:

插件:Maven Integration的作用 jenkins 利用maven编译,打包,所需插件。

步骤同上,所有插件安装同第一个插件相同。

检查错误配置:

在web界面中点击“系统管理”

1.如果有“编码问题”错误,在Tomcat–>conf–>server.xml文件中修改即可

#######

[root@localhost ~]# head -1 /usr/local/tomcat/conf/server.xml 

<?xml version="1.0" encoding="UTF-8"?>

如果弹出“反向代理错误”,请忽略。

Jenkins系统配置:(图示)

系统管理->(全局工具配置)Global Tool Configuration,配置jdk,git,maven的根目录

1.找到全局配置工具

2.配置JDK目录(不要点击“自动安装”)

3.配置git目录

4.配置maven

5.确认上述步骤设置无误并保存

SSH配置:

(192.168.10.5)jinkens服务器上的maven将开发产生的*.war包。通过SSH自动推送到远程tomcat 服务器上(192.168.10.9)。需要手工配置ssh key,配合自动化推送。

1.jenkins服务器准备秘钥
# ssh-keygen         #回车一直
# ssh-copy-id -i 192.168.10.9        
#ssh 192.168.10.9        # 登录不需要密码即可

2.准备私密密钥,粘贴到"Key"中

 cat ~/.ssh/id_rsa        #会出现很多行复制就行,粘贴到下图“key”中

新建任务:

创建名称->选择maven项目->确定

1.公有仓库(git)(如果是私有仓库,需要建立credentials身份认证)

2.选择版本控制器和仓库地址

3.设置构建(编译打包) 

4.构建后操作 


    在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工件 
    点击-》增加构建后操作


 name:        ssh server 因为之前的配置会默认出现tomcat业务服务器的名字


 source file:        target/*.war         构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建        #  ls /root/.jenkins/jobs/testjob1/builds/target/*.war


Remove prefix:        自动删除路径前缀(不需要创建路径前缀)


Remote directory:         tomcat业务服务器上的路径,需要提前在192.168.10.9上创建该目录。
用来存放网站源代码。(需要后台创建)# mkdir -p /jenkins/war


Exec command:        tomcat(192.168.10.9)在接收到源码之后的自定义动作。
比如:将源码拷贝到网站的主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch)(需要后台创建)
#mkdir  /jenkins/sh
# cat  /jenkins/sh/deploy.sh
cp -r /jenkins/war/*.war   /jenkins
touch /tmp/aaaaaa.txt
#chmod +x /jenkins/sh/deploy.sh
最后保存。

构建任务:

1.构建图示步骤

2.构建输出结果

排错:

过程中所遇到的问题解决方案:

1.插件下载后继续下面初始化完成点开始的时候跳到一个空白页面

解决:点击地址栏左边的后退按钮即可进入正常页面

跟着提示错误安装相对应的插件。

2.脚本权限错误

解决:修改构建后的脚本权限

3.jenkins访问一直处于等待状态

解决:查看Tomcat日志,找到错误信息,按要求进行修改

 只要在$CATALINA_BASE/conf/context.xml里增加资源最大可缓存的大小就行了,大小可按自己的需要定义  
    # vim /usr/local/tomcat/conf/context.xml 
    <Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <Resources
        cachingAllowed="true"
        cacheMaxSize="100000"
    />
</Context>
最后重起tomcat,问题解决!

操作中所出现问题不一一列举,希望各位可以自己上网自己一步一步解决,这样可以极大的加深印象以及学习效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好好学技术oH

你的鼓励是一起学习的动力何阶梯

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值