TeamCity
 
You are viewing the documentation for an earlier version of TeamCity.

Custom Statistics

Last modified: 20 April 2023

TeamCity provides a number of ways to customize statistics. You can add your own custom metrics to integrate your tools/processes, insert any statistical chart/report into any extension place and so on.

Quick Start



  • An easy way to add custom statistics is to just insert a jsp fragment into WebPlace using a helper bean:

    <bean id="myLogoFragment" class="jetbrains.buildServer.web.openapi.SimpleWebExtension" init-method="register">
        <property name="name" value="myLogoFragment"></property>
        <property name="place" value="PAGE_HEADER"></property>
        <property name="jspPath" value="/myLogoFragment.jsp"/>
      </bean>
  • To insert statistics chart into a jsp page:

    <%@taglib prefix="stats" tagdir="/WEB-INF/tags/chart"%>
    <stats:buildChart id="g1" valueType="BuildDuration"/>
  • To add a custom build metric, extend BuildValueTypeBase to just define your build metric calculation method, appearance, and key. After that you can reference this metric by its key in statistics chart/report tags.

More Details



BuildType Statistics tab extension point



Customizing chart appearance



  • width, height — chart image size

  • hideFilters — suppress filter controls

Adding custom metrics



  1. Implement jetbrains.buildServer.serverSide.statistics.ValueType, extend BuildFinishAwareValueTypeBase or CompositeVTB for convenience

  2. Register it using jetbrains.buildServer.serverSide.statistics.ValueProviderRegistry.registerValueProvider

Custom build metrics details



  1. Implement jetbrains.buildServer.serverSide.statistics.build.BuildFinishAware in your ValueType to be notified of build finished event.

  2. Calculate your metric.

  3. Employ jetbrains.buildServer.serverSide.statistics.build.BuildDataStorage.publishValue to publish your value.

  4. Employ jetbrains.buildServer.serverSide.statistics.build.BuildDataStorage.getDataSet to retrieve selected data.