这次我描述了一些稍微轻松的话题,与之前的一些帖子相比。就个人而言,我认为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-pluginMaven插件以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管道结果的更多相关文章

  1. 在Jenkins管道中添加Webhook

    你有没有尝试过在Jenkins中添加GitHub webhook?在这篇博客中,我将演示在您的管道中添加webhook的最简单方法. 首先,什么是webhook?webhook的概念很简单.webho ...

  2. 记一次在Grafana中使用Worldmap Panel的经历

    背景 因与工作相关,以下内容皆做了脱敏处理 主要的需求是要根据地理位置查看可视化的数据. 安装及创建 安装命令来源于官网 grafana-cli plugins install grafana-wor ...

  3. incubator-dolphinscheduler 如何在不写任何新代码的情况下,能快速接入到prometheus和grafana中进行监控

    一.prometheus和grafana 简介 prometheus是由谷歌研发的一款开源的监控软件,目前已经贡献给了apache 基金会托管. 监控通常分为白盒监控和黑盒监控之分. 白盒监控:通过监 ...

  4. Python-Jenkins API使用 —— 在后端代码中操控Jenkins

    最近在工作中需要用到在后台代码中触发Jenkins任务的构建,于是想到Jenkins是否有一些已经封装好的API类库提供,用于处理跟Jenkins相关的操作.下面就简单介绍下我的发现. Linux C ...

  5. 在centos中安装jenkins master测试环境

    在centos中安装jenkins   1)安装目录 pwd (/home/AAA)   2)检查java是否安装 [AAA@Centos_AAA jenkins]$ java -version  j ...

  6. docker中搭建jenkins环境

    想在docker中搭建一个jenkins环境.开始的时候我想在先pull centos,然后在里面自己搭建环境,搭建后的环境可以运行,但是不知道挂载哪的数据,这也是我不熟悉jenkins的原因. 同事 ...

  7. C#中使用命名管道进行进程通信的实例

    原文:C#中使用命名管道进行进程通信的实例 1 新建解决方案NamedPipeExample 在解决方案下面新建两个项目:Client和Server,两者的输出类型均为"Windows 应用 ...

  8. 在centos中部署jenkins

    在centos中部署jenkins,需要的环境:安装jdk,Apache-tomcat 这两步我前面文章里已写,再次忽略 到官网下载最新的jenkins 我这里的是  jenkins.war 把该文件 ...

  9. Grafana中多租户设置

    Grafana中通过设置不同的组织,以及将用户分配到不同组织,来做到多租户,类似门户的概念. Grafana默认是不允许非管理员用户创建新的组织的,这个可以通过修改配置文件以允许非管理员用户创建组织: ...

随机推荐

  1. 回顾2017系列篇(三):UX设计大会,都预示了哪些设计趋势

    2017已接近尾声,在这一年中,无数的UX大会和设计大会在世界各地召开.每一场会议的召开,都是界内精英人士经验的交流和智慧的碰撞.虽然2017年的会议都已过去,但每场会议上的话题探讨,尤其是界内精英们 ...

  2. css确定取消 悬浮底部样式 和 金额 后缀

    .blockquote-bottom { width: 100%; position: fixed; margin: 0; bottom: 0; left: 0; text-align: center ...

  3. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoader

    一直报这个错误 错误原因jar包没有导入到.classes文件下,需要导入到此文件下,因为用的是user library,所以只有逻辑导入,没有实际导入,切换下就好了,具体看如下文章 http://w ...

  4. CodeForces 346A Alice and Bob (数学最大公约数)

    题意:有一堆数,然后有两个人轮流从中取出两个数,这两个数的差的绝对值不在这个集合,然后把这个数放进这个集合,如果哪个人不能拿了,就是输了,问你谁赢. 析:当时连题意都没看好,以为拿出两个数,就不放回了 ...

  5. java IO之File基本操作

    public static void main(String[] args) { // TODO Auto-generated method stub //"G:\\JAVA\\test\\ ...

  6. java学习(六)面向对象 final关键字 多态

    1.被fnial修饰的方法不能被重写,常见的为修饰类,方法,变量 /* final可以修饰类,方法,变量 特点: final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆 ...

  7. Android-显示意图和隐式意图

    显示意图,一般情况下是用于,APP应用自身:组件(Activity,Service,...) 与 组件(Activity,Service,...) 的激活调用: 显示意图,是可以看得到,明确激活哪一个 ...

  8. IIS 7.5 使用appliaction Initialization

    https://blogs.msdn.microsoft.com/amol/2013/01/25/application-initialization-ui-for-iis-7-5/ 待续 正在测试 ...

  9. sonar安装问题记录

    1.启动时日志中提示 Caused by: java.lang.RuntimeException: can not run elasticsearch as root 错误原因:因为安全问题elast ...

  10. docker获取镜像很慢解决办法

    docker pull selenium/hub获取非常慢 可以使用docker中国的官方镜像加速 docker pull registry.docker-cn.com/selenium/hub 官方 ...