zoukankan      html  css  js  c++  java
  • 在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目标。

    grafana-2

    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'])
        }
    }

    我从样本中为每个模块定义了三个管道。

    grafana-5

    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容器实例。

    grafana-1

    使用InfluxDB插件,我们可以报告由JUnit,Cobertura,JaCoCo,Robot Framework和Performance Plugin生成的指标。在示例应用程序中,我将向您展示JUnit和JaCoCo的报告。让我们在Grafana中配置我们的图表。如下图所示,我使用管道构建时间数据定义了图形结果按项目名称分组。

    grafana-4

    这是两张图。第一个以毫秒为单位说明每个管道构建时间数据,第二个百分比测试代码覆盖率。对于测试覆盖,我们需要从jacoco_data表中选择而不是jenkins_data,然后选择字段jacoco_method_coverage_rate

    grafana-3

    有关使用Grafana和InfluxDB可视化指标的更多详细信息,请参阅我之前的文章使用Grafana和InfluxDB自定义指标可视化

     
    广告
  • 相关阅读:
    MVC 传值
    LINQ to SQL 语句(2)之 Select/Distinct
    LINQ to SQL 语句(1)之 Where
    输入变量相同情况下,结果不正确
    vmware ubuntu 切换终端命令行
    汉字编码问题
    Windows API所提供的功能可以归为七类
    比较好的c++博文
    环境和库的引入
    C#调用Fortran生成的DLL的方法报内存不足
  • 原文地址:https://www.cnblogs.com/a00ium/p/10604050.html
Copyright © 2011-2022 走看看