Jenkins持续集成工具
2017-05-02 by dongnan
简介
Jenkins
可以帮助你构建一个自动化的持续集成环境,你可以使用它来自动化编译、打包、分发部署你的应用,
它兼容 ant、maven、gradle
等多种第三方构建工具,同时跟 svn、git
能无缝集成。
目标
- 复盘
jenkins
部署,初始化,使用过程。 - 为
CI
持续集成做好准备工作。
部署
准备工作
系统环境
head /etc/centos-release
CentOS Linux release 7.3.1611 (Core)
Java 环境
# 安装jdk
yum install java java-1.8.0-openjdk-devel
# 环境变量
tail -n1 /etc/profile
export JAVA_HOME='/usr/lib/jvm/jre'
maven 环境
- 请参考这里。
tomcat 环境
- 请参考这里。
部署 jenkins
下载软件包
wget -c http://mirrors.jenkins.io/war-stable/latest/jenkins.war
cp jenkins.war /usr/local/tomcat/webapps/
tomcat 自动解包
file /usr/local/tomcat/webapps/jen*
/usr/local/tomcat/webapps/jenkins: directory
/usr/local/tomcat/webapps/jenkins.war: Zip archive data, at least v2.0 to extract
jenkins 初始密码
cat /root/.jenkins/secrets/initialAdminPassword
e2b41e0bc162482b81c4f24848e11xXx
初始化 jenkins
- 浏览器访问
http://your_server_ip:8080/jenkins
开始初始化安装。 - 如果执行默认的安装,
Jenkins
会自动帮你配置Maven、git
等常用插件。 - 并创建一个
admin
用户,完成安装。
设置环境变量
tail -n1 /etc/profile
export JENKINS_HOME='/root/.jenkins'
jenkins 目录结构
tree -d -L 1 /root/.jenkins/
/usr/share/tomcat/.jenkins
├── cache
├── fingerprints
├── jobs
├── logs
├── nodes
├── plugins
├── secrets
├── updates
├── userContent
├── users
├── workflow-libs
└── workspace
12 directories
验证
部署完成的,jenkins 截图:
使用 jenkins
初始配置
在 jenkins
中,一切功能即插件,下面以安装语言插件为例,其它插件安装方法类似。
更改语言
# 安装插件
manage jenkins -> manage plugins -> avaiable -> filter locale ;
勾选 install -> download now and install after restart -> 等待安装完毕 -> 勾选 Restart Jenkins whten install ...
# 设置中文
manage jenkins -> configure system -> Locale-> 输入 zh_CN -> 勾选忽略浏览器.... -> save ,下图是调整后的中文首页;
安装 maven 插件
maven
插件用于创建 maven job
,如果你的是 java
项目使用 maven
进行项目构建,那么相应的 jenkins
需要 maven
插件支持。
安装方式与上面相同,不再重复,图片是安装过程截图;
配置第三方工具
这里的第三方工具是指,git/maven/svn/jdk
等用于辅助 jenkins
的工具,例如:maven
。
manage jenkins -> global tool configuration -> maven -> 按照实际情况配置maven 如下图:
构建第一个Job
以一个典型的 java
项目为例,使用 git
管理源码,使用 maven
编译程序,使用 tomcat
容器运行 war
程序包。
而下面就是使用 jenkins
自动完成,git
代码检查,以及使用 maven
构建 war
包。
创建 maven 项目
jenkins-create-maven-job
填写项目名称, 单击ok ,依次填入以下信息:
项目基本信息
- 项目的简单信息,除了项目名称,其它可以不需要;
源码管理
- 这个没什么可说的,这里就是 git 项目地址(svn),如果 使用的是分支,在 branch 填写分支;
构建触发器
这里,推荐使用 poll scm
,例如 每5分钟检查一次 git仓库,如果代码有变化,则触发编译,其它选项可以参考下面的;
-
Build whenever a SNAPSHOT dependency is built 这个触发器是当
pom.xml
中的发生了变化时,就会触发一次构建。这个选项在持续集成时非常有用。 -
Build after other projects are built 这个触发器是在其它的项目(上游项目)构建完成以后执行的。例如一个测试项目,可以在测试的目标项目构建完成以后开始构建。
-
Build periodically 周期性的构建任务。Jenkins实现这个功能时,采用的是Quartz框架,所以可以在这里配置
Corn
表达式。(参考Linux Crontab) -
Poll SCM 这个构建方式,也需要配置一个
Cron
表达式。它的执行过程是这样的:(参考Linux Crontab) 根据Cron表达式周期性的询问SCM Server,如果发生了改变,才会触发构建动作。所以这个方式要比周期性构建更好一些。
构建环境
- 保持默认即可。
pre setps (编译之前的步骤)
- 保持默认即可。
build (编译)
这个是 maven
构建时需要的参数, pom.xml
为 maven默认的选项。
图片中,clean package
这是 maven 先进行 clean
清理,再进行 package
打包。
Post Steps (提交步骤)
- 这个是 build 完成后,额外的步骤,有
shell
脚本等多种选项,以docker
打包镜像为例:
构建设置
- 勾选 邮件通知。
构建后操作。
执行构建job
配置完毕,点击立即构建,就开始了项目构建过程了。
构建状态
- 图标:表示当前job的状态,不同的颜色表示不同的状态:
- 蓝色:最近一次构建是成功的。
- 红色:最近一次构建是失败的。
- 黄色:最近一次构建是成功的,但是有一些测试用例是失败的。
- 灰色:job被禁用或者还没有开始构建。
- 图标处于闪烁状态,表示正在构建。
扩展功能
jenkins 邮件通知功能
图文并茂,请参考这篇文章。jenkins使用Email Extension Plugin插件配置邮件通知
jenkins 添加用户权限
图文并茂,请参考这篇文章。jenkins配置记录(1)--添加用户权限