Jenkins详细教程
- Jenkins简述
- Jenkins是什么
- Jenkins能干什么
- Jenkins入门配置
- 准备工作
- windows平台下安装Jenkins
- 注意事项
- 配置
- 权限配置
- 全局环境搭建
- 插件安装
- 联网情况下安装
- 断网情况下安装
- 创建基本功能项目
- 创建项目
- 基本配置
- 迁出代码设置
- 代码编译
- 文件迁移、发布
- Jenkins进阶配置
- 插件安装
- 联网情况下安装
- 插件使用
- 远程触发Jenkins Job
- 提前执行编译等行为
- http请求
- 远程部署至tomcat
Jenkins简述
1.Jenkins是什么?
Jenkins是一款基于Java开发的持续集成工具,它是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能, 主要可用于持续、自动地构建/测试软件项目,如CruiseControl与DamageControl;监控一些定时执行的任务。
Jenkins为用户提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更重要的业务逻辑实现上。同时Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性
2.Jenkins能干什么?
Jenkins的主要功能是:
- 持续、自动地构建/测试软件项目
- 监控一些定时执行的任务
但不局限于这两点,例如Jenkins还能远程部署、异常处理监控等。
Jenkins入门配置
1. 准备工作
Jenkins是用Java开发的项目,这使得它拥有良好的跨平台性,但是出于篇幅的考虑,这里只介绍最为简单的windows平台下安装的流程。 需求:
svn(Jenkins已集成相关功能)- java(略过不提)
- maven(略过不提)
- Jenkins
这里简单提一下,Jenkins目前版本中已集成了svn,所以安装Jenkins的平台没有安装svn也是可以迁出代码的(此为本人实测,但不确认所有版本都有,测试版本为十二周更新的稳定版本
Long-term Support (LTS)
)
2. windows平台下安装Jenkins
- 下载Jenkins
- Jenkins官网下载页:https://jenkins.io/download/
- 这里推荐下载
Long-term Support (LTS)
(约十二周更新的稳定版本)
- 解压、安装
- 在.msi安装完成后,会弹出该服务首页,即
http://localhost:8080
(默认8080端口) - 在安装目录下找到
.\secrets\initialAdminPassword
(无后缀),使用文本编辑器打开(密码一般是32位数字+字母混合)复制到页面进行用户登录 - 登录成功后,选择安装推荐插件,等待安装完成
- 设置管理员信息,可跳过,跳过则继续使用
initialAdminPassword
中的密码
注意事项:
- 默认端口冲突:
- 起因:Jenkins安装成功后,Jenkins项目在会以服务的形式在后台运行,但是默认端口容易与其他项目冲突,此时Jenkins将无法启动,并无任何提示,表现为安装成功后不弹出Jenkins主页。
- 解决方式:
- 在Jenkins的安装目录下找到
.\jenkins.xml
- 在第41行找到
--httpPort=8080
,修改为不冲突,打开/重启 服务即可
- 在Jenkins的安装目录下找到
3.配置
- 权限配置:
- 匿名访问权限
当需要使用批处理或其他方式启动Jenkins构建任务时,必须先在系统管理
-->全局安全配置
-->选择登录用户可以做任何事
-->勾选Allow anonymous read access
此时便支持匿名构建任务
这种方式存在风险,但是可以在脚本或其他方式远程触发Jenkins Job项目构建时省去认证环节,这里我不推荐开启匿名构建,后面会介绍插件来远程认证并触发Job构建
- 匿名访问权限
-
全局环境搭建
-
JDK配置
Jenkins
-->系统管理
-->全局工具配置
-->JDK
-->新增JDK
- 别名:别名尽量注明版本号,方便识别
- JAVA_HOME:Jdk配置参数,填写jdk根目录位置(如果已存在JDK,不要勾选自动安装)
-
Maven配置
Jenkins
-->系统管理
-->全局工具配置
-->Maven
-->新增Maven
- Name:识别,注明版本号
- MAVEN_HOME:Maven配置参数,填写Maven根目录位置(如果已存在Maven,不要勾选自动安装)
-
4.插件安装
联网情况下安装
Jenkins
-->系统管理
--->管理插件
进入插件下载、安装界面- 搜索
Subversion Plug-in
实现svn的功能 - 选择下载待重启后安装或直接安装
断网情况下安装
- 下载插件
http://updates.jenkins-ci.org/download/plugins
http://mirror.xmission.com/jenkins/plugins/
https://wiki.jenkins.io/display/JENKINS/Plugins Jenkins
-->系统管理
-->管理插件
-->高级
-->选择插件并上传- 如果因为缺少依赖包安装失败,在失败信息中找到依赖包,重复1、2步骤提前安装依赖包
- 重启服务生效
在存在已安装好的Jenkins时,复制根目录下plugins文件夹到新安装的Jenkins根目录下覆盖,可以直接安装上个Jenkins的插件
5.创建基本功能项目
就简单的持续集成一个项目,Jenkins集成了svn和windows batch等功能,所以基本简单迁出代码、编译、测试、发布这个流程基本上不需要插件的帮助。
流程:
- 创建项目:新建项目,选择
Jenkins
-->新建项目
-->命名
-->构建一个自由风格的软件项目
-->确认
- 基本配置:
- 参数化构建过程:接收参数,并用于构建
- 重试次数:Jenkins从代码库迁出代码失败时,会重试的次数(默认间隔十秒重试一次)
- 使用自定义的工作空间:设置工作空间位置
- 迁出代码设置
- Repository URL:填项目的svn地址
- Credentials:选择svn的账号与密码,如果没有,选择
Add
新建一个,User
为svn账号,password
为svn密码,其他如非需要可以选择不填 - Local module directory:可不改动(默认为根目录
.
,如果已经自定义了工作空间,这里为工作空间的根目录,否则为默认工作空间) - Check-out Strategy:看情况选择,如果Jenkins处于几乎不会被关闭,构建对源代码无修改时可使用
Use 'svn update' as much as possible
,放Jenkins有可能被强制重启或构建会修改源代码时,应使用Use 'svn update' as much as possible,with 'svn revert' before update
,可以有效避免svn更新失败
-
代码编译
构建
-->增加构建步骤
-->Invoke top-level Maven targets
- Maven Version:选择在全局配置中配置的版本
- Goals:maven编译指令,这里填
clean install -DskipTests
- POM:这里为编译时使用的pom.xml在目录下的相对位置
- Settings file:该选项可以选择自定义maven的配置文件,
- 选择
Settings file in filesystem
- 需要使用的
settings.xml
的绝对路径,如D:\apache-maven-3.5.0\conf\settings.xml
- 选择
-
文件迁移、发布
构建
-->增加构建步骤
-->Execute Windows batch command
-
命令:windows批处理指令,写在这里运行的指令不会有新的窗口,即使使用start 、cmd等指令,这里推荐使用
start
指令,否则只有当批处理运行结束时该构建才会被当做结束,例如copy D:\workspace\jenkins_Test\target\jenkins_test-0.0.1-SNAPSHOT.jar D:\Test\jar\jenkins_test-0.0.1-SNAPSHOT.jar start java -jar D:\Test\jar\jenkins_test-0.0.1-SNAPSHOT.jar
先拷贝出去再进行部署可以避免代码迁出时或maven编译时遇到文件占用异常导致构建失败,并且使用批处理发布可以不依赖插件和tomcat
Jenkins进阶
插件安装
联网情况下安装
Jenkins
-->系统管理
--->管理插件
进入插件下载、安装界面- 搜索
Parameterized Remote Trigger
(负责不同服务器上的Jenkins进行远程触发)HTTP Request
(负责发送http请求,这里用来关闭springBoot项目)pre scm buildstep
(负责在svn或其他代码库迁出代码时执行构建操作)Deploy to container
(负责将项目远程部署到tomcat上面,但是tomcat必须已启动) - 选择下载待重启后安装或直接安装
插件使用
-
远程触发Jenkins Job
-
主服务器环境配置:
- 选择一个Jenkins服务器作为主要的触发启动其他Jenkins的任务的Jenkins,在该Jenkins中安装插件
Parameterized Remote Trigger Plugin
,其他服务器可以选择不装。 - 插件安装成功后,在
系统管理
-->系统设置
中找到Parameterized Remote Trigger Configuration
,选择增加
- Display name:远程服务器名称;随意
- Enable 'build token root support:使用插件进行认证;勾选此选项后,需安装插件激活此功能
- Authentication:证书;选择
Username + API Token
,Remote Username
为远程服务器的账号,API Token
为远程服务器的密码 - Remote address and port:远程服务器的url;此处应填写协议和端口,例如http://192.168.18.100:1209
- 点击
Validate Address
进行访问测试
- 选择一个Jenkins服务器作为主要的触发启动其他Jenkins的任务的Jenkins,在该Jenkins中安装插件
-
主服务器Job配置
- 在
job
中,构建
-->增加构建步骤
-->Trigger a remote parameterized job
(这里可将此模块拖动至Invoke top-level Maven targets
上面,方便同步部署) - Select a remote host:选择需要触发的服务器名称
- Override credentials:覆盖证书;无需勾选,默认使用预设的该服务器的账号密码,勾选则覆盖(单独此Job使用的证书)
- Do not fail if remote fails:在远程项目失败时此构建继续;勾选,在远程项目失败时此项目仍旧能够继续运行,但如果不能连接远程服务器,则该项目仍旧会失败
- Wait to trigger remote builds until no other builds are running:等到远程项目构建完成之后才结束此构建;可勾选,不用去寻找哪个尚未构建完成,此构建结束就代表所有构建都结束(这里不区分构建成功与失败,需要区分得配合
Do not fail if remote fails
使用) - Poll Interval (seconds):当连接远程服务器失败时重新请求的时间,单位:秒 ;随意,但不要太小
- Block until the remote triggered projects finish their builds:阻塞当前构建,等到远程服务构建结束时继续构建;不勾选,除非远程需要先运行完毕,一般配合
Do not fail if remote fails
使用 - Remote Job Name:远程服务器上
job
的名称 - Token:远程触发令牌
下面三项如非项目需求可使用默认
- 在
- 从服务器配置
- 勾选
参数化构建过程
,随意选择字符类型,但是得要能接受int数值 - 名称:接受参数的名称,填delay
- 默认值:无参或未获取参数时的值,这里随意
- 描述:参数描述
此参数功能为接受Parameterized Remote Trigger
插件触发式自带的参数,不影响构建 构建触发器
勾选触发远程构建 (例如,使用脚本)
,当选择这种触发方式时,需要自定义一个密匙token,访问http://ip
+Jenkins项目url +/build?token=
自定义密匙token即可触发(这种方式适合跨平台触发不同的项目),例如:localhost:8080/job/test/build?token=test
- 勾选
-
- 提前执行编译等行为
构建环境
-->Run buildstep before SCM runs
- http请求
- URL:http请求地址
- HTTP mode:请求方式
- Ignore Ssl errors?忽略无效证书
- Http Proxy:请求代理
- Connection timeout:超时时间;0为不存在超时时间
- Response codes expected:忽略错误代码匹配
- 远程部署至tomcat
构建后操作
-->增加构建后操作步骤
-->Deploy war/ear to a container
- WAR/EAR files:包位置,支持ant-style匹配;一般填写
**/*.war
,用ROOT文件夹启动项目时也填写此表达式 - Context path:项目在Tomcat URL的位置;例如:
/test
对应http://localhost:8080/test
Containers
-->Add Container
-->Tomcat 7.x
- Credentials:Tomcat证书
- Tomcat URL:Tomcat的Url;例如
http://localhost:8080