1、简介
持续集成(Continuous Integration,CI|CD)是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础,持续集成意义如下:
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
Jenkins是基于Java开发的一种持续集成工具,官网地址为:http://mirrors.jenkins-ci.org/ 。Jenkins持续集成组件如下:
自动构建过程JOB,JOB的功能主要是:获取SVN/GIT源码、自动编译、自动打包、部署分发和自动测试等;
源代码存储库,开发编写代码需上传至SVN、GIT代码库中,供Jenkins来获取;
Jenkins持续集成服务器,用于部署Jenkins UI、存放JOB工程、各种插件、编译打包的数据等。
2、部署
第一步:安装JDK及Tomcat
第二步:部署Jenkins
# 官网下载war包,或者使用清华大学源 https://mirror.tuna.tsinghua.edu.cn/jenkins/war/2.175/jenkins.war
[root@localhost ~]# cd /usr/local/apache-tomcat-8.0.39/webapps/
[root@localhost webapps]# rm -rf *
[root@localhost webapps]# mkdir -p /usr/local/apache-tomcat-8.0.39/webapps/ROOT/
[root@localhost webapps]# cd ROOT
[root@localhost ROOT]# wget http://updates.jenkins-ci.org/download/war/2.175/jenkins.war
# 解压war包
[root@localhost ROOT]# /usr/java/jdk1.8.0_131/bin/jar xf jenkins.war
[root@localhost ROOT]# rm -rf jenkins.war
# 启动tomcat
[root@localhost ROOT]# /usr/local/apache-tomcat-8.0.39/bin/startup.sh
第三步:页面配置
浏览器访问 IP:PORT 初始化页,由于机器配置、网络等因素,该页面初始化时间可能较长,需耐心等待。
cat /root/.jenkins/secrets/initialAdminPassword 得到密码
安装插件
安装推荐的插件
选择插件来安装
注意:若出现类似以下问题,可手动下载相应的插件https://updates.jenkins-ci.org/download/plugins/cloudbees-folder/,然后放入
/usr/local/apache-tomcat-8.0.39/webapps/ROOT/WEB-INF/detached-plugins/ 文件夹下,重启Tomcat即可。
创建用户
实例配置
配置完成
登录成功
3、Jenkins 平台设置
点击 系统管理–>全局工具配置,配置全局的JDK和MAVEN
配置JDK
配置maven
4、JOB 工程创建与配置
配置SVN
参数详解:
Respository url 配置SVN仓库地址;
Local module directory 存储SVN源码的路径;
Ignore externals option 忽略额外参数;
Check-out Strategy 代码检出策略;
Repository browser 仓库浏览器,默认Auto;
add more locations 源码管理,允许下载多个地址的代码;
Repository depth 获取SVN源码的目录深度,默认为infinity;
empty: 不检出项目的任何文件,files: 所有文件,immediates:目录第一级,infinity:整个目录所有文件。
配置maven
参数详解:
mvn clean 打包清理(删除target目录内容);
mvn compile 编译项目;
mvn package 打包发布;
mvn package -Dmaven.test.skip=ture 打包时跳过测试。
通过以上步骤的配置步骤,即完成了JOB工程的创建。运行构建,Jenkins将从SVN仓库获取SVN代码,然后通过Maven编译、打包,并最终生成可以使用的war包。
编译打包成功后执行shell进行部署、启动服务
日志输出
归档文件,可通过http://ip:port/job/www.cluo.net/lastSuccessfulBuild/artifact/target/*.war进行文件下载
5、Jenkins 多实例
单台Jenkins服务器可以满足日常自动部署需求,如果每天更新发布多个WEB网站,Jenkins需要同时处理很多的任务,单台Jenkins压力就会很大,任务处理速度较慢。基于Jenkins分布式,也就是多Slave方式可以缓解Jenkins服务器的压力。
Jenkins多Slave原理是将原本在Jenkins Master端的构建项目分配给Slave端去执行,Jenkins Master分配任务时,Jenkins Master端通过SSH远程Slave,在Slave端启动slave.jar程序,通过Slave.jar实现对网站工程的构建编译以及自动部署。步骤如下:
(1) 在Slave服务器,创建远程执行Jenkins任务的用户,名称为jenkins,Jenkins工作目录/home/Jenkins,Jenkins Master免秘钥登录Slave服务器或者通过用户名和密码登录Slave;
(2) Slave服务器安装JAVA JDK版本,并将其软件路径加入系统环境变量。
(3) Jenkins master端平台进行管理节点配置。
配置流程:
系统管理–> 节点管理–>新建节点
节点存在问题
点击节点名称 slave001
点击启动代理
至此,配置完成!
新建任务的时候,勾选“在必要的时候并发构建”,当多个任务排队执行时slave节点就会参与执行。