Skip to content

Commit

Permalink
Add auto-merge vs user-merged metrics
Browse files Browse the repository at this point in the history
We want to track how many Dependabot PRs are merged by GOV.UK's Dependabot Merger
and how many are manually merged by developers.

https://trello.com/c/WU7iQOdG/3493-measure-the-number-of-auto-merged-prs-3
  • Loading branch information
MuriloDalRi committed Apr 22, 2024
1 parent 8aa4cf9 commit b083238
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions dependabot_prometheus_metrics.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ def initialize
total_new_prs: 0,
total_closed_prs: 0,
total_merged_prs: 0,
auto_merged: 0,
merged_by_user: 0,
total_open_prs: 0,
open_prs: [],
open_failing_prs: [],
Expand Down Expand Up @@ -120,6 +122,8 @@ def initialize_prometheus_metrics
prs_by_update_type: registry.counter(:prs_by_update_type, docstring: "Number of PRs by update type", labels: %i[update_type]),
prs_per_dependency: registry.counter(:prs_per_dependency, docstring: "Number of PRs per dependency and update type", labels: %i[dependency update_type]),
total_merged_prs: registry.counter(:total_merged_prs, docstring: "Total number of merged PRs"),
auto_merged: registry.counter(:auto_merged, docstring: "Total number of auto-merged PRs"),
merged_by_user: registry.counter(:merged_by_user, docstring: "Total number of PRs merged by users"),
total_closed_prs: registry.counter(:total_closed_prs, docstring: "Total number of closed PRs"),
total_open_prs: registry.gauge(:total_open_prs, docstring: "Total number of open PRs"),
open_prs: registry.gauge(:open_prs, docstring: "Open PRs with their creation date, title, repo, and PR number", labels: %i[created_at title repo pr_number]),
Expand All @@ -138,6 +142,8 @@ def update_prometheus_metrics(prometheus_metrics)

prometheus_metrics[:total_new_prs].increment(by: @metrics[:total_new_prs])
prometheus_metrics[:total_merged_prs].increment(by: @metrics[:total_merged_prs])
prometheus_metrics[:auto_merged].increment(by: @metrics[:auto_merged])
prometheus_metrics[:merged_by_user].increment(by: @metrics[:merged_by_user])
prometheus_metrics[:total_closed_prs].increment(by: @metrics[:total_closed_prs])
prometheus_metrics[:total_open_prs].set(@metrics[:total_open_prs])

Expand Down Expand Up @@ -209,6 +215,14 @@ def run
if pr.pull_request[:merged_at]
timeline_events = get_pr_timeline(repo, pr[:number])

timeline_events.each do |event|
if event[:event] == "merged" && event[:actor][:login] == "govuk-ci"
@metrics[:auto_merged] += 1
else
@metrics[:merged_by_user] += 1
end
end

superseded_pr_events = timeline_events.select do |event|
event[:event] == "cross-referenced" && event[:actor][:login] == "dependabot[bot]"
end
Expand Down

0 comments on commit b083238

Please sign in to comment.