持续集成平台Jenkins介绍

目录
持续集成(Continuous integration,CI)是软件开发和发布流程中最重要的组成部分,有利于加快开发进度。Jenkins是常用的持续集成管理工具,本文将简要介绍Jenkins持续集成工具。

持续集成简介

持续集成(Continuous integration,CI)概念由Martin Fowler 于2006年提出:https://martinfowler.com/, 频繁地(一天多次)将代码集成到主干。

Continuous Integration doesn't get rid of bugs, but it does make them dramatically easier to find and remove.
Martin Fowler, Chief Scientist, ThoughtWorks

持续集成好处:

  • 快速发现错误:持续自动化测试,可以快速发现和定位错误,节约时间。
  • 易于定位项目进度,使项目更加透明。
  • 导致更快的发布

Jenkins介绍

Jenkins官网:https://www.jenkins.io/
Jenkins官网文档:https://www.jenkins.io/doc/

Jenkins是免费开源的持续集成管理工具,基于Java开发,可以跨平台运行,提供持续集成和持续交付服务 ( continuous integration or continuous delivery,CI/CD),自动化软件开发流程中的构建、测试和部署工作。Jenkins插件丰富,有超过1000个插件来支持构建、部署自动化,满足任何项目的需要。

持续集成工具比较:https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software

Docker Jenkins安装和启动方法参考:Docker搭建持续集成平台Jenkins

Jenkins更新

进入Manage Jenkins,提示新版本,点击下载 jenkins.war 包。

1. jenkins.war 位置查看

方法1:Manage Jenkins中查看
点击进入Manage Jenkins,找到Status Information,点击System Information,可以查看war包位置

方法2:find命令查找
使用root账号进入容器中后使用find命令查找

[root@server ~]# docker exec -it -u root jenkins bash
root@ed883da9faab:/# find / -name jenkins.war
find: ‘/proc/1/map_files’: Operation not permitted
find: ‘/proc/7/map_files’: Operation not permitted
find: ‘/proc/138/map_files’: Operation not permitted
find: ‘/proc/155/map_files’: Operation not permitted
/usr/share/jenkins/jenkins.war
root@ed883da9faab:/# 

2. 更新容器中的war包

使用root账号进入容器中,备份原来的war包

[root@server ~]# docker exec -it -u root jenkins bash
root@ed883da9faab:/# cd /usr/share/jenkins
root@ed883da9faab:/usr/share/jenkins# mv jenkins.war jenkins.war.bak

将下载的war包复制到容器目录 /usr/share/jenkins 下(注意是在宿主机上操作)

[root@server ~]# docker cp jenkins.war jenkins:/usr/share/jenkins/
[root@server ~]# docker exec -it -u root jenkins bash
root@ed883da9faab:/usr/share/jenkins# ls
jenkins.war  jenkins.war.bak  ref

3. 重启Jenkins

$ docker restart jenkins

刷新页面,登陆,进入Manage Jenkins,可以看到版本更新成功,可以降回原来的版本。

Jenkins配置

系统配置

进入Manage Jenkins -> System Configuration -> Configure System进行系统配置,有很多配置参数可以配置,比如:

  • Jenkins URL:服务器域名
  • 管理员邮箱
  • Github配置
  • 默认 Shell:bash

插件管理

Jenkins插件众多,扩展了很多功能。进入Manage Jenkins -> System Configuration -> Manage Plugins进行插件的管理。

可以先点击Advanced 设置更新网址URL:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

然后进行插件的安装更新操作, 插件的安装方法,在Available中的输入框输入要安装的插件名称关键字进行搜索,选择要安装的插件,点击“Download now and install after restart”进行下载安装。

Jenkins推荐插件:

  • Multiple SCMs plugin
  • Rebuilder
  • Safe Restart Plugin
  • Pipeline
  • Text Finder
  • Blue Ocean
  • Allure

用户权限控制

在Jenkins的初始化安装过程中会先注册一个管理员用户,管理员用户可以创建一般用户,管理员用户具有最高权限。

进入Manage Jenkins -> Security -> Configure Global Security进行安全配置
可以勾选允许用户注册,团队人数较少时,一般建议不勾选,由管理员创建

进入Manage Jenkins -> Security -> Manage Users进行用户管理,可以进行用户删除、修改和添加操作

权限控制在Manage Jenkins -> Security -> Configure Global Security -> Authorization下
可以选择【安全矩阵】(个人权限)或者【项目矩阵】(项目权限)进行权限管理

slave节点管理

在实际工作中,考虑到宿主机资源限制,可以采用多节点的方式,将任务分配到其他节点执行。通过添加多个Jenkins slave节点来执行Jenkins任务, Jenkins运行的主机称为 master节点:

  • 节点上需要配置Java运行环境, Java_Version>1.5
  • 节点支持Windows, Linux,Mac系统

节点添加方式

先查看是否配置了Java运行环境:

[root@server /]# java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
[root@server /]# 

进入Manage Jenkins -> System Configuration -> Manage Nodes and Clouds

1、添加Linux节点
配置节点(注意我配置的slave节点为宿主机):

发现节点连接不成功

查看日志,发现没有known_hosts

/var/jenkins_home/.ssh/known_hosts [SSH] No Known Hosts file was found at /var/jenkins_home/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it.

一种解决方法是,设置认证策略为手动信任

上线成功

2、添加Windows节点
windows节点配置

节点连接方式

第一种方式:点击Launch图标下载,双击运行下载的文件jenkins-agent.jnlp

刷新,上线成功

第二种方式:

java -jar agent.jar -jnlpUrl http://192.168.30.8:8080/computer/slave2/jenkins-agent.jnlp -secret 626402e3eee37788fa41ffa7353a2cc14f269028672a0af206b0f92e6578f364 -workDir "D:\ProgramWorkspace\TestingDemo\jenkins"
# Run from agent command line, with the secret stored in a file:
echo 626402e3eee37788fa41ffa7353a2cc14f269028672a0af206b0f92e6578f364 > secret-file
java -jar agent.jar -jnlpUrl http://192.168.30.8:8080/computer/slave2/jenkins-agent.jnlp -secret @secret-file -workDir "D:\ProgramWorkspace\TestingDemo\jenkins"

启动jenkins时,开启了8080和50000端口(Docker搭建持续集成平台Jenkins),8080端口是jenkins服务器对外URL地址,50000端口为slave节点与jenkins的通讯端口,在默认情况下,基于JNLP的Jenkins代理通过TCP端口50000与Jenkins主站进行通信。

Windows查看50000端口占用:

C:\Users\10287>netstat -aon | findstr "50000"
  TCP    127.0.0.1:50000        0.0.0.0:0              LISTENING       8644
  TCP    192.168.30.100:52297   192.168.30.8:50000     ESTABLISHED     10028

Linux查看端口占用情况:

[root@server /]# lsof -i:8080
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 2787 root    4u  IPv4  51423      0t0  TCP *:webcache (LISTEN)
[root@server /]# lsof -i:50000
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 2775 root    4u  IPv4  50675      0t0  TCP *:50000 (LISTEN)
[root@server /]# netstat -aptn | grep 50000
tcp        0      0 0.0.0.0:50000           0.0.0.0:*               LISTEN      2775/docker-proxy   
[root@haiyong jenkins_home]# 

Jenkins创建项目

创建项目

选择Freestyle project

项目配置

可以发现一个job的组成部分包括:

  • General:项目通用配置
  • Source Code Management:源代码控制,比如Git配置
  • Build Triggers:触发,构建时间配置(定期构建,代码变更构建)
  • Build Environment
  • Build:执行命令,比如执行shell
  • Post-build Actions:执行完成后进行分析,生成报告,发送邮件等

构建完成

查看控制台输出

Jenkins父子多任务运行

任务启动的触发条件:其他任务的运行结果

  • 前驱任务成功的条件下被触发
  • 前驱任务失败的条件下被触发
  • 前驱任务不稳定的条件下被触发

适用于有先后次序关系的任务,比如 部署环境任务,验收测试任务

Jenkins配置成功任务关联

1、新建第一个任务first_test

2、构建

3、新建第二个任务second_test

4、构建,设置触发方式
设置为前驱任务稳定成功的条件下被触发


5、启动第一个任务first_test

控制台输出

可以看到second_test也成功了

前驱任务不稳定的条件下也被触发,可以使用Text Finder插件来构建不稳定条件

Jenkins配置失败任务关联

前驱任务稳定成功的条件下被触发

--THE END--

文章标题:持续集成平台Jenkins介绍
本文作者:hiyo
本文链接:https://www.cnblogs.com/hiyong/p/14406374.html
欢迎关注公众号:「测试开发小记」及时接收最新技术文章!

原文地址:https://www.cnblogs.com/hiyong/p/14406374.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


基础环境、流程图1)流程图jenkinspipeline发布应用2)、jenkins上安装kubectl#主节点上查看kubectl位置[root@k8s01~]#whichkubectl/usr/bin/kubectl#将k8s节点的kubectl文件cp至jenkinsscp10.0.0.101:/usr/bin/kubectl.cp./kubectl/usr/local/bin/kubectl
本节是建立在流水线入门内容的基础上,而且,应当被当作一个参考。对于在实际示例中如何使用流水线语法的更多信息,请参阅本章在流水线插件的2.5版本中的使用Jenkinsfile部分,流水线支持两种离散的语法,具体如下对于每种的优缺点,参见语法比较。正如本章开始讨论的,流水线最
Linuxcentos7安装Jenkins(jenkins-2.227-1.1.noarch.rpm)时遇到问题:1.出现问题1:安装jenkins一直失败,提示Nosuchfileordirectory[helen@linuxprobeJenkins]$sudorpm-ivhjenkins-2.227-1.1.noarch.rpmPreparing...####################
作为一个拥有很多账号的当代美少女,忘记用户名密码什么的是再正常不过的事了。“忘记密码”这一功能给我真的带来了很大的福音啊。但是最近重新使用Jenkins时,看到需要输入用户名密码,顿时脑子一片空白。经过一系列的查找,终于解决了问题,害,只有把方法记下来才是王道,以后妈妈再
Jenkins、GitLab和Maven(Nexus)完成自动构建迈向持续集成持续集成,毋庸置疑的是这是两部分要求,一个是持续一个是集成,那么持续和集成到底表示了什么要求和含义呢?其中的集成比较容易理解就是指开发人员将自己开发的代码不断地交付给全部系统的代码,在Git仓的概念之下也就是不断地
 下载文档https://www.jenkins.io/zh/download/  Debian下载1.下载安装keyhttps://pkg.jenkins.io/debian-stable/jenkins.io.key  
流水线建设从Jenkins部署开始Jenkins是一个独立的开源自动化服务器,可以用来自动化,例如构建、测试和部署软件等各种任务,是一个实现CI(持续集成)的很好的工具。Jenkins可以通过本地系统包、Docker安装,甚至可以在安装Java运行时环境的机器上独立运行。JenkCI/CD的概念谈到持
原因:这种情况是SSHServer中的RemoteDirectory路径不存在。解决方法:重新输入目标服务器中存在的路径。      
什么是持续集成持续集成(Continuousintegration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。通过持续集成,团
Tomcat安装:1.下载Tomcat包:http:/omcat.apache.org/并解压2.启动:双击bin\startup.bat文件浏览器访问:http://localhost:8080/3.Tomcat配置登录:打开confomcat-users.xml文件添加如下代码:<rolerolename="manager-gui"/><userusername="admin"password=&q
文章目录jenkinscron笔记简介H符号(hash的简写)别名例子jenkinscron笔记简介jenkinscron遵循普通cron的语法,略有不同,每行包含五个字段可以使用Tab和空行分割分钟小时日月周0-590-231-311-120-7(0和7都表示周日)可以使用以下操作符为一个字段指定多个值(按照
1.nginx的配置location/jenkinsno{indexindex.htmlindex.htm;proxy_passhttp://127.0.0.1:8081;proxy_connect_timeout3000s;proxy_send_timeout3000s;proxy_read_timeout3000s;prox
1、下载安装插件下载地址:http://files.jetbrains.org.cn/aliyun-oss.hpi在Jenkins中安装插件,请到ManageJenkins->Advanced->Upload,上传插件(.hpi文件)安装完毕后请重新启动Jenkins2、搜索安装jenkins插件安装3、安装完成以后配置阿里云oss账号oss这边设置:(账号的权限也要
首先将构建历史清除Jenkins构建历史删除与重置然后进入Jenkins服务器工作目录oot/.jenkinstar-czvfjobs.tarjobs 将jobs打包将job.tar文件复制到新Jenkins服务器相同目录下解压tar包 tar-zxvfjob.tar登录新JenkinsJenkins-系统管理-读取配置,只有点击了读取配置,原
一、动态生成Slave1.1、简介之前我们都是在物理机或者虚拟机上部署jenkins,但是这种部署方式会有一些难点,如下:主Master发生单点故障时,整个流程都不可用了每个Slave的配置环境不一样,来完成不同语言的编译打包等操作,但是这些差异化的配置导致管理起来非常不方便,维护起来也是
from jenkins import Jenkins# 判断job是否运行结束def build():    job = 'branch-deploy-wap'    params = {        'server_ip': '10.160.30.XXX',        'server_username': 'root',        'server_userpass&#
背景client端执行webUI自动化测试时依赖操作系统上安装了对应的浏览器,并且浏览器与驱动要进行版本的对应——而selenium是可以部署集群,通过远程的方式执行对应的自动化用例,方便高效。原理1、通过代码可知,自动化运行的主类接收了任务id,获取到任务信息后根据任务类型判断进行接口
背景工具选择架构设计及技术实现参数设计断言持续集成测试集编写总结  一、背景1.目前公司发展比较迅速,还处于不停堆业务阶段,所以迭代比较频繁,导致人工回归的成本越来越大2.在有限的测试资源情况下,开发自测的需求占比不低,后端频繁发布容易心里没底
本地pycharm打开项目,运行自动化项目下载项目代码,并用pycharm打开项目gitclonehttps://gitee.com/iread9527/iInterface_python.git进入iInterface_python目录下,cdiInterface_python使用pip3install-rrequirements.txt命令,安装python项目依赖的第三方库使
Jenkins邮件设置一、简介最近有朋友问Jenkins邮件设置的问题,想起来当时也是碰到不少坑,网上看了很多博客说的解决办法根本没有用。最后我解决了这个问题,在此记录一下,希望能够帮助到在网上搜了半天仍然徒劳无功的朋友们,我懂那种失败了一次又一次的感觉,希望能帮到大家。二、配置步