1.什么是持续集成
持续集成 Continuous integration ,简称CI。随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成具有的特点:
- 它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
- 需要有专门的集成服务器来执行集成构建;
- 需要有代码托管工具支持,我们下一小节将介绍Git以及可视化界面Gogs的使用
持续集成的作用:
- 保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
- 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
2.Jenkins简介
Jenkins,原名Hudson,2011年改为现在的名字,它 是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/。
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性.
特点:
- 易安装:仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
- 易配置:提供友好的GUI配置界面;
- 变更支持:Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
- 支持永久链接:用户是通过web来访问Jenkins的,而这些web页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
- 集成E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程中,干别的事情);
- JUnit/TestNG测试报告:也就是用以图表等形式提供详细的测试报表功能;
- 支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
- 文件指纹信息:Jenkins会保存哪次集成构建产生了哪些jars文件,哪一次集成构建使用了哪个版本的jars文件等构建记录
- 支持第三方插件:使得 Jenkins 变得越来越强大
3.Jenkins安装
3.1 JDK安装
1) 将jdk-8u171-linux-x64.rpm上传至服务器
2) 执行安装命令
rpm -ivh jdk-8u171-linux-x64.rpm
RPM方式安装JDK,其根目录为:/usr/java/jdk1.8.0_171-amd64
3.2 Jenkins安装与启动
1) 下载jenkins
wget https://pkg.jenkins.io/redhat/jenkins-2.83-1.1.noarch.rpm
或将jenkins-2.83-1.1.noarch.rpm上传至服务器
2) 安装jenkins
rpm -ivh jenkins-2.83-1.1.noarch.rpm
注意:安装jenkins遇到问题:
stat: cannot stat ‘/var/cache/jenkins’: No such file or directory
stat: cannot stat ‘/var/log/jenkins’: No such file or directory
stat: cannot stat ‘/var/lib/jenkins’: No such file or directory
error: %pre(jenkins-2.83-1.1.noarch) scriptlet failed, exit status 1
Error in PREIN scriptlet in rpm package jenkins-2.83-1.1.noarch
Verifying : jenkins-2.83-1.1.noarch 1/1
Failed:
jenkins-2.83-1.1.noarch
问题的关键是PREIN scriptlet
,就是preinstall scriptlet,这是rpm在安装前执行的一段sh脚本,为安装创建相应的文件夹什么的。上面的三个No such file or directory显然就是,这三个文件夹没有被创建好。
我们看看preinstall出了什么问题,执行下面部分
yum install jenkins --downloadonly --downloaddir=/root
rpm --scripts -qp jenkins-2.83-1.1.noarch.rpm > jenkins.log
cat jenkins.log
我们找一下和那三个文件夹有关的部分
if [ "${owner:-jenkins}" != "${JENKINS_USER:-jenkins}" ] ; then
logger -t jenkins.installer "Previous owner of ${2} is different than configured JENKINS_USER... Doing a recursive chown of ${2} "
chown -R ${JENKINS_USER:-jenkins} "$2"
elif [ "${JENKINS_USER:-jenkins}" != "jenkins" ] ; then
# User has changed ownership of files and JENKINS_USER, chown only the folder
logger -t jenkins.installer "Configured JENKINS_USER is different than default... Doing a non recursive chown of ${2} "
chown ${JENKINS_USER:-jenkins} "$2"
else
logger -t jenkins.installer "No chown needed for ${2} "
fi
这问题就很明白了,结合前面的stat报错,明确了就是这段报错误。这段的意思是,如果/etc/sysconfig/jenkins
存在,执行下面一系列操作,应该是为了重复安装写的。
一看这个/etc/sysconfig/jenkins
,真的有,是昨天看教程的时候看漏了一步给加上去的...这就很搞笑了
此问题参考https://juejin.im/post/5cd4f276f265da0374189718 进行解决。
3) 配置jenkins
vi /etc/sysconfig/jenkins
修改用户和端口
JENKINS_USER="root"
JENKINS_PORT="8888"
4) 启动服务
systemctl start jenkins
5) 访问链接 http://192.168.184.135:8888
从/var/lib/jenkins/secrets/initialAdminPassword中获取初始密码串
6) 安装插件
7)新建用户
4.jenkins插件安装
我们以安装maven插件为例,演示插件的安装
1)点击左侧的“系统管理”菜单 ,然后点击
2)选择“可选插件”选项卡,搜索maven,在列表中选择Maven Integration ,点击“直接安装”按钮
看到如下图时,表示已经完成
5.全局工具配置
5.1 安装Maven与本地仓库
1)将Maven压缩包上传至服务器
2)解压
tar zxvf apache-maven-3.5.4-bin.tar.gz
3)移动目录
mv apache-maven-3.5.4 /usr/local/maven
4)编辑setting.xml配置文件 vi /usr/local/maven/conf/settings.xml ,配置本地仓库目录,内容如下
<localRepository>/usr/local/repository</localRepository>
5)将开发环境的本地仓库上传至服务器(虚拟机)并移动到/usr/local/repository
mv reponsitory_boot /usr/local/repository
执行此步是为了以后在打包的时候不必重新下载,缩短打包的时间。
5.2 全局工具配置
选择系统管理,全局工具配置
1)JDK配置
设置javahome为 /usr/java/jdk1.8.0_171-amd64
2)Git配置 (本地已经安装了Git软件)
需要在linux服务器上安装git, yum install -y git
3)Maven配置
安装过程遇到的问题:
1.升级后报错,配置文件不正确。参考https://blog.youkuaiyun.com/weixin_30535167/article/details/95145747
2.安装后可能会显示jenkins版本比较低,造成很多插件安装失败。这是我们可以从官网下载jenkins.war包。替换服务器上对应位置的war,然后重启即可。
可以从jenkins—>系统管理—>系统信息—>executable-war处显示的就是安装后jenkins.war包的位置,删除后上传新的即可。然后重启。
jenkins重启命令:
jenkins启动
#service jenkins start
重启
#service jenkins restart
停止
#service jenkins stop
然后从jenkins页面右下角就可以看到jenkins版本了。