Gitlab 分析传奇

Gitlab analytics legend

当我使用 gitlab 分析图表并将鼠标悬停在条形图上时,有 full 和数字。直觉上我猜这是总时间,但它与栏的高度不匹配。这是什么意思?

编辑以添加更多上下文。 当我在 gradle 中使用并行构建时会发生这种情况,如果我不使用它,该值将与栏的高度匹配。

此值似乎是与该提交关联的管道中的分钟数。

我不清楚这是否有意展示。还不清楚为什么您看到的值似乎与栏不匹配。在我的 self-hosted GitLab 实例以及 GitLab.com 上,我在 CI/CD 分析中没有看到这个弹出窗口,所以我无法在您的屏幕截图中重现该行为。如果您使用的是 self-hosted GitLab 的旧版本,也许这是一个之前已修复的问题。

来自源代码的见解

您可以在 GitLab 存储库中找到描述此值的源代码,位于 pipeline_charts.vue#L197-198:

    timesChartTransformedData() {
      return [
        {
          name: 'full',
          data: this.mergeLabelsAndValues(this.timesChartData.labels, this.timesChartData.values),
        },
      ];
    },

深入挖掘,timesChartData.values 映射到 this.analytics.pipelineTimesValuestimesChartData.labels 映射到 this.analytics.pipelineTimesLabels。这些值在代码中被描述为一个整数数组和一个表示提交短 SHA 的字符串数组——如 this mock data.

中所示

在运行时,此数据从 GraphQL PipelineAnalytics pipelineTimesValuespipelineTimesLabels 字段填充。为这些字段提供的描述不是特别有用:

Field Name Type Description
pipelineTimesLabels [String!] Pipeline times labels.
pipelineTimesValues [Int!] Pipeline times.

查看数据示例

可以用一个GraphQL query to see this data. Using gitlab-org/gitlab作为例子,查询如下:

{
  project(fullPath: "gitlab-org/gitlab") {
    fullPath
    pipelineAnalytics {
      pipelineTimesLabels
      pipelineTimesValues
    }
  }
}

产生以下输出(在撰写本文时):

{
  "data": {
    "project": {
      "fullPath": "gitlab-org/gitlab",
      "pipelineAnalytics": {
        "pipelineTimesLabels": [
          "836b4ef6",
          "673ade85",
          "051de030",
          "d30d33de",
          "05208bea",
          "e72cb586",
          "556589fe",
          "89dec139",
          "95ee5946",
          "48c43849",
          "31858115",
          "ffd81a94",
          "b475ccde",
          "03d0dd43",
          "f4258d22",
          "4faeb29f",
          "68a4263e",
          "230bf3c2",
          "2ecfdfc1",
          "0fa4751d",
          "f1c7d634",
          "05208bea",
          "95ee5946",
          "8628de54",
          "89dec139",
          "31858115",
          "33b2fe92",
          "ffd81a94",
          "30f303fd",
          "403400be"
        ],
        "pipelineTimesValues": [
          0,
          6,
          0,
          0,
          0,
          0,
          1,
          0,
          0,
          12,
          27,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ]
      }
    }
  }
}

如果我 spot-check 提交 673ade85(第二个标签)应该与时间数据点 6(第二个值)对齐。 556589fe(第七个标签)应该映射到值 1(第七个值)。

尽我所能,在这两个提交中看到的数据似乎支持该值映射到管道中的分钟数的断言:

673ade85 的流水线持续了 6 分钟:

556589fe 的流水线持续了 1 分钟: