转自:https://www.jianshu.com/p/ef8d3109ac5f    感恩

安装Jenkins

系统环境:CentOS Linux release 7.3.1611 x86_64 GNU/Linux

安装JDK

Jenkins是基于Java开发的持续集成系统(CI),所以运行环境必须安装JDK,安装JDK的方法有很多种,有些Linux系统可能会自带openjdk,需要注意的是较新版本的jenkins并不支持低版本的JDK.

[root@JDu4e00u53f7 ~]# java --version
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)

如果命令的输出如上,则这需要先卸载自带的低版本openjdk,然后手动安装sunjdk,sunJDK1.8 官网下载地址,下载.rpm和.tar.g格式的安装包都可以,但是要注意jdk位数。

jdk-8u11-linux-x64.tar.gz百度云 密码: 7kxw

我在安装的时候,遇到了一个坑,截至到目前,JDK最新版本为9.0.1,但是Jenkins最新版本v2.86并不支持JDK 9。官方说明如下:

Jenkins packages (deb IIRC) declared a Java 7+ dependency, in some configurations that resulted in Java 9 being downloaded.We no longer declare Java dependencies for that reason, as Jenkins does not work with Java 9.

使用JDK9,安装Jenkins后可能会遇到下面的错误。

下载成功后,上传到服务器,JDK安装步骤如下:

[root@JDu4e00u53f7 ~]# cd ~
[root@JDu4e00u53f7 ~]# mkdir /usr/java
[root@JDu4e00u53f7 ~]# mv jdk-8u11-linux-x64.tar.gz /usr/java/
[root@JDu4e00u53f7 ~]# tar -zxvf jdk-8u11-linux-x64.tar.gz ···配置全局环境变量(所有用户均可用)···
[root@JDu4e00u53f7 ~]# vi /etc/profile
添加如下内容:JAVA_HOME根据实际目录来export JAVA_HOME=/usr/java/jdk1.8.0_11export JRE_HOME=/usr/java/jdk1.8.0_11/jreexport CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH···重载配置文件···
[root@JDu4e00u53f7 ~]# source /etc/profile

安装完成后使用java - -version可以查看安装情况:

可能出现的错误信息:bash:./java: cannot execute binary file , 出现这个错误的可能原因是你在32位的操作系统上安装了64位的JDK.

安装Jenkins

Jenkins下载地址,推荐下载war包,如果对版本没特别要求,直接下载最新版本就好。The lastest version 为2.86,以下所有的介绍和说明都是基于此版本,Jenkins迭代速度非常快,若版本不同,页面可能会有区别。

Jenkins release

安装Jenkins的方式有两种 : 如果服务器上已安装了Servlet容器,如Tomcat, 直接把war包放到webapps目录下,然后启动Tomcat就可以了;如果服务器没有安装Servlet容器,那也没有关系,因为Jenkins的war包里内置了Jetty,只需运行以下命令:
java -jar jenkins.war --httpPort=8080
--httpPort用来指定Jenkins服务端口,默认8080 ,如果该端口已被占用,则可以用来更换端口。运行命令行后,当在终端的启动日志中看到这行信息时: INFO:Jenkins is fully up and running, 代表Jenkins服务已经启动。

结合Linux nohup& 命令,我们可以让Jenkins服务永久的在服务器后台运行。
nohup java -jar jenkins.war --httpPort=8080 &
其中, nohup用来不挂断的运行命令(即忽略挂起信号,永久执行命令), & 加在结尾来让命令在后台运行,所以 nohup command & 的合起来使用的意思就是让command 永久的在后台执行。

可通过Jobs命令查看后台运行任务,如果想将某个程序调回前台控制,只需要 fg + 编号 即可,此时如果要终止程序,只需Ctrl+C 即可退出程序。

[1]+  Running         nohup java -jar jenkins.war --httpPort=8080 &$ fg 1
nohup java -jar jenkins.war --httpPort=8080

Jenkins启动成功后,剩下的配置工作将全部在浏览器中进行,十分方便。

配置Jenkins

在浏览器上输入网址访问Jenkins: http://IP:Port ,如:http://localhost:8080

解锁服务

第一次启动Jenkins时,需要验证账户。只需要在给出的文件路径下将密码拷贝一份到表单中即可验证完成。
$ cat /root/.jenkins/secrets/initialAdminPassword

image

Customize Jenkins

正常情况下,会进入安装插件页面。点击Install suggested plugins,安装Jenkins建议安装的插件。

