8.2 总结(Jenkins总结)
1为什么使用jenkins
在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;
或者前后端分离后,经常会修改接口,然后重新部署;
这些情况都会涉及到频繁的打包部署;
手动打包常规步骤:
1.提交代码
2.问一下同组小伙伴有没有要提交的代码
3.拉取代码并打包(war包,或者jar包)
4.上传到Linux服务器
5.查看当前程序是否在运行
6.关闭当前程序
7.启动新的jar包
8.观察日志看是否启动成功
9.如果有同事说,自己还有代码没有提交......再次重复1到8的步骤!!!!!(一上午没了)
那么,有一种工具能够实现,将代码提交到git后就自动打包部署勒,答案是肯定的:Jenkins
当然除了Jenkins以外,也还有其他的工具可以实现自动化部署,如Hudson等
只是Jenkins相对来说,使用得更广泛。
2.Jenkins服务器搭建及基本配置
2.1.简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
2.2.Jenkins自动化部署实现原理
转存失败重新上传取消
v正在上传…重新上传取消
2.3Jenkins的目标
Jenkins的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。
CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。
特别是它具有以下优点:
- l Jenkins一切配置都可以在web界面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。
- l 支持Maven的模块(Module),Jenkins对Maven做了优化,因此它能自动识别Module,每个Module可以配置成一个job。相当灵活。
- l 测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他CI,这几乎是件不可能完成的任务。
- l 构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载
2.4Jenkins的主要特点
- * 容易安装,只需要执行Java -jar jenkins.war, 或者直接部署到一个servlet container中,例如tomcat。不需要安装,不需要数据库的支持。
- * 容易配置,jenkins可以完全地通过友好的web GUI来配置,且配置页面支持配置项的错误检查和很好的在线帮助。不需要手动地编辑xml的配置文件,但是jenkins也支持手动修改xml配置文件。
- * 项目源码修改的检测,jenkins能够从项目的Subversion/CVS生成最近修改的集合列表,且改方式非常有效,不会增加Subversion/CVS Repository的负载。
- * 可读的永久的链接生成,jenkins对于大部分pages都生成清楚的可读的永久的链接,例如”latest build”/”latest successful build”,因此可以容易地在其他的地方引用jenkins的生成的pages。
- * RSS/EMail/IM集成,可以通过RSS,EMail或IM来实时地监视build的失败。
- * Build完成后仍然可以tag,支持在build完成后tag或重tag。
- * Junit/TestNG 测试报告,能够很好地显示各种测试的报告,且可以生成失败的趋向图。
- * 分布式build,jenkins能够分发build/test的负载到多台机器,能够更好地利用硬件资源,提高build的时间。
- * 文件标识,jenkins可以标识build产生的文件,例如jars。
- * 插件支持,jenkins可以通过第三方的插件来扩展。
- * 跨平台,支持几乎所有的平台,例如Windows,Ubuntu/Debian,Red Hat/Fedora/CentOS,Mac OS X,openSUSE,FreeBSD,OpenBSD,Solaris/OpenIndiana.Gentoo。
2.5Jenkins部署环境
基本环境:
1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。
2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。
3.maven客户端,因一般java程序是由maven工程,需要maven打包,当然也有其他打包方式,如:gradle
以上是自动化部署java程序jenkins需要的基本环境,请自己提前安装好,下面着重讲解Jenkins的安装部署配置。
2.4.Jenkins安装
- yum源安装
- Tomcat 安装
- docker镜像安装
2.6tomcat方式安装
Yum -y install tomcat
转存失败重新上传取消
Systemctl start tomcat
Systemctl enable tomcat
转存失败重新上传取消
1下载jenkins.war
转存失败重新上传取消
转存失败重新上传取消
Systemctl restart tomcat
Systemctl stop tomcat 会看见jenkins的文件
转存失败重新上传取消
2.5 下载安装包解压安装(用Java去运行jenkins)
下载 jdk 的tar包到指定的目录下、命令如下:
wget https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz
或者手动从Oracle官网下载后上传到指定的目录下也行
注意 jdk11.0.2 jenkins版本:Jenkins ver. 2.204.5 tomcat版本:9.0.27 最新版本的jenkins和tomcat10版本启动有问题
2.5.1 下载Java11.0.2
转存失败重新上传取消
2.5.2 解压到/usr/local/jdk
tar -zxvf jdk-11.0.12_linux-x64_bin.tar.gz
转存失败重新上传取消
2.5.3 配置环境变量
修改环境配置文件
vim /etc/profile
根据需要的Java版本把下面代码加入到配置文件内容中
Java11环境变量配置
JAVA_HOME=/devtools/java/java11/jdk-11.0.12(解压jdk的目录)
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib
export JAVA_HOME CLASSPATH PATH
Souce /etc/profile
2.5.4用java去运行jenkins
nohup /usr/local/jdk/jdk-11.0.12/bin/java -jar jenkins.war > log.file 2>&1 &
转存失败重新上传取消
第二天重启时
ps -ef | grep java
转存失败重新上传取消
Pkill -9 Java kill -l 9 强制删除Java进程
转存失败重新上传取消
再次重启 Tomcat systemctl restart tomcat 这时会在后台重新启动 nohup /usr/local/jdk/jdk-11.0.12/bin/java -jar jenkins.war > log.file 2>&1 &
错误日志在、usr/share/tomcat/webapp/nohup.out
转存失败重新上传取消
其他日志在/usr/share/tomcat/webapp/log.file
转存失败重新上传取消
注意端口号 Gerrit改为8081
转存失败重新上传取消
ngnix改为81
转存失败重新上传取消
jenkins使用8080
3jenkins使用
3.1访问http://your_ip:8080便可以看到下面这个页面:
转存失败重新上传取消
cat /var/jenkins_home/secrets/initialAdminPassword 拿到密码
这里我们选择安装推荐的插件:
转存失败重新上传取消
接下来便可以看到 Jenkins 在自动帮我们安装一些插件,包括常用的 Git
、Pipeline
等:
转存失败重新上传取消
然后需要创建第一个用户:
转存失败重新上传取消
接下来就开始我们的 CI/CD 之旅吧!
转存失败重新上传取消
转存失败重新上传取消
创建一个项目
转存失败重新上传取消
测试 添加一个 一个执行命令
转存失败重新上传取消
点击built now
转存失败重新上传取消
控制台输出
转存失败重新上传取消
测试 输出hello word
转存失败重新上传取消
转存失败重新上传取消
可以看到绿色对号 表明成功创建
转存失败重新上传取消
查看虚拟机 创建、usr/caomi.txt
转存失败重新上传取消
另一个测试 输出 hello word 到/usr/caomi.txt
转存失败重新上传取消
接下来创建一个节点 以192.168.56.106 为例子
转存失败重新上传取消
配置节点的信息
转存失败重新上传取消
用root密码去连接
转存失败重新上传取消
完成后
转存失败重新上传取消
上线此节点启动代理
转存失败重新上传取消
把节点加入到Iterm 中执行测试 创建testing2文件
转存失败重新上传取消
测试
转存失败重新上传取消
buid now
在虚拟机的、/jenkins/test/workspace/e 发现testing2 成功success!
转存失败重新上传取消
如何去下载插件呢
转存失败重新上传取消
转存失败重新上传取消
这里可以更新插件下载插件
转存失败重新上传取消
问题如何在挂载两个节点 并且去执行脚本 如下
分别为两个节点打上相同的标签 如 slave-35-label
转存失败重新上传取消
转存失败重新上传取消
注意Java 路径/usr/java/jdk-11.0.12/bin/java/
转存失败重新上传取消
我将三台机器同时加入到一个节点 那么执行命令会在那个机器执行呢
转存失败重新上传取消
随机选择一个虚拟机 执行命令
成功 success
转存失败重新上传取消
另一个测试 当然是hello word 啦
转存失败重新上传取消
测试输出成功 并且创建了a.txt 文件
转存失败重新上传取消