class DeployChanges::Notifier
Attributes
deploy_job_build_number[R]
deploy_job_name[R]
git_repo_url[R]
new_tag_name[RW]
slack_bot_api_token[RW]
slack_channel[R]
tag_prefix[R]
validator[RW]
Public Class Methods
new() { |config| ... }
click to toggle source
# File lib/deploy_changes/notifier.rb, line 35 def initialize self.validator = Validator.new(self) config = OpenStruct.new yield config if block_given? self.git_repo_url = config.git_repo_url || ENV["GIT_REPO_URL"] self.tag_prefix = config.tag_prefix || ENV["TAG_PREFIX"] self.deploy_job_build_number = config.deploy_job_build_number || ENV["DEPLOY_JOB_BUILD_NUMBER"] self.deploy_job_name = config.deploy_job_name || ENV["DEPLOY_JOB_NAME"] self.new_tag_name = tag_prefix + deploy_job_build_number self.slack_channel = config.slack_channel || ENV["SLACK_CHANNEL"] self.slack_bot_api_token = config.slack_bot_api_token || ENV["SLACK_BOT_API_TOKEN"] configure_slack end
Public Instance Methods
git_repo_directory()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 65 def git_repo_directory @git_repo_directory ||= git_repo_url .split('/') .last .gsub('.git', '') end
send_deploy_changes_notification()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 55 def send_deploy_changes_notification cleanup_repo clone_repo send_slack_notification rescue StandardError => e raise e ensure cleanup_repo end
Private Instance Methods
cleanup_repo()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 168 def cleanup_repo return true unless Dir.exist?(git_repo_directory) puts "Deleting '#{git_repo_directory}' folder" `rm -rf #{git_repo_directory}` end
clone_repo()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 160 def clone_repo puts "Cloning from '#{git_repo_url}'" `git clone #{git_repo_url}` validator.validate_repo_cloned(git_repo_directory) end
configure_slack()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 77 def configure_slack validator.validate_slack_api_token(ENV["SLACK_BOT_API_TOKEN"]) Slack.configure do |config| config.token = ENV["SLACK_BOT_API_TOKEN"] end end
deploy_changes_command()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 126 def deploy_changes_command validator.validate_new_tag(new_tag_name) puts "New tag name: #{new_tag_name}" "cd #{git_repo_directory} && git log --pretty=oneline --no-merges --format=\"%s [%an]\" #{previous_tag_name}...#{new_tag_name}" end
deploy_changes_command_output()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 122 def deploy_changes_command_output `#{deploy_changes_command}` end
deploy_changes_list()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 113 def deploy_changes_list return [] if previous_tag_name.nil? || previous_tag_name.empty? deploy_changes_string = deploy_changes_command_output return [] unless validator.last_command_successful? deploy_changes_string.split("\n") end
deploy_changes_message()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 95 def deploy_changes_message deploy_changes_array = deploy_changes_list message = "*#{deploy_job_name} \##{deploy_job_build_number} changes:*\n" message += if deploy_changes_array.empty? " - No changes" else deploy_changes_array .map { |commit_message| " - " + commit_message } .join("\n") end puts message message end
deploy_job_build_number=(job_build_number)
click to toggle source
# File lib/deploy_changes/notifier.rb, line 188 def deploy_job_build_number=(job_build_number) validator.validate_deploy_job_build_number(job_build_number) @deploy_job_build_number = job_build_number end
deploy_job_name=(job_name)
click to toggle source
# File lib/deploy_changes/notifier.rb, line 194 def deploy_job_name=(job_name) validator.validate_deploy_job_name(job_name) @deploy_job_name = job_name end
git_repo_url=(repo_url)
click to toggle source
# File lib/deploy_changes/notifier.rb, line 176 def git_repo_url=(repo_url) validator.validate_repo_url(repo_url) @git_repo_url = repo_url end
previous_tag_name()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 134 def previous_tag_name return @previous_tag_name if @previous_tag_name previous_tag = previous_tag_from_tags_list(tags_list) puts "Previous tag name: #{previous_tag}" @previous_tag_name = previous_tag end
send_slack_notification()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 85 def send_slack_notification slack_client.auth_test slack_client.chat_postMessage( channel: slack_channel, text: deploy_changes_message, as_user: true ) end
slack_channel=(channel_name)
click to toggle source
# File lib/deploy_changes/notifier.rb, line 200 def slack_channel=(channel_name) validator.validate_slack_channel_name(channel_name) @slack_channel = channel_name end
slack_client()
click to toggle source
# File lib/deploy_changes/notifier.rb, line 206 def slack_client @slack_client ||= Slack::Web::Client.new end
tag_prefix=(prefix)
click to toggle source
# File lib/deploy_changes/notifier.rb, line 182 def tag_prefix=(prefix) validator.validate_tag_prefix(prefix) @tag_prefix = prefix end