目录
【一】:Jenkins 持续集成安装及使用简介
一、前言
二、初始化 Jenkins 插件和管理员用户
2.1 进入如下页面,输入上面出现的口令
2.2 进入选择安装插件的页面后,可以选择安装社区推荐的插件或自定义安装,此处选择前者
2.3 创建管理员用户
三、配置 Jenkins 构建工具
3.1 进入 jenkins 主界面
3.2 进入全局工具配置页面
3.3 配置 Maven
3.4 配置 JDK
3.5 配置 Git
四、构建作业
4.1 点击创建一个新任务,进入创建项目类型选择页面
4.2 进入构建作业的详细页面
4.3 源码管理
4.4 构建触发器
4.5 构建
五、构建
5.1 执行构建的方式
5.2 构建结果
5.3 查看控制台输出
5.4 部署
二.【Jenkins平台的部署与数据管理方法】
文章目录
一:Jenkins平台部署
1.前期准备
2.安装Jenkins
3.配置文件修改
1.添加Jenkins启动用户gsuser和工作目录
2.修改Jenkins配置
3.修改权限
4.安装插件,配置镜像源
3.【jenkins数据管理方法】
四.【创建第一个持续集成任务】
一、jenkins 介绍
二、下载安装启动
2.1 安装准备
2.2 安装ant
2.3.1 卸载原来安装的rpm包
2.3.2 安装jenkins
2.4 启动
2.4.1 安装jdk环境
2.4.2 在jenkins配置文件中配置
三、默认配置修改及初始化
3.1 修改配置文件
3.2 初始化
3.3 初始化安装插件
3.4 初始化配置
3.4.1 修改工作空间
3.4.2 全局配置ant
3.4.4 配置Credentials
4、建立 Jenkins 自动化持续集成项目
4.1 安装插件
4.1.1 常用插件
4.1.2 安装步骤
4.2 建立项目
4.2.1 新建项目
4.2.2 General
4.2.3 源码管理
4.2.4 构建触发器
4.2.5 构建环境
4.2.6 构建
4.2.7 构建后操作
4.3 监控
4.3.1 主页面介绍
4.3.2 构建状态查询
五、常见错误处理
5.1 java.lang.UnsupportedClassVersionError
5.2 command execution failed.Maybe you need to configure the job to choose one of your Ant installations?
5.3 JAVA_HOME is not defined correctly.
5.3 Unable to access the repository
5.4 can’t create file
六:把机器加入Jenkins节点实现节点管理
八:jenkins安全机制详解
Jenkins安全配置详解
重点:600G的学习资料,懂的都懂
持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
下载好 jenkins.war 包之后,在 cmd 下切换到下载目录,然后执行如下命令:
java -jar jenkins.war
启动了自带的 Jetty 服务器
生成随机口令
这样,jenkins 就开始启动了,它的 war 包中自带 Jetty 服务器,第一次启动 Jenkins 时,出于安全考虑,Jenkins 会自动生成一个随机的安装口令。注意控制台输出的口令,复制下来。在浏览器中输入地址:
http://localhost:8080/
首次启动 jenkins 时如果发现一直卡在启动界面,提示:Jenkins正在启动,请稍后...
你可以按 Ctrl + C 强制结束启动,然后再次执行上面的命令,发现就会继续启动了,或者可以修改一下配置文件,因为你所在网络可能被限制了,如下:
进入 jenkins 的工作目录,默认是:C:\Users\Administrator\.jenkins
也可以自定义 jenkins 的工作目录,设置 JENKINS_HOME 环境变量,启动 jenkins.war 后将被解压到 JENKINS_HOME 目录下,同时所有 jenkins 的 plugins 和 配置文件等也将被写入到 JENKINS_HOME 所设置的目录下。
打开 hudson.model.UpdateCenter.xml,将 http://updates.jenkins-ci.org/update-center.json 替换成 http://mirror.xmission.com/jenkins/updates/update-center.json,还是不行的话找到 updates 目录下的 default.json 把里面所有的谷歌地址改成百度的,即将 http://www.google.com/ 替换为 http://www.baidu.com/。
启动后第一次进入如下页面
一般至少需要安装如下几个插件:
Git/Subversion、SSH、Publish Over SSH、Maven 等。
填入账户信息后,进入完成页面:
安装完成。
用管理员账号第一次登录 Jenkins 后,需要在 "系统管理" -> "全局工具配置" 中,设置你要使用到的构建工具和 JDK 版本。
点击 "系统管理" -> "全局工具配置"
进入后配置构建工具
如果机器上已经安装了 Maven,则在 Maven_HOME 输入框中提供具体的安装路径。否则,你可以选择需要的 maven 版本,让 Jenkins 为你自动下载 maven。
同理,如果机器上已经安装了 JDK,则在 JAVA_HOME 输入框中提供具体的安装路径。否则,你可以选择需要的 JDK 版本,让 Jenkins 为你自动下载 JDK。
如果之前没有为 Jenkins 安装 Git、Subversion(SVN)或 CVS 插件,可以在 "系统管理" -> "管理插件" 中安装。
构建作业是 Jenkins 构建过程的核心。
如果发现没有 "构建一个maven项目" 这一项,则需要安装 Maven Integration 插件,如下:
根据自己项目的实际情况选择源码管理的方式:
其中有 5 个参数,分别表示:
MINUTE:Minutes within the hour(0-59)
HOUR:The hour of the day(0-23)
DOM:The day of the month(1-31)
MONTH:The month(1-12)
DOW:The day of the week(0-7)where 0 and 7 are sunday
常用配置:
0 * * * * 为每个小时执行一次
0 1 * * * 为没天的凌晨1点执行一次,这种配置的设置,适合执行一些冒烟的测试用例
第一个参数:min,0-59
第二个参数:hour:0-23
第三个参数:day:0-31
第四个参数:month:1-12
第五个参数:week:0-7(0 和 7 代表 Sunday)
Jenkins 中 "Poll SCM" 和 "Build periodically"的区别
Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作,配置如下:
*/5 * * * * (每5分钟检查一次源码变化)
Build periodically:周期进行项目构建(它不care源码是否发生变化),配置如下:
0 2 * * * (每天2:00 必须build一次源码)
在 "Build" 中,默认的项目根目录的 Root POM,即 pom.xml。如果 pom.xml 不在根目录下,就填入子目录,例如:cloud/pom.xml。
如果源码管理中选择 "None",此处点 "高级..." 可以自定义工作空间中的项目地址,如下:
保存上面的构建作业:
构建作业之后,就可以执行构建过程了。
第一种:点击任务名称的右边的小三角,然后点击 "立即构建"
第二种:按照 "构建触发器" 中设置的 "日程表"定时自动触发构建
第一列是 "上次构建状态显示",是一个圆形图标,一般分为四种:
蓝色:构建成功;
黄色:不确定,可能构建成功,但包含错误;
红色:构建失败;
灰色:项目从未构建过,或者被禁用;
如上显示蓝色,表示构建成功。
注意:手动触发构建的时间与自动定时构建的时间互不影响。
可以查看构建成功的控制台输出:
控制台信息显示将构建的 jar 包从项目的 target 目录下归档到了 jenkins 指定的目录下了
此目录显示按照不同的构建编号,构建成功的项目
这与该工程的构建历史中的编号相对应
如果构建失败,可以通过查看构建失败的控制台输出,来得到具体的出错信息,便于调试
点击后查看错误信息,如下:
第二列是 "编译晴雨表",如下:
如果看到你项目变成阴云或者下雨,说明你的项目稳定性不好,需要去查找原因,解决问题。
如果要部署构建好的 war 包,可以在 Post Steps 中填上 shell 命令,直接用脚本部署。
另一种方式是创建另外一个构建项目,手动触发部署。
无论用哪种方式,都是为了确保编译、部署是通过持续集成服务器完成的,而不是某台开发机器。
1.检查JDK是否安装,如果没有安装请安装,安装步骤:上传,解压,设置环境变量,引用环境变量
1 |
[root@localhost ~]# tar zxf jdk-8u191-linux-x64.tar.gz -C /opt/ |
1.上次软件包,创建安装目录,安装
1 |
[root@localhost ~]# ls |
\#安装成功后Jenkins将作为一个守护进程随系统启动 \# 系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者 \# 启动的时候将从/etc/sysconfig/jenkins获取配置参数 \# 默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置
1 |
[root@localhost ~]# useradd gsuser -g wheel |
1 |
[root@localhost ~]# vim /etc/sysconfig/jenkins |
1 |
chown -R gsuser.wheel /data/ota_soft/jenkins |
注:目录权限一定要对,无法启动可以 清空 /var/log文件
1.安装插件某些客户环境无法上网,或者安装插件速度太慢,插件版本为2.190.3-1.1,如果想自己更新jenkins版本或插件请略过
1 |
上传 |
2.更换国内镜像源
1 |
[root@localhost jenkins]# sed -i 's#http://www.google.com#https://www.baidu.com#g' /data/ota_soft/jenkins/updates/default.json |
3.配置nginx
1 |
[root@localhost conf.d]# vim /etc/nginx/nginx.conf |
4.浏览器访问
1 |
[root@localhost conf.d]# cat /data/ota_soft/jenkins/secrets/initialAdminPassword |
等待安装
创建用户
接下来按提示操作即可
登录成功
\#如果出现输入管理员密码一直空白页面,请直接访问以下带路径地址,或重启jenkins http://域名:jenkins/pluginManager/advanced](http://ipport/)
在这篇文章中总结和介绍一下Jenkins数据存储目录的相关信息以及备份和恢复相关的内容。
数据存储目录
Jenkins执行构建以及归档管理的时候需要一定的存储空间,缺省的情况下,此目录被设定至HOME目录~/.jenkins,但可以通过修改如下环境变量来修改此目录的位置:
环境变量:JENKINS_HOME
修改数据存储目录的方法
当然此此目录也可以在已经使用Jenkins后进行修改。这种情况只需要按照如下步骤即可:
步骤1: 停止Jenkins服务
步骤2: 移动JENKINS_HOME的原有目录设定到新目录,并设定JENKINS_HOME环境变量
注:如果是容器方式,只需要在修正JENKINS_HOME的环境变量或者卷的映射关系即可
*步骤3: 重新启动Jenkins服务
数据目录结构与文件
JENKINS_HOME下的目录结构与文件如下表所示:
类型 名称 名称 名称 名称 说明
文件 config.xml - - - Jenkins基本配置信息
文件 *.xml - - - 其他各种配置文件
目录 userContent - - - 通过userContent/(前缀为Jenkins访问地址)可以访问的文件可以保存在这个目录
目录 fingerprints - - - 保存文件指纹记录
目录 plugins - - - 插件设定目录
目录 workspace - - - 工作目录
子目录 - job名 - - workspace的子目录,以job名作为目录名,每个job有一个这样的目录
目录 jobs - - - job目录
子目录 - job名 - - jobs的子目录,以job名作为目录名,每个job有一个这样的目录
文件 - config.xml - - job配置文件
文件 - latest - - 最近一次成功构建的软链接
文件 - builds - - 构建信息
子目录 – - 构建编号 - 每次构建会产生一个构建目录
文件 – - - build.xml 构建结果概要信息
文件 – - - log 构建日志
文件 – - - changelog.xml 变更日志信息
目录 updates - - - Jenkins内部使用,主要用来保存Jenkins可用的插件信息
目录 users - - - 当需要使用Jenkins本地用户的数据库时,用户账户信息会保存在此目录中。
目录 war - - - Jenkins的war文件解压的目录
fingerprint
在Jenkins中,文件的fingerprint就是一个简单MD5校验和,Jenkins会维护着这样的MD5校验和的数据库,而对于每一个MD5校验和,Jenkins都会记录哪个项目的哪次构建的详细信息。而每次构建文件的指纹相关的这个数据库都会被更新。
为了避免过多的磁盘使用,Jenins不会直接保存实际的文件,而是保存其md5sum信息,保存的位置为:$JENKINS_HOME/fingerprints
清理策略
目录 说明 类型说明 清理策略
userContent 通过userContent/(前缀为Jenkins访问地址)可以访问的文件可以保存在这个目录 辅助功能目录,一般不会直接使用 一般无需进行清理,此目录一般不会被使用
fingerprints 保存文件指纹记录的目录 Jenkins追踪多项目之间文件使用的依赖关联时用到的特性,一般不会直接被操作使用 相关文件增长较小时可以考虑不进行特意清理措施
plugins 插件设定目录 系统设定目录 升级时需要进行备份,不可进行清理操作
workspace 工作目录 此目录的磁盘使用率会随着job使用的增加而增加 定期清理,保存一定期限使用到的job
jobs job构建信息 此目录的磁盘使用率会随着job的增加和构建的增加 定期清理,保存一定期限使用到的job
updates 可用插件更新目录 Jenkins内部使用,主要用来保存Jenkins可用的插件信息 不会过度增长,可以不必进行清理
users 当需要使用Jenkins本地用户的数据库时,用户账户信息会保存在此目录中。 一般不会直接使用到此目录 无需进行定期清理
war Jenkins的war文件解压的目录 - 无需进行定期清理
备份与恢复
备份与恢复都相对较为简单,尤其是容器化的方式,只需设定好卷的mapping与JENKINS_HOME的环境变量即可,但是需要注意如下事项
备份:可以在Jenkins服务启动或者停止的状态下进行备份。
恢复:需要注意在Jenkins服务停止的状态下进行恢复
常见插件
Workspace Cleanup Plugin
插件说明:
此插件用于在构建之前或者构建之后清除workspace目录下的内容,并可支持删除特定类型的文件
插件详细信息:
https://wiki.jenkins.io/display/JENKINS/Workspace+Cleanup+Plugin
Git userContent plugin
插件说明:
此插件用于和Jenkins的userContent目录进行关联,可以使用git进行相关的操作。其实际上是将$JENKINS_HOME/userContent作为git的仓库,管理员通过git的命令(pull或者push)对此仓库的内容进行操作,对历史履历信息也可以进行管理。
4【jenkins job工作机制】
Jenkins 像老板一样管理各种 job 。job 是 Jenkins 的一个执行计划,是一系列操作的集合,Jenkins 里的最常用的功能就是 job 的构建,即任务的构建。通过构建 job 即可让工人为你工作。
创建 job及配置步聚
可以通过如下步骤初步构建一个Jenkins 任务:
配置详解
构建功能是Jenkins的核心功能,Jenkins任务具体的执行内容一般都由此配置进行控制,可以通过Shell脚本或者其他类型的脚本,定制化的完成任务。
以下面的脚本为例,下面的脚本执行的内容为切换到测试用例所在路径,并执行测试用例:
# 切换到测试脚本所在路径
cd test_pytest/tests/
# 执行pytest测试用例
python3 -m pytest test_ui.py
定时构建代表任务的构建(执行)的频率,一旦添加此配置,就会按照设定的配置内容执行:
# 1.每30分钟构建一次
H/30 * * * *
# 2.每2小时构建一次
H H/2 * * *
# 3.每天早上8点构建一次
0 8 * * *
# 4.每天的8点、12点、22点,1天构建3次
0 8,12,22 * * *
# 5.每3分钟构建一次,每天0点至23:59,周一至周五执行该任务
H/3 0-23 * * 1-5
其他配置类型将会在后面的章节进行具体的介绍。
本文介绍的是在CentOS系统下,用rpm包安装方式进行启动。
软件 |
版本 |
说明 |
JDK |
1.7.0_76 |
解压安装,注意设置好环境变量 |
ant |
1.9.9 |
JDK1.7.x只能安装1.9.x系列ant |
Jenkins |
2.33 |
JDK1.7.x只能安装Jenkins2.3.x系列Jenkins |
ant是基于java的一款构建工具,通过配置build.xml,让项目可以进行编译,部署,打包。
因为我们要实现自动构建,所以首先要安装ant。
从http://ant.apache.org 上下载tar.gz版ant
wget http://www-eu.apache.org/dist//ant/binaries/apache-ant-1.9.9-bin.tar.gz
解压tar包
tar -zxvf apache-ant-1.9.9-bin.tar.gz
移动到/usr/share下
cp -r apache-ant-1.9.9 /usr/share
切换到/usr/share目录下,重命名
cd /usr/share
mv apache-ant-1.9.9 ant
配置环境变量
vi /etc/profile
#set Ant enviroment
export ANT_HOME=/usr/share/ant
export PATH=PATH:PATH:ANT_HOME/bin
立刻将配置生效
source /etc/proifle
测试ant是否生效
ant -version
出现如下提示便表示安装成功。
ant的使用查看这篇文章:ant在持续集成的应用
2.3 卸载及安装jenkins
首先查看是否已经安装过jenkins
rpm -qa|grep jenkins
# 下载jenkins-2.33-1.1.noarch.rpm wget http://pkg.jenkins-ci.org/redhat/jenkins-2.33-1.1.noarch.rpm #安装jenkins-2.33-1.1.noarch.rpm sudo rpm -ih jenkins-2.33-1.1.noarch.rpm
出现如下图
表示安装成功,安装成功会自动生成下面文件:
/usr/lib/jenkins/jenkins.war #WAR包 /etc/sysconfig/jenkins #配置文件 /var/lib/jenkins/ #默认的JENKINS_HOME目录 /var/log/jenkins/jenkins.log #Jenkins日志文件
启动用如下命令:
sudo service jenkins start
报了如下错误:
会报这个错误,这是由于没有配置java环境,有两种方法可以解决:
先检查一下java虚拟机有没有安装,如果没有就安装
java --version
需要“vi /etc/init.d/jenkins”,把jdk路径加上,如下:
# Search usable Java as /usr/bin/java might not point to minimal version required by Jenkins. # see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html candidates=" /etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-1.7.0/bin/java /usr/lib/jvm/jre-1.7.0/bin/java /usr/bin/java /home/lutong/soft/jdk1.7.0_76/bin/java " for candidate in $candidates do [ -x "$JENKINS_JAVA_CMD" ] && break JENKINS_JAVA_CMD="$candidate" done JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR" PARAMS="--logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon"
上述配置文件中红色加粗字体的内容是我配置自己的jdk路径。由于我的系统中的java是自己解压安装的,所以我采用了第二种方式
再次启动jenkins:
上面我们有提到配置文件是/etc/sysconfig/jenkins,修改如下两项配置(根据实际需要设置)
#修改为18080,默认是8080 JENKINS_PORT="18080" #内存设置,我这里设置成如下配置 JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=1024m"
打开jenkins的后台控制页面
初始化成功后会自动生成一个管理员密码放到指定位置,根据页面提示复制密码粘贴到输入框就可以登录了
登录成功后回让你选择插件的安装,可以选择建议的安装也可以自己进行选择,不清楚的话可以使用建议的安装
由于建议安装的插件比较多,安装的过程有点慢,多等待一会
由于建议安装的插件比较多,安装的过程有点慢,多等待一会
安装的过程也可能因为网络等一些原因安装会失败,现在可以无视它,点击Continue,后面再进行手动的安装
安装完成
初始化完成
后台管理界面
从主页面直接到“系统管理>系统配置”,点击右边“高级”按钮
在工作空间目录”直接修改默认工作空间目录为自定义的/home/jenkins/workspace/${ITEM_FULLNAME},如下图:
从主页面直接到“系统管理>Global Tool Configuration”,点击右边“Ant安装”按钮,
在name中填入名字,可以自己取,这里我填写成ant(到时Invoke Ant时,需要选择ant),ANT_HOME填入Ant的环境变量
3.4.3 全局配置JDK
从主页面直接到“系统管理>Global Tool Configuration”,点击右边“JDK安装”按钮,
在name中填入名字,可以自己取,这里我填写成ant(到时Invoke Ant时,需要选择ant),ANT_HOME填入Ant的环境变量
这里主要是添加信任证书,因为我的工程的源码是放在SVN上,所以在这里我们就是要添加SVN的验证,即SVN的用户名和密码。
从主页面左边菜单点击到“Credentials”,进入到 Credentials列表,如图所示:
点击Name列中即可对Credentials中用户进行修改、新增、删除操作,如下图所示:
修改完后,点击下面“Save”保存按钮即可
一般情况下,常使用到如下这些插件:
下面以安装Checkstyle插件为例进行说明:
在左上角“系统管理”中往下拉,找到“管理插件”点击进去就可以查看和管理所有的插件,点击“可选插件”显示所有jenkins支持的插件,在右上角的“过滤”输入框中,输入需要安装的插件名就可以筛选查找到想要的插件
然后切换到“可选插件”,在右上角“过滤”框中输入checkstyle,查询结果如下
然后,点击“直接安装”按钮,其他插件也是这样的安装方式!
下面以建立一个自由风格软件项目为例进行说明
然后就会进行到下面这个配置页面
接下来,我从General、源码管理、构建触发器、构建环境、构建、构建后操作这几个部分来进行详细配置说明
这部分主要是设置下名称、工作空间等。
第一步,点击高级按钮;
第二步,勾选“自定义工作空间”,输入工作空间路径;
若是只有一个项目,也可以直接到“系统管理>系统配置>工作空间目录”直接修改默认工作空间目录,如下图:
因为,我们的代码是部署在SVN服务器上的,所以这里有下面三个步骤来配置jenkins监控SVN服务器代码变化。
第一步,选择Subversion;
第二步,在Repository URL输入项目SVN地址;
第三步,在Credentials选择SVN用户名和账号,初次会需要点击Add添加,如下。
指定的项目完成构建后,触发此项目的构建。
略
这部分主要是配置构建的相关内容,用于定时触发构建或者手动执行构建的时候,对代码检验、编译时进行的操作。构建概念到处可查到,形象来说,构建就是要把代码从某个地方拷贝过来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个。
因为我的项目是用ant脚本实现的编译和打包,所以我选择的是Invoke Ant,Ant Version选择我Ant配置的那个名字(这里可以参见3.4.2),注意不要选择default喔,那个选择了没有用。
如果你的构建脚本build.xml不在workspace根目录、或者说你的构建脚本不叫build.xml。那么需要在高级里设置Build File选项的路
build.xml配置文件请查看附件“build.xml说明”,里面有每句配置说明;
checkstyleBuild.xml配置文件请查看附件“checkstyleBuild.xml说明”,里面有每句配置说明;
findBugsBuild.xml配置文件请查看附件“findBugsBuild.xml说明”,里面有每句配置说明。
用于定义当前项目构建完之后的一些操作,比如构建完之后将checkstyle结果输出到指定日志文件,重新发布项目,去执行其他项目构建等。
4
4.2.7.1 构建后发布项目
注意,首先你必须安装好Deploy Plugin插件,然后在tomcat的conf目录配置tomcat-users.xml文件,如我这里配置的是manager, 在
配置完之后一次war包路径、用户名、密码、主机即可
配置完之后一次war包路径、用户名、密码、主机即可
参数说明:
注意:虽然这种部署方法可能会导致tomcat加载时出现卡死的现象。但是也是最简单的部署方式。如果卡死了重启下就好了,将tomcat的java内存参数调高可以解决这个问题。
最后不要忘记点击保存喔。
好了!到此一个项目的获取源码,打包,远程部署
4.2.7.2构建后发布静态结果
输入配置文件
checkstyle-result.xml配置文件请查看附件“checkstyle-result.xml说明”,里面有配置说明。
所有这些配置多做完之后,在最下方点击“保存”按钮,现在回到首页去进行构建吧!!!
1、左边菜单栏
2、监控项目列表
这里主要是Jenkins当前正在监控的项目列表。点击进去可查看当前项目详细情况。
模块1:
模块2:
模块3:
当任务一旦运行,您将会看到这个任务正在队列中的仪表板和当前工作主页上运行。这两种显示如下。
一旦构建完成后,完成后的任务将会构建历史列表显示。
当然你可以在Jenkins的主控制面板上看到它,如下图。
在上面展示的截图中,您将注意到有两个图标描述当前作业的状态。S栏目代表着“最新构建状态”,W栏目代表着“构建稳定性”。Jenkins使用这两个概念来介绍一个作业的总体状况:
1、构建状态:
下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:
2、构建稳定性:
当一个Job中构建已完成并生成了一个未发布的目标构件,如果您准备评估此次构建的稳定性,Jenkins会基于一些后处理器任务为构建发布一个稳健指数 (从0-100 ),这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分析(FindBugs)。分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。
当前作业主页上还包含了一些有趣的条目。左侧栏的链接主要控制Job的配置、删除作业、构建作业。右边部分的链接指向最新的项目报告和构件。
通过点击构建历史(Build History)中某个具体的构建链接,就能跳转到Jenkins为这个构建实例而创建的构建主页上。如下图:
如果你想通过视图输出界面来监控当前任务的进展情况。你可以单击Console Output(控制台输出)。如
果工作已完成,这将显示构建脚本产生的静态输出;如果作业仍然在运行中,Jenkins将不断刷新网页的内容,以便您可以看到它运行时的输出。如下图:
这是因为jenkins和jdk版本不对应引起的。我这里用的是jdk1.7,所以下载版本http://pkg.jenkins-ci.org/redhat/jenkins-2.33-1.1.noarch.rpm(jenkins下载地址:http://pkg.jenkins-ci.org/redhat/), 原先现在2.5版本以上,版本太高,启动报“java.lang.UnsupportedClassVersionError”错,所以要卸载之前安装的jenkins-2.54-1.1.noarch,使用如下命令
“
控制台输出
Started by user admin
[EnvInject] - Loading node environment variables.
Building in workspace /home/jenkins/workspace/My_cache
Updating https://ip地址/svn/iptv/新业务//code/ad-gx-cache at revision '2017-07-17T14:14:11.377 +0800'
Using sole credentials hehaitao/****** in realm ‘
At revision 68144
No changes for https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache since the previous build
[workspace] $ ant -file checkstyleBuild.xml -DBUILD_NUMBER=8
ERROR: command execution failed.Maybe you need to configure the job to choose one of your Ant installations?
[CHECKSTYLE] Skipping publisher since build result is FAILURE
[FINDBUGS] Skipping publisher since build result is FAILURE
Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered
Finished: FAILURE
”
这是由于没有成功全局配置ant的环境变量没有配置成功导致,请确保环境Ant环境变量配置成功,并且在Global Tool Configuration正确添加了Ant的路径,这个可以参见2.2及3.4.2
“
控制台输出
Started by user admin
[EnvInject] - Loading node environment variables.
Building in workspace /home/jenkins/workspace/My_cache
Updating https://ip地址/svn/iptv/新业务//code/ad-gx-cache at revision '2017-07-17T15:33:26.714 +0800'
Using sole credentials hehaitao/****** in realm ‘
At revision 68151
[workspace] $ /home/lutong/apache-ant-1.9.9/bin/ant -file checkstyleBuild.xml -DBUILD_NUMBER=11
Error: JAVA_HOME is not defined correctly.
We cannot execute java
Build step 'Invoke Ant' marked build as failure
[CHECKSTYLE] Skipping publisher since build result is FAILURE
[FINDBUGS] Skipping publisher since build result is FAILURE
Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered
Finished: FAILURE
”
这是由于没有成功全局配置JDK的环境变量没有配置成功导致,请确保环境Ant环境变量配置成功,并且在Global Tool Configuration添加的JDK路径正确,这个可以参见2.4.1及3.4.3
在配置“源码管理”时,如果Credentials 不选择或者选择了验证不正确,会出现这个错误,请参见3.4.4及4.2.3
“
Checking out https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache at revision '2017-07-17T17:46:17.618 +0800'
Using sole credentials hehaitao/****** in realm ‘
ERROR: Failed to check out https://ip地址/svn/iptv/新业务//code/ad-gx-cache
org.tmatesoft.svn.core.SVNException: svn: E204899: Cannot create new file '/home/jenkins/workspace/广西开机广告/.svn/lock': 权限不够
No changes for https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache since the previous build
Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows 和 Linux 系统)中编译、测试等
节点的创建及配置
点击 系统管理 -> 节点管理 -> 新建节点 ,用于创建节点:
输入节点名称,选择固定节点,点击确定:
设置完成,点击保存。
启动节点
启动节点方式有 2 种,分别是
任意一种方式启动即可,节点启动成功,刷新节点页面,可以看到节点已经上线。
job 中配置节点信息
勾选“限制项目的运行节点”,将之前节点的标签写到此处,这个配置会使之后的构建都会在限制的节点上进行:
7:jenkins权限控制
在一个企业内部,可能存在多个运维人员,而这些运维人员往往负责不同的项目,但是有可能他们用的又是同一个 jenkins 的不同用户,那么我们就希望实现不同的用户登录 jenkins 可以看到不同的项目
jenkins 提供了简单的权限管理,我们可以在“系统管理”—>“全局安全配置” 看到,但是这里的权限配置太过简略,显然无法满足我们的需求,所以我们需要 jenkins 的一个插件 Role-based Authorization Strategy 来实现精准的权限控制
在“系统管理”—>“插件管理”里安装此插件
安装好插件后,重启 jenkins 后再度打开 “系统管理”—>“全局安全配置” 可以看到多了我们刚刚安装的插件,将授权策略勾选为“Role-Based Strategy”然后点“保存”
同时在“系统管理”中也多了“Manage and Assign Roles”菜单,在此处即可设置角色和权限
我们查看一下现有的项目,如下图,根据不同的前缀主要分为四类(前缀为:jxzhzy、wisdom、writecode、zbkt)我们需要实现给test01分配前缀为 jxzhzy 的项目,给test02分配剩下的三个前缀项目
1、进入“系统管理”—>“管理用户”—>“新建用户”依次创建 test01、test02 两个用户
2、打开“系统管理”—>“Manage and Assign Roles”这里我们主要用到上面两个菜单,我们先进入“Manage Roles”
一个用户想要能正常控制项目,就必须要有两种角色“Global roles”和“Item roles”
首先添加一个全局角色 baserole 并勾选全部的 Read 权限
然后添加“Item roles”此处相当于是给角色赋予项目权限,这里我将角色的名称设置成和用户名一致,这样方便给每个用户精准指定项目,在 Pattern 中可以使用正则表达式来匹配项目,多个项目使用竖线 | 分割、
最后记得点左下角的“Save”保存
3、进入“Assign Roles”此处是将用户和角色关联起来,在“Global roles”部分添加用户 test01、test02 并且勾选中 baserole 角色
在“Item roles”中添加test01用户并和test01角色关联,添加test02用户并和test02角色关联
最后记得点左下角的“Save”保存,至此设置已经完毕
4、测试效果,登陆 test01 用户,如下图,只能看到前缀为 jxzhzy 的项目
登陆 test02 用户,只能看到其它三种前缀的项目
一.进入安全配置界面
首页后点击进入系统管理(Manage Jenkins)
——下拉下方看到安全配置(Configure Global Security)
——进入安全配置界面
二,详解安全配置的选项作用
1.启用安全(Enable security):
启动此项,必须使用“用户名/密码”登录才能配置和执行构建。如果Jenkins在内网环境(或者是一个"可信任"的环境),通常会禁用此项,以便项目开发人员能够配置他们自己的项目,而不用麻烦管理员 ; 如果Jenkins暴露在公网环境,你最好启用此项,Jenkins如果在一个不安全的环境下可能会遭到黑客的攻击.
2.JNLP节点代理的TCP端口(TCP port for JNLP agents):
Jenkins使用一个TCP端口和JNLP节点代理通讯. 通常这个端口号是随机选取的,以避免冲突,但是这对于系统来说是不固定的.如果不使用JNLP节点代理, 推荐禁用TCP端口.另一种选择就是指定一个不变的端口号,以便防火墙做对应的设置. 这里如果没有出现问题,建议不要更改,直接默认随机选取就可以
3.禁用记住我(Disable remember me):
浏览器记住账户密码
4.访问控制(Access Control):
设置可给Jenkins的用户设置权限,使某些用户无法使用某些功能,或者直接无法登录系统。
访问控制有两个子选项:
(1)安全域(Security Realm) :决定用户名和密码,且指定用户所属的组。
委托给servlet容器 (Delegate to servlet container):
#委托给servlet容器如果你的Jenkins 运行在像Tomcat或GlassFish 等服务器上,这些服务器本身就有安装控制,选择这种安全策略,就可以非常管理地让服务器接管Jenkins的安全缺控制问题。
Jenkins专有用户数据库(Jenkins’ own user database)
#Jenkins本身有个数据库来管理用户,不过这个数据库的容量比较小,当有大量用户时,这种策略就不合适。在这种策略下,如果允许任何人通过注册Jenkins的形式,可以勾”允许用户注册“。这样非用户在进入Jenkins界面后,可以通过 点击右上角的“注册”按钮进行注册,然后再登录使用Jenkins。 如果不允许他人随便注册和使用该Jenkins,就要取消“允许用户注册”复选框。此时如果想添加新的用户,只能由已注册用户(或管理员)通过"系统管理"—>管理用户 —>新建用户进入 “Jenkins专有用户数据库”界面,通过点击”创建新用户“来注册新的用户
LDAP插件认证
#LDAP 可以实现用户的统一管理而无须再次创建用户,如果用户需要操作权限,则在 Configure Global Security 中添加权限即可,添加完成之后只需输入 ldap 账户密码即可登录
Unix用户/组数据库(Unix user/group database)
2、授权策略(Authorization):分配用户执行某些操作的权限。
任何用户可以做任何事(没有任何限制)
登录用户可以做任何事
遗留模式 :适用于Jenkins1.164以前的版本.也就是说,如果你是"admin"角色,那么你将拥有Jenkins的一切控制权,其它角色(包括匿名用户) 只有查看权限.
Markup Formatter
选择job description写的html代码是显示代码还是显示html源码。选择raw HTML的时候,显示的是自己写的源代码。选择escaped HTML的时候,显示的是html的源码。
防止跨站点请求伪造
跨站点请求伪造(或CSRF/XSRF),它是一种利用你的身份通过未经授权的第三方手段在网站上执行操作.对于Jenkins进行删除任务,构建或者更改配置. 当启用此项,Jenkins会检查临时生成的值,以及任何导致Jenkins服务器改变的请求.这包括任何形式的提交和远程API调用.
Enable Slave → Master Access Control
允许子节点控制父节点,具体有哪些权限可以被子节点控制。可以在一个通过点击rules can be tweaked here 这句话中的here来设置。