Jenkins 部署
创建Jenkins运行目录
1 | # Jenkins主目录 |
设置jenkins主目录
- 使用WEB容器工具设置
JENKINS_HOME环境参数。
打开tomcat的bin目录,编辑catalina.sh文件。
在# OS specific support. $var _must_ be set to either true or false.上面添加:export JENKINS_HOME=""
在引号中填入你的路径。
- 在环境变量中设置
JENKINS_HOME。1
2
3
4
5# 编辑对应用户的终端的环境变量设置文件
# 编辑profile文件:
vim ~/.bashrc
# 在最后加入:
export JENKINS_HOME="/home/shadow/jenkins/Home"
下载jenkins.war
最新版jenkins的war包
把下载的war包放入/opt/Jenkins目录下
编写启动脚本
1 | /usr/bin/java -Dfile.encoding=UTF-8 \ |
1 | # 设置编码格式 |
新建脚本文件存放脚本startJenkins.sh,放到script目录下。
执行脚本
1 | # 赋予可执行权限 |
Jenkins主目录介绍
1 | # jenkins主配置文件 |
简单操作jenkins状态
关闭jenkins:http://localhost:8080/exit
重启jenkins:http://localhost:8080/restart
重新加载配置信息:http://localhost:8080/reload
问题总结
Jenkins console输出乱码
在/etc/profile中添加export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"
在Jenkins系统管理里,添加环境变量Key:LANG,Value:en_US.UTF-8(如果系统默认的已经是en_US.UTF-8,就不用设置了)
jenkins中的WORKSPACE中的HTML文件无法打开
报错如下:
1 | Verify that you have JavaScript enabled in your browser. |
解决方法:在系统管理-脚本命令行中执行如下脚本
1 | System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","sandbox allow-scripts; default-src 'none'; img-src 'self' data: ; style-src 'self' 'unsafe-inline' data: ; script-src 'self' 'unsafe-inline' 'unsafe-eval' ;") |
或者在 Jenkins 中新建一个项目,添加一个Execute system Groovy script,其中添加以上脚本,然后构建该项目。
Jenkins构建时遇到的No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
原因:maven项目执行编译时,没有找到对应的JDK。
解决方案:在Jenkins的设置中加入JDK的配置。

注意手动录入系统安装的JDK的路径,即在JAVA_HOME输入框手动输入JDK的安装路径,不勾选Install automatically
Jenkins主目录空间满了,导致任务无法执行处理 你的 Jenkins 数据目录 "/root/.jenkins" (AKA JENKINS_HOME) 就快要空间不足了。你应该在它被完全撑满之前就有所行动。
解决方案:修改主目录位置
解决方式:
- 移动主目录到新目录下:
mv /root/.jenkins/ /opt/jenkins/,需要确保执行这些操作前,Jenkins已经关闭,不然mv命令执行完毕后,还是会存在.jenkins的目录,导致软连接无法创建成功 - 创建新目录到指定原目录的软连接:
ln -s /opt/jenkins/.jenkins/ /root/.jenkins
得到如下结果:1
2
3
4
5
6
7(base) [root@localhost ~]# ll -a
总用量 1585684
dr-xr-x---. 45 root root 4096 11月 29 14:54 .
dr-xr-xr-x. 19 root root 4096 10月 18 11:15 ..
...
lrwxrwxrwx. 1 root root 22 11月 29 14:54 .jenkins -> /opt/jenkins/.jenkins/
... - 最后重新启动Jenkins服务,任务都正常展示,就说明主目录迁移成功了。
好用的Jenkins插件
Parameterized Remote Trigger Plugin 【多slave项目顺序执行】 Parameterized Trigger Plugin 【多项目顺序执行】
设置项目在某项目执行完成后,再执行当前项目
【构建触发器】-【Build after other projects are built】
Build periodically【日程表】设置
设置周期性执行策略
第一个参数代表的是分钟 minute,取值 0
59;23;
第二个参数代表的是小时 hour,取值 0
第三个参数代表的是天 day,取值 131;12;
第四个参数代表的是月 month,取值 1
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
示例:H 8 * * 6:每周六上午8点构建一次H * * * *:每小时构建一次H 8 3 2 *:每年2月3号8点构建一次
Git Parameter【构建分支&Tags参数化】
适用于项目中配置了”源码管理”的,Git分支直接从”源码管理”中拉取的代码中获取分支信息

List Git Branches Parameter PlugIn 【构建分支&Tags参数化】plus
适用于不在项目中配置源码拉取,但是需要去获取源码的分支信息的时候