image

image

如果在进入这一步时,遇到了Offline问题,没有关系,这是由于你的Jenkins服务器没有科学上网,点击跳过插件安装就好,后续我们可以自行安装插件,详见下文“安装插件”部分的内容。

image

Create First Admin User

配置管理员用户账号/密码,这个账号密码一定要保存好,不然补救措施比较麻烦。

image

完成确认后,点击Start using Jenkins,进入Jenkins使用页面!

image

补充:Jenkins的配置信息已经插件都会放到 ~/.jenkins/ 目录下,这个也是Jenkins的主目录,它默认是隐藏的。所以如果需要重新初始化安装Jenkins ,只需要清理掉 ~/.jenkins目录即可。

image

关闭/重启Jenkins

我们用jar -jar jenkins.war 来启动jenkins服务器后,可以使用以下方法关闭或重启Jenkins服务。

关闭Jenkins 服务

只需要在访问Jenkins的url地址后加上exit,如http://localhost:8080/exit , 回车后会跳转到以下页面,点击Retry using POST按钮,即可关闭Jenkins.

image

重启Jenkins 服务

将上面的exit改为restart后就可以重新启动jenkins服务器。

重载Jenkins配置文件

将上面的restart改为reload就可以实现重新加载Jenkins配置信息。

安装插件

Jenkins安装插件时,既可以选择在线安装,也可以离线安装。

在线安装

在线安装首先要保证Jenkins服务器可以上网。安装方法为:点击 ‘系统管理(Configure System)->插件管理(Manage Jenkins),选择可选插件,搜索需要的插件后直接安装即可。

image

image

​ 如果出现插件无法安装或安装失败的情况,尝试修改Jenkins配置文件(.jenkins/是隐藏目录):
$ vi .jenkins/hudson.model.UpdateCenter.xml

把'https'修改为'http'后,重载Jenkins配置信息。

image

如果仍不能解决问题,可能是Jenkins源的问题,可以尝试换一个源码,打开刚才的配置文件,把URL换成http://mirror.esuni.jp/jenkins/updates/update-center.json ,重启Jenkins,查看是否可以成功安装插件。

若以上方法都不能解决问题,请尝试插件离线安装方法。

离线安装

首先下载所需的Jenkins插件, 然后打开:系统管理-插件管理-高级,点击上传插件,选择扩展名为.hpi的插件。

image

上传成功后,插件自动安装。安装成功后,重启Jenkins后生效。

image

离线安装插件时,可能会因为依赖缺失的问题而导致安装失败。出现该种问题时,可以在Jenkins终端的输出日志中找到依赖的插件,先安装需要的依赖后,再安装插件。

由于是和rf集成,所以这里需要下载插件Robot Framework Plugin ,插件介绍详见Jenkins Wiki .

image

配置Slave

创建Slave

启动Jenkin服务的这台机器在Jenkins中被称为Master,而其他连到Master上的机器(物理机或虚拟机)被称为Slave. Master/Slave相当于 Server 和 Agent 的概念。Master 提供web接口让用户来管理 Job 和 Slave,Job 可以运行在Master本机或者被分配到Slave上运行。一个Master可以关联多个Slave用来为不同的Job或相同的Job的不同配置来服务。

image

进入系统管理->管理节点页面点击左侧的新建节点,输入节点名称,并选择固定代理(Dumb Slave),如果已经添加过节点了,也可以选择复制现有节点,It doesn't matter.

image

点击OK后进入有节点设置页面,此页面上有一些配置项,概要说明如下。

