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插件
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 Trigger
jenkins每次重启或者启动后自动执行任务
在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 description
Build duration
Build parameters
Configure build button
Disable/enable Project button/icon
Job type
Last build
# 最后一次构建的时间Last build node
Last/current build console
Last project configuration modification
Periodic build trigger
Project description
SCM type
Agent or label restriction
Test result
User name
# 最后一次构建的执行人Workspace link
常用插件汇总
Build Environment Plugin
构建环境插件,可以进行构建环境比较。Build Flow Plugin
工作流插件,支持DSL脚本定义工作流Build Graph View Plugin
build Flow插件视图(安装后需要重新才能生效)Build Monitor View
使用心得:基于该插件可以实现dashboard功能Build Pipeline Plugin View
Pipeline 管道流图表展示插件Build Timestamp Plugin
任务log时间戳插件,使得job log的每次输出前面都增加当时的时间Build-timeout Plugin
job构建超时插件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 Plugin
workspace清理插件Node and Label parameter
这个插件增加了一个新的参数类型,Node 和 Label,从而使用户通过参数可以选择项目构建运行的节点。
Jenkins
脚本
批量修改脚本的丢弃旧的构建
设置项设置
1 | import jenkins.model.Jenkins |