From 824b3d1fa2f01aef8bb0a6b544876feb6292413b Mon Sep 17 00:00:00 2001 From: Savannah Albanez Date: Wed, 5 Feb 2025 13:04:41 -0700 Subject: [PATCH] Add threaded Changelog to release message Co-authored-by: Jim Gay --- CHANGELOG.md | 1 + lib/discharger/task.rb | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84499cd..21faa0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,3 +16,4 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Changed - Reset the production branch to the staging branch instead of rebasing. +- Deploy slack message now threads the changelog for the release. diff --git a/lib/discharger/task.rb b/lib/discharger/task.rb index 72e890d..a874faa 100644 --- a/lib/discharger/task.rb +++ b/lib/discharger/task.rb @@ -37,6 +37,8 @@ def self.create(name = :release, tasker: Rake::Task, &block) attr_accessor :commit_identifier attr_accessor :pull_request_url + attr_reader :last_message_ts + # Reissue settings attr_accessor( *Reissue::Task.instance_methods(false).reject { |method| @@ -146,6 +148,11 @@ def define ["git push origin v#{current_version}"] ) do tasker["#{name}:slack"].invoke("Released #{app_name} #{current_version} to production.", release_message_channel, ":chipmunk:") + if last_message_ts.present? + text = File.read(Rails.root.join(changelog_file)) + tasker["#{name}:slack"].reenable + tasker["#{name}:slack"].invoke(text, release_message_channel, ":log:", last_message_ts) + end syscall ["git checkout #{working_branch}"] end @@ -209,7 +216,7 @@ def define end desc "Send a message to Slack." - task :slack, [:text, :channel, :emoji] => :environment do |_, args| + task :slack, [:text, :channel, :emoji, :ts] => :environment do |_, args| args.with_defaults( channel: release_message_channel, emoji: nil @@ -217,9 +224,11 @@ def define client = Slack::Web::Client.new options = args.to_h options[:icon_emoji] = options.delete(:emoji) if options[:emoji] + options[:thread_ts] = options.delete(:ts) if options[:ts] sysecho "Sending message to Slack:".bg(:green).black + " #{args[:text]}" result = client.chat_postMessage(**options) + instance_variable_set(:@last_message_ts, result["ts"]) sysecho %(Message sent: #{result["ts"]}) end