Build User Vars Plugin【获取项目构建人】
插件名称:user build vars plugin
变量值表
| Variable | Description |
|---|---|
| BUILD_USER | Full name (first name + last name) |
| BUILD_USER_EMAIL | Email address |
| BUILD_USER_FIRST_NAME | First name |
| BUILD_USER_ID | Jenkins user ID |
| BUILD_USER_LAST_NAME | Last name |
在jenkins任务中使用构建变量:注意需要勾选 “Set jenkins user build variables.”
Naginator【任务失败重新构建插件】
在构建后操作中选择Retry build after failure。Fixed delay填写每次重试的时间延迟,单位是秒。Maximum number of successive failed builds文本框中填写重试次数。
Publish Over SSH【通过ssh构建项目】
触发远程构建(例如,使用脚本)

设置身份验证令牌TOKEN_NAME,可以随意定义。
1 | # 默认参数执行远程构建 |
Job Configuration History Plugin【记录项目的修改记录】
在项目中,点击左侧栏中的Job Config History,可以查看该项目的更改历史
在Jenkins主目录下,点击左侧栏中的Job Config History,可以查看整个系统的所有修改历史
1 | Show system configs only |
Localization: Chinese (Simplified)切换jenkins显示语言为中文
只要安装重启后,jenkins的显示语言就会自动展示为中文
Startup Triggerjenkins每次重启或者启动后自动执行任务
在jenkins项目的配置中,构建触发器中,Build when job nodes start配置项中,设置Quiet period字段为默认值0,表示重启后,没有任何延迟,直接启动。
Configuration Slicing plugin批量修改所有项目的某一个配置
在系统管理中,Configuration Slicing打开,可以看多很多的设置项,点击进入自己需要批量设置的项,进行设置。
Post build task用于在jenkins构建完成后,继续执行所需要执行的shell脚本

在Script中写入需要执行的shell命令
extra-columns 视图为List View视图的列表展示增强插件
插件离线下载地址:清华大学开源软件镜像站_Index of /jenkins/plugins/extra-columns/
It currently provides the following columns:
Build descriptionBuild durationBuild parametersConfigure build buttonDisable/enable Project button/iconJob typeLast build# 最后一次构建的时间Last build nodeLast/current build consoleLast project configuration modificationPeriodic build triggerProject descriptionSCM typeAgent or label restrictionTest resultUser name# 最后一次构建的执行人Workspace link
常用插件汇总
Build Environment Plugin构建环境插件,可以进行构建环境比较。Build Flow Plugin工作流插件,支持DSL脚本定义工作流Build Graph View Pluginbuild Flow插件视图(安装后需要重新才能生效)Build Monitor View使用心得:基于该插件可以实现dashboard功能Build Pipeline Plugin ViewPipeline 管道流图表展示插件Build Timestamp Plugin任务log时间戳插件,使得job log的每次输出前面都增加当时的时间Build-timeout Pluginjob构建超时插件BuildResultTrigger Plugin根据其他的job的成功或失败来启动此build。Cron Column Plugin通过定时任务例行的运行一些jobFiles Found Trigger检测指定的目录,如果发现指定模式的文件则启动build。HTTP Request Plugin使用心得:在构建前后可以通过该插件以http形式调用各种api接口实现和内部系统的联动Job Configuration History Plugin使用心得:使job具备版本管理的能力,diff和rollback功能更是非常赞Job Import Plugin使用心得:可以快速导入其他jenkins集群的已有job,需要认证的jenkins系统导入需要提供凭证才可以Join Plugin这也是一个触发job的插件,亮点在于它触发job的条件是等待所有当前job的下游的job都完成才会发生。Multijob Plugin多任务插件Naginator Plugin任务重试插件Parameterized Trigger Plugin这是一个扩展型的插件,使各个job连接的时候可以传递一些job相关的信息Persistent Parameter参数化插件,用于在下次参数化构建时,保留前一次的选择记录Periodic Backup使用心得:备份是运维一个系统必须要保障的事情,该插件的恢复功能可能不可用,需要手工进行,好处在于可以定时备份Publish Over SSH Plugin通过ssh发布文件Rebuild Plugin重新执行插件Status Monitor Plugin构建状态插件ws-cleanup Pluginworkspace清理插件Node and Label parameter这个插件增加了一个新的参数类型,Node 和 Label,从而使用户通过参数可以选择项目构建运行的节点。
Jenkins脚本
批量修改脚本的丢弃旧的构建设置项设置
1 | import jenkins.model.Jenkins |