lib/release_tools/update_gitaly_merge_request.rb (46 lines of code) (raw):

# frozen_string_literal: true module ReleaseTools class UpdateGitalyMergeRequest < MergeRequest STALE_AFTER = 1.day.ago NOTIFIED_LABEL = 'auto updated' def title "Update Gitaly version" end def labels [ 'automation:bot-authored', 'team::Delivery', 'maintenance::dependency', 'group::gitaly', 'Category:Gitaly', 'type::maintenance' ] end def target_branch Project::Gitaly.default_branch end def fresh? return false unless exists? Time.parse(remote_issuable.created_at) >= STALE_AFTER end def notifiable? return false unless exists? return false if fresh? # When we first consider the merge request stale, a specific label is # applied. Checking for the label prevents us from sending multiple # notifications for the same merge request. remote_issuable.labels.exclude?(NOTIFIED_LABEL) end def mark_as_stale comment = <<~BODY This merge request has been open for too long and will need manual intervention. /label ~"#{NOTIFIED_LABEL}" /cc @gl-gitaly BODY Retriable.with_context(:api) do GitlabClient.create_merge_request_comment(project_id, iid, comment) end end protected def template_path File.expand_path('../../templates/update_gitaly_merge_request.md.erb', __dir__) end end end