一.jenkins概念
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和邮件提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
二.持续集成的实践(开发-提交-编译-测试-发布)
持续集成:是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
频繁检出代码
频繁提交代码
减少分支,回归主干
使用自动化构建
提交自测
及时反馈部署构建通知
持续交付:在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
持续部署:是指当交付的代码通过评审之后,自动部署到生产环境中。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。
三. centos下的Jenkins的安装
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum -y install jenkins
java -jar jenkins.war
nohup java -jar jenkins.war --ajp13Port=-1 --httpPort=8083
安装并启动tomcat服务器,将jenkins.war放入tomcat/webapps的文件中运行tomcat服务器
四.全局工具环境配置
git环境配置:安装git ,配置环境变量/usr/local/git/bin/git
jdk环境变量配置:安装jdk,配置环境变量/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
maven环境变量配置:安装maven,配置环境变量/usr/share/apache-maven
基本的邮件服务配置:
五.自动化部署定时任务
(1) Build periodically
无论SVN中数据有无变化,均执行定时化的构建任务
(2) Poll SCM
定时轮询SVN,查看SVN中是否有数据变化,如果有变化,则执行构建
1. 定时构建语法:
第一个*表示分钟,取值0~59
第二个*表示小时,取值0~23
第三个*表示一个月的第几天,取值1~31
第四个*表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
2. 常用定时构建举例:
每隔5分钟构建一次 H/5 * * * *
每两小时构建一次 H H/2 * * *
每天中午下班前定时构建一次 0 12 * * *
每天下午下班前定时构建一次 0 18 * * *
六.Jenkins自动化部署面临的问题
1.项目业务的结构复杂
大型的spring cloud微服务项目,结构过于庞大,自动化部署的话会占用jenkins服务器过多的资源,而且自动化构建花费的时间过长,耗费时间。
建议:按公司业务服务或者功能模块将大型spring cloud项目拆分为几个项目,方便开发和持续集成。
2.生产环境服务器特殊
jenkins集成服务器在内网服务器或公网服务器,部署环境在不对外暴露安全规则的内网服务器或没有备案号的国外服务器上时,持续构建有一定的困难。
建议:配置服务器私钥或者开放部分服务器白名单或安全组规则。