开发者

Capistrano - Email pending changes after deploy

开发者 https://www.devze.com 2023-04-03 15:16 出处:网络
I\'ve been using this gist to send an email after deployment but I\'d like the message to contain the pending changes.

I've been using this gist to send an email after deployment but I'd like the message to contain the pending changes.

I can't quite figure out how to get the get the response from cap deploy:pending into a variable that can be added to the email message.

https://gist.github.com/955917

How to use it?

 1. Add this file to config/deploy folder. 
 2. Update the file with your google credentials and from email address.
 3. Add the following content to config/deploy.rb. 

    require 'config/deploy/cap_notify.rb'

    # add email addresses for people who should receive deployment notifications
    set :notify_emails, ["EMAIL1@YOURDOMAIN.COM", "EMAIL2@YOURDOMAIN.COM"]

    after :deploy, 'deploy:send_notification'

    # Create task to send a notification
    namespace :deploy do
      desc "Send email notification"
      task :send_notification do
        Notifier.deploy_notification(self).deliver 
      end
    end

 4. Update deploy.rb with destination email addresses for the notifications.
 5. To test run this command:

    cap deploy:send_notification

=end 

require "action_mailer"

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,
  :tls => true,
  :address => "smtp.gmail.com",
  :port => 587,
  :domain => "gmail.com",
  :authentication => "plain",
  :user_name => "YOUR USER NAME",
  :password => "YOUR PASSWORD"
}

class Notifier < ActionM开发者_StackOverflowailer::Base
  default :from => "YOUR FROM EMAIL"

  def deploy_notification(cap_vars)
    now = Time.now
    msg = "Performed a deploy operation on #{now.strftime("%m/%d/%Y")} at #{now.strftime("%I:%M %p")} to #{cap_vars.host}"

    mail(:to => cap_vars.notify_emails, 
         :subject => "Deployed #{cap_vars.application} to #{cap_vars.stage}") do |format|
      format.text { render :text => msg}
      format.html { render :text => "<p>" + msg + "<\p>"}
    end

end end


Just use backticks?

str = `cap deploy:pending`
0

精彩评论

暂无评论...
验证码 换一张
取 消