image

  • 并发构建数(# of executors): 这个值控制着Jenkins并发构建的数量,如果是UI测试的Job,最好只允许1个,其他的可以设置为多个;

    image

  • 远程工作目录: 设置此节点远程工作目录的路径,在这个节点上运行的Job都会保存到工作目录里,此配置项必须设置;

image

  • 标签:作用等同于robot framework中的tags, 可以设置Jobs只在特定的执行机上运行。如果指定固定的某个Slave,可能上面已经有Job在运行了,此时就要等待了;但是如果有一批Slave使用同一个tag,只要此处配置Job要运行到这个tag上,那么哪台Slave空闲就会在哪台机器上执行。

    image

  • 用法: 控制Jenkins如何在这台机器上安排构建,只有两个选项;

    image

  • 启动方式: 设置Jenkins Master如何启动Slave agents,当Job被分配到Slave上运行的时候,此时Master和Slave其实是建立的双向字节流的连接。默认情况下,是没有"通‘过Java web启动代理"这一选项的,需要手动配置Jenkins。

image

配置Jenkins使其支持通过Java web启动代理的方法如下:

  1. 打开首页-系统管理-全局安全配置(Configure Global Security);

  2. 代理 - TCP port for JNLP agents设置为“随机选取”;

image

  1. 点击代理协议,勾选全部选项;

    image

  2. Hidden security warnings中的Enable Agent需要打钩选中;

    image

保存后,配置节点时就可以看到"通‘过Java web启动代理" 这一选项了。

一般来说,选择通过Java Web这种方式启动Slave agents就可以了,这种方法需要你登录到Slave机器,详尽的启动步骤后面会描述。若在Master上运行cases,通常是隐藏进程运行的,这就导致如果我们的cases有UI层面的部分,很大可能会运行失败,这样的话我们就需要添加一个Slave节点来执行。大多数实际应用中,会有多台机器需要加入Jenkins,所以添加Slave更是必不可少的。

启动Slave

在Slave列表页可以看到,刚才创建的Slave图标上有一个红色的叉号,这代表当前此Slave处于offline状态。点击Slave名称,可以看到Jenkins给出了两种启动的方法,如下:

image

windows系统下,个人觉得第一种方法比较简单,点击【Launch】,会下载一个名为 "Slave-agent.jnlp"的文件,然后双击该文件就可以启动Slave了。

image

正常情况下,此时再去查看Slave列表,会发现图标上面的红叉已经消失了。

image

我的Slave节点的系统为win10,双击启动文件时,会报以下错误:

image

这个问题可能是由于工作目录丢失引起的,需要你在Slave远程工作目录下新建一个名为remoting的文件夹就可以正常启动了。

配置 Job

在Jenkins首页的左侧菜单栏,点击新建任务,输入一个任务名称,并选择“构建一个自由风格的软件项目”,点击确定进入配置Job页面。

image

配置Job页面分为六个部分,分别为General,源码管理,构建触发器,构建环境,构建,构建后操作,下面将会对这几部分的内容分别进行简要的说明。

General

  • 丢弃旧的构建

因为每构建一次Job都会有记录,如果构建次数很多,也可能会占用很多硬盘资源。因此,这个设置就是可以让我们控制丢弃旧的构建。

image

  • 参数化构建过程

    此处可以设置增加一些不同类型的参数,在构建时通过修改这些参数的值,来方便的改动一些配置。比如说用来打包APP的 Job,就可以加上版本号、环境等参数,在运行Jobs时简单的修改参数值,就可以打出指定的版本号和环境等满足条件的安装包。

    image

  • 关闭构建

    选中此项后,将不会执行此项目的新构建,这在某些情况下可能会很有用。

  • 在必要的时候并发构建

    选中此项后,当此项目有多个构建任务时可以并发执行。默认情况下,Jenkins默认是串行构建任务的,其他任何开始构建项目的请求都将保留在构建队列中,直到第一个构建完成为止。

  • 限制项目的运行节点

    选中此项后,需要输入一个标签表达式作为参数,意为指定当前Job只能在指定的Slave上执行。前面介绍Slave的时候也提到了标签,我推荐使用标签。因为如果直接使用Slave名称的话,可能会在Job比较多的时候造成拥堵,而使用标签后,只要是带有这个标签的Slave,哪个空闲就会安排那个执行,这样可以使资源充分利用,提高效率。

源码管理

Job中配置源码管理的前提是Jenkins服务器已经安装了对应的源码管理工具。Jenkins有很多种源码管理工具可以选择,但是需要下载响应的插件才可以,比如git,则需要安装Git client plugin 和 Git plugin插件。

image

其实,此处没有设置版本管理工具也不是不行,这样的话就需要手动去做更新的动作,加大了人力成本,Jenkins也不推荐这样做。如果大家的Cases使用了版本管理,这样在Cases更新后,Job就会自动Fetch最新的代码来运行,十分方便。

SVN(Subversion)

image

  • Repository URL :SVN库的地址;

  • Credentials: 证书设置,点击查看具体步骤;

  • Local module directory : 指定一个本地目录作为SVN检出到本地路径,可以为空。

  • Repository depth:需要检出的文件夹深度,默认设置为infinity(无穷大);

这几个配置好了,基本上就可以使用了。如果有多个不同的SVN库要检出的话,可以点击"Add moudle"来添加新的配置。

Git

Git的配置比较简单,只需要配置好Repository URL(Git库地址),Credentials(证书),并选择一个分支就可以了。

image

构建触发器

可以手动来触发一个构建,也可以通过触发器来自动构建,这里的设置需要根据项目情况自行考虑设置。设置构建触发器时,支持同时设置多个不同类型的触发器;

  • Build after other projects are built

    这个选项是在其他Job构建之后,触发当前项目构建。在构建后操作中也有一个"Build other projects"选项,作用其实和这边是一样的。区别就在于,在此处配置,则当前Job是被触发的对象,而在构建后操作配置,则当前项目就是触发者;

    image

    前面提到的"自动编译打包→自动部署→单元测试/代码扫描→自动测试"这一套流程,就是通过在这个地方进行配置的。对于自动化测试的Job来说,如果前面的Job没有构建成功,这里再构建也没什么必要,所以此处的可以选择"只在构建稳定时触发";

  • Build periodically

    此选项需要配置一个时间表达式,让Job在满足时间表达式的情况下执行构建,此处的语法遵循Linux cron服务的时间表达式语法(但有细微差别),并会自动检测语法正确性。点击文本框右边的问号就可以看到语法的帮助说明。

    image

  • Poll SCM

    Poll SCM 这里配置的时间表达式和前一个是完全一样的,只不过这个选项是只有在检测到版本库有更新时,才会触发执行。如果版本库没有更新,即使满足了时间表达式,也不会触发Job的构建。

  • 触发远程构建

    ​PASS.

构建

这里可以选择增加构建步骤,如果Slave是Windows系统,建议选择"Execute Windows batch command"来执行dos命令进行构建,其他平台,如Linux,可以选择"Execute shell",如果项目集成了Ant或Maven,也可以选择对应的选项。

pybot完整的命令行参数,可以在cmd下输入pybot --help查看。

图片.png

构建后操作

构建后操作可选的项同样有很多,根据用户安装的不同插件,可以实现不同的需求,如分析测试结果,发送邮件通知等。

由于我们的Jobs是和rf集成, 所以我们要增加构建后的步骤是Publishes Robot Framework test results, 只有安装了Robot Framework Plugin 插件才会出现该选项,界面如下所示:

image

Directory of Robot output 可以为空,如果前面的pybot命令使用参数-d 指定了输出目录,那么这里也必须要进行设置,否则插件找不到output.xml文件,也就无法解析结果了。所以这里设置的路径是RF运行后产生的xml和html文件所在的目录。

Directory of Robot output 用来设置临界值,一般都设置为100%,表示只要有案例运行失败,则Job的状态就是unstable. 此参数的介绍如下:

Specify thresholds for marking a build unstable or passed. Thresholds are expressed in percentage of tests that passed compared to total amount of tests run. Builds with pass percentage under the blue threshold wild be marked unstable and pass percentage under yellow threshold will yield a failed build.

If "Use thresholds for critical tests only" is selected thresholds will be compared to the pass ratio of critical tests instead of all tests.

配置Jenkins邮件通知

Jenkins本身自带的邮件通知功能较弱,我们可以通过下载'Email Extension Plugin'' 插件来自定义更高级的邮件通知功能。

具体配置步骤,请参照:https://zhuanlan.zhihu.com/p/22810691

【To be continued...】

参考文档

  1. 使用Jenkins进行持续集成, 廖雪峰

  2. linux下利用nohup后台运行jar文件包程序 ,一汪清水

  3. 用Jenkins构建一个新工程,我们一起试一下 ,幕客老师

  4. Jenkins-持续集成平台(安装篇) ,幕客老师

  5. Jenkins入门系列之——01第一章 Jenkins是什么? ,wangmm0218

  6. Jenkins Master/Slave架构, iTech

  7. Jenkins Guided Tour

  8. 基于jenkins搭建一个持续集成服务器,YaiHo

  9. Jenkins常用插件说明(持续更新) ,小学徒V

  10. Jenkins使用教程之关联节点 ,MR_Hanjc

  11. Jenkins 2.19.4默认没有Launch agent via Java Web Start,可通过以下来设置: , jgw2008

  12. jenkins Error performing command: git ls-remote -h , wangfei0904306

  13. Jenkins入门总结 ,iTech

  14. Robot Framework自动化测试修炼宝典[书],齐涛 著

  15. Jenkins的Credentials(证书)管理 ,张侦毅

  16. 配置Jenkins邮件通知, 邓布利多·雪​

作者:Rethink
链接:https://www.jianshu.com/p/ef8d3109ac5f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【Jenkins+RF】从零搭建Jenkins+Robot Framework持续集成环境相关推荐

  1. Jenkins Robot framework 持续集成环境搭建

    为什么我们要引入RF?其实最初我们引入RF是为了能够快速的开展自动化验收测试,为敏捷保驾护航.这其中有个重要的工具Jenkins,同时也是应群里朋友们的要求,这次就来介绍一下RF如何快速便捷的结合Je ...

  2. DevOps实践-从0到1搭建敏捷团队的持续集成环境

    2019独角兽企业重金招聘Python工程师标准>>> 什么是持续集成,持续部署,持续交付 持续集成,是指将代码合并到同一分支,通过编译,测试,打包之后,将程序保存到版本库中的过程. ...

  3. 搭建基于Jenkins, Apache Mesos和Marathon的弹性高可用的持续集成环境

    2019独角兽企业重金招聘Python工程师标准>>> [编者按]持续集成的开发实践是目前的一个热门话题,在本文中,数人科技云平台负责人周伟涛解析其利用开源的Jenkins,Apac ...

  4. Centos+Gitlab+Jenkins 针对.NET项目持续集成环境搭建和自动化部署

    目录 一.前言 二.系统环境 三.Gitlab安装 3.1 安装依赖软件 3.2 开启postfix 3.3 安装Gitlab 3.4 设置服务器IP和端口 3.5 重置并启动GitLab 3.6 浏 ...

  5. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  6. Jenkins+Maven+SVN快速搭建持续集成环境

    Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面看看我们是如何几分钟就快速搭建一个持续集成环境吧. 假设我们目前已经有2个maven项目:entities(J ...

  7. 基于 Jenkins 快速搭建持续集成环境

    持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...

  8. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...

  9. 基于Jenkins快速搭建持续集成环境

    看了园友张善友的博文,尝试成功.便有此作.原网址: 基于 Jenkins 快速搭建持续集成环境 天下事有难易乎?为之,则难者亦易矣:不为,则易者亦难矣. 首先要学会使用MSBuild构建脚本 附网址: ...

最新文章

  1. 活动 | 人工智能产学研生态建设研讨会报名开启
  2. disruptor 介绍
  3. 前端学习(1947)vue之电商管理系统电商系统之使用自定义模板渲染
  4. c#泛型的使用性能测试
  5. java录音程序_record类完成语音信号采集的任务_Android实现语音数据实时采集、播放...
  6. vue快速复制快捷键_vue快捷键.doc
  7. 【批处理学习笔记】第二十五课:间接传递
  8. unity如何做一个可以打开关闭的门?
  9. SSD固态硬盘一键分区后如何检测4K对齐?
  10. c语言大学生信息管理系统实验报告,c语言学生信息管理系统实训报告
  11. 数据分析面试:业务题
  12. 目标检测论文综述(一)深度卷积神经网络
  13. x264码率控制-帧duration计算
  14. 计算机网络安全需求包括哪些内容,什么是网络安全?网络安全包括哪几个方面?...
  15. 苹果手机配对手表总是显示服务器,苹果手表配对失败,为什么iwatch跟手机总是配对...
  16. 常见网络延迟测量方法
  17. Qt的简单应用:五子棋游戏
  18. c语言大地坐标转换空间坐标,空间直角坐标系与大地坐标系转换程序
  19. Windows OpenGL 图像褐色
  20. 苹果 CMS 搭建视频网站,定时采集视频

热门文章

  1. matlab2014simulink中的三相晶闸管整流桥怎么找_软启和变频回路断路器该怎么选择?...
  2. USB Type-C手机转(USB2.0数据传输)音频/网口+快充方案简介
  3. 烤星 · DeFi 课堂丨如何理解 DeFi 项目中的治理代币?(上)
  4. 17下列命令中_哪个命令是java的编译命令?,下列命令中,哪个命令是Java的编译命令?A.java cB.javaC.java docD.applet viewer...
  5. “山空水尽疑无路,柳暗花明又一村?”
  6. 数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户...
  7. 银行行业基于华为 OceanStor Dorado 18500 V6 高端存储的两地三中心容灾解决方案设计
  8. pandas对重复日期取均值合并再放回dataframe里
  9. 离子色谱-天然矿泉水中F-和Cl-的测定
  10. AI机器人小芝,软件下载和讲解