namespace :load do

task :defaults do
  set :aws_region, "us-east-1"

  set :ssm_params_prefix, -> do
    "/environments/#{fetch(:stage)}/services/#{fetch(:application)}/deployment"
  end
end

end

namespace :deploy do

desc "Updates AWS SSM parameters with latest revision and release_slug attributes"
task :update_ssm_parameters do
  if fetch(:stage) === :production
    current_revision = nil
    release_name = fetch(:release_timestamp)

    on roles(:db) do
      within "#{fetch(:repo_path)}" do
        current_revision = capture(:git, "rev-parse #{fetch(:branch)}")
      end
    end

    Capistrano3::Aws.update_ssm_parameter("#{fetch(:ssm_params_prefix)}/revision", current_revision)
    Capistrano3::Aws.update_ssm_parameter("#{fetch(:ssm_params_prefix)}/release_slug", release_name)

    puts "UPDATED:: AWS SSM parameters to REVISION: #{current_revision}, RELEASE: #{release_name}"
  end
end

end

after “deploy”, “deploy:update_ssm_parameters”