在Grafana中可视化Jenkins管道结果
这次我描述了一些稍微轻松的话题,与之前的一些帖子相比。就个人而言,我认为Grafana是一个非常酷的工具,用于可视化任何时间轴数据。事实证明,使用InfluxDB插件存储和可视化Jenkins构建结果非常容易。
1.启动码头工人集装箱
让我们从使用Grafana,InfluxDB和Jenkins开始所需的docker容器开始。
1
2
3
|
docker run -d --name grafana -p 3000:3000 grafana /grafana docker run -d --name influxdb -p 8086:8086 influxdb docker run -d --name jenkins -p 38080:8080 -p 50000:50000 jenkins |
然后,您可以运行链接到InfluxDB容器的客户端容器。使用此容器,您可以使用命令创建新数据库CREATE DATABASE grafana
。
1
|
docker run -- rm --link=influxdb -it influxdb influx -host influxdb |
2.配置Jenkins
启动Jenkins后,您需要下载一些插件。对于此示例,它应该是以下插件:
如果您对有关Jenkins配置和持续交付的更多详细信息感兴趣,请查看我之前关于该主题如何设置持续交付环境的文章。
在Manage Jenkins - > Configure System部分中添加新的InfluxDB目标。
3.在詹金斯建设管道
使用Jenkins Pipeline Plugin,我们使用Groovy语法构建管道。在第一步(1)中,我们从GitHub签出项目,然后使用Maven(2)构建它。然后我们发布JUnit和JaCoCo报告(3),最后将整个报告发送到InfluxDB(4)。
1
2
3
4
五
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
三十
|
node { def mvnHome try { stage( 'Checkout' ) { //(1) mvnHome = tool 'maven3' } stage( 'Build' ) { //(2) dir( 'service-1' ) { sh "'${mvnHome}/bin/mvn' -Dmaven.test.failure.ignore clean package" } } stage( 'Tests' ) { //(3) junit '**/target/surefire-reports/TEST-*.xml' archive 'target/*.jar' step([$ class : 'JacocoPublisher' , execPattern: '**/target/jacoco.exec' ]) } stage( 'Report' ) { //(4) if (currentBuild.currentResult == 'UNSTABLE' ) { currentBuild.result = "UNSTABLE" } else { currentBuild.result = "SUCCESS" } step([$ class : 'InfluxDbPublisher' , customData: null , customDataMap: null , customPrefix: null , target: 'grafana' ]) } } catch (Exception e) { currentBuild.result = "FAILURE" step([$ class : 'InfluxDbPublisher' , customData: null , customDataMap: null , customPrefix: null , target: 'grafana' ]) } } |
我从样本中为每个模块定义了三个管道。
4.建筑服务
添加jacoco-maven-plugin
Maven插件以pom.xml
启用代码覆盖率报告。
1
2
3
4
五
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
< plugin > < groupId >org.jacoco</ groupId > < artifactId >jacoco-maven-plugin</ artifactId > < version >0.7.9</ version > < executions > < execution > < id >default-prepare-agent</ id > < goals > < goal >prepare-agent</ goal > </ goals > </ execution > < execution > < id >default-report</ id > < phase >prepare-package</ phase > < goals > < goal >report</ goal > </ goals > </ execution > </ executions > </ plugin > |
GitHub上提供了示例应用程序源代码。它由三个简单的模块组成,它们没有做任何重要的事情,但只有构建结果可视化所需的JUnit测试。
5.配置Grafana
首先,将Grafana数据源配置为InfluxDB Docker容器实例。
使用InfluxDB插件,我们可以报告由JUnit,Cobertura,JaCoCo,Robot Framework和Performance Plugin生成的指标。在示例应用程序中,我将向您展示JUnit和JaCoCo的报告。让我们在Grafana中配置我们的图表。如下图所示,我使用管道构建时间数据定义了图形。结果按项目名称分组。
这是两张图。第一个以毫秒为单位说明每个管道构建时间数据,第二个百分比测试代码覆盖率。对于测试覆盖,我们需要从jacoco_data表中选择而不是jenkins_data,然后选择字段jacoco_method_coverage_rate。
有关使用Grafana和InfluxDB可视化指标的更多详细信息,请参阅我之前的文章使用Grafana和InfluxDB自定义指标可视化。
在Grafana中可视化Jenkins管道结果的更多相关文章
- 在Jenkins管道中添加Webhook
你有没有尝试过在Jenkins中添加GitHub webhook?在这篇博客中,我将演示在您的管道中添加webhook的最简单方法. 首先,什么是webhook?webhook的概念很简单.webho ...
- 记一次在Grafana中使用Worldmap Panel的经历
背景 因与工作相关,以下内容皆做了脱敏处理 主要的需求是要根据地理位置查看可视化的数据. 安装及创建 安装命令来源于官网 grafana-cli plugins install grafana-wor ...
- incubator-dolphinscheduler 如何在不写任何新代码的情况下,能快速接入到prometheus和grafana中进行监控
一.prometheus和grafana 简介 prometheus是由谷歌研发的一款开源的监控软件,目前已经贡献给了apache 基金会托管. 监控通常分为白盒监控和黑盒监控之分. 白盒监控:通过监 ...
- Python-Jenkins API使用 —— 在后端代码中操控Jenkins
最近在工作中需要用到在后台代码中触发Jenkins任务的构建,于是想到Jenkins是否有一些已经封装好的API类库提供,用于处理跟Jenkins相关的操作.下面就简单介绍下我的发现. Linux C ...
- 在centos中安装jenkins master测试环境
在centos中安装jenkins 1)安装目录 pwd (/home/AAA) 2)检查java是否安装 [AAA@Centos_AAA jenkins]$ java -version j ...
- docker中搭建jenkins环境
想在docker中搭建一个jenkins环境.开始的时候我想在先pull centos,然后在里面自己搭建环境,搭建后的环境可以运行,但是不知道挂载哪的数据,这也是我不熟悉jenkins的原因. 同事 ...
- C#中使用命名管道进行进程通信的实例
原文:C#中使用命名管道进行进程通信的实例 1 新建解决方案NamedPipeExample 在解决方案下面新建两个项目:Client和Server,两者的输出类型均为"Windows 应用 ...
- 在centos中部署jenkins
在centos中部署jenkins,需要的环境:安装jdk,Apache-tomcat 这两步我前面文章里已写,再次忽略 到官网下载最新的jenkins 我这里的是 jenkins.war 把该文件 ...
- Grafana中多租户设置
Grafana中通过设置不同的组织,以及将用户分配到不同组织,来做到多租户,类似门户的概念. Grafana默认是不允许非管理员用户创建新的组织的,这个可以通过修改配置文件以允许非管理员用户创建组织: ...
随机推荐
- 我理解的MVCC内部实现原理
MySQL InnoDB存储引擎,实现的是基于多版本的并发控制协议——MVCC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lo ...
- 手把手教你生成二维码-google.zxing
一.目标 输入网址,生成网址的二维码 二.概况 1.效果:UI丑,但功能实现了 2.项目目录 三.用到的第三方资源 1.google的扫码包zxing 2.JQuery 四.步骤(用myEclipse ...
- EZOJ #257
传送门 分析 先进行缩点 之后从终点倒着跑 对于一组边如果有一个点不能到达则这组边直接废掉 最后看只用没废掉的边能不能从起点走到终点 代码 #include<iostream> #incl ...
- [模板]割点(tarjan)
洛谷P3388 注意:记得tarjan的打法 注意割点的判断条件:子节点个数>2并且为根节点 当它不为根节点时并且low[to]>dfn[u] 判断时是在子节点未被记录的时候 #incl ...
- centos踩坑指南之安装composer
composer是php的一个依赖管理器,那么安装composer可以快速编译php 但是在centos7以上 安装composer的有一个步骤有个小问题 对于centos6来说是 sudo mv c ...
- Web测试实践--Rec 3
累计完成任务情况: 阶段内容 参与人 根据功能性分析得出结论 小梁 对被测系统进行功能性分析 小龙.小黄 进行用户调研 小熊 开会学习作业要求,取得共识 全体 注: 1."阶段内容" ...
- css基础 引用方式 标签选择器 优先级 各式布局
今天讲的css基础,了解了css即层叠式表,是美化网页,控制页面的样式. 样式表引进网页的3种方式1内联式,语法例子:<div style="width: 100px;height: ...
- 洛谷P1501 [国家集训队]Tree II(打标记lct)
题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原有的 ...
- 第一课 了解SQL
1.1数据库基础 数据库:数据库是一个以某种有组织的方式存储的数据集合,可以想象是一个文件柜 数据库管理软件:DBMS用来操做创建数据库的软件 表:某种特定类型数据的结构化清单,数据库的下一层就是表 ...
- [LeetCode 题解]: Roman to Interger
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a ro ...