lib/release_tools/slack/chatops_notification.rb (42 lines of code) (raw):
# frozen_string_literal: true
module ReleaseTools
module Slack
class ChatopsNotification < Webhook
def self.channel
ENV.fetch('CHAT_CHANNEL', nil)
end
def self.job_url
ENV.fetch('CI_JOB_URL', 'https://example.com/')
end
def self.task
ENV.fetch('TASK', '')
end
def self.webhook_url
ENV.fetch('SLACK_CHATOPS_URL')
end
def self.release_issue(issue)
return unless task.present?
text = "The `#{task}` command at #{job_url} completed!"
attachment = {
fallback: '',
color: issue.status == :created ? 'good' : 'warning',
title: issue.title,
title_link: issue.url
}
fire_hook(text: text, attachments: [attachment], channel: channel)
end
def self.branch_status(status)
return unless status.any?
fields = []
status.each_pair do |project, values|
text = ["*#{project}*"]
text << values.map do |result|
":status_#{result.status}: <#{result.web_url}|#{result.ref}>"
end
fields << mrkdwn(text.join("\n"))
end
blocks = [{ type: 'section', fields: fields }]
fire_hook(channel: channel, blocks: blocks)
end
end
end
end