github.com/munnerz/test-infra@v0.0.0-20190108210205-ce3d181dc989/metrics/configs/weekly-consistency-config.yaml (about)

     1  metric: weekly-consistency
     2  description: Calculate PR consistency for the past week.
     3  query: |
     4    select /* Calculate the probability a commit flaked */
     5      wk,
     6      round(1-sum(flaked)/count(flaked),3) consistency,
     7      count(flaked) commits
     8    from ( /* For each week, count whether a (num, commit) flaked */
     9      select
    10        wk,
    11        num,
    12        commit,
    13        max(if(passed == runs or passed == 0, 0, 1)) flaked,
    14        max(runs) builds
    15      from (
    16        select /* For each week, count runs and passes for a (job, num, commit) */
    17          wk,
    18          max(stamp) stamp,
    19          num,
    20          if(kind = "pull", commit, version) commit,
    21            sum(if(result=='SUCCESS',1,0)) passed,
    22            count(result) runs
    23        from (
    24          SELECT /* Find jobs for the past quarter, noting its commit, week it ran, and whether it passed */
    25            job,
    26            regexp_extract(path, r'pull/(\d+|batch)') as num, /* pr number */
    27            if(left(job, 3) == "pr:", "pull", "ci") kind,
    28            version,
    29            regexp_extract(metadata.value, r'^[^,]+,\d+:([^,"]+)') commit, /* git hash of pr */
    30            date(started) stamp,
    31            date(date_add(date(started), -dayofweek(started), "day")) wk, /* group by week */
    32            result
    33          FROM [k8s-gubernator:build.all]
    34          where
    35            started > date_add(current_timestamp(), -90, "DAY")
    36            and version != "unknown"
    37            and (metadata.key = 'repos' or left(job, 3) == "ci-")
    38            and job in ( /* only consider merge-blocking jobs */
    39              'pr:pull-kubernetes-bazel-build',
    40              'pr:pull-kubernetes-bazel-test',
    41              'pr:pull-kubernetes-e2e-gce',
    42              'pr:pull-kubernetes-e2e-gce-100-performance',
    43              'pr:pull-kubernetes-e2e-kops-aws',
    44              'pr:pull-kubernetes-integration',
    45              'pr:pull-kubernetes-kubemark-e2e-gce-big',
    46              'pr:pull-kubernetes-node-e2e',
    47              'pr:pull-kubernetes-typecheck',
    48              'pr:pull-kubernetes-verify',
    49            )
    50          having kind=='pull'
    51        )
    52        group by wk, job, num, commit
    53      )
    54      group by wk, num, commit
    55    )
    56    group by wk
    57    order by wk
    58  
    59  jqfilter: |
    60    [(.[] | {commits: (.commits|tonumber), consistency: (.consistency|tonumber), wk: .wk})]