Uso de Mailgun con recetas de Capistrano
Mailgun se creó como antídoto para las complicaciones del desarrollo de emails. Por eso, siempre nos emociona que los profesionales del desarrollo lleven nuestra plataforma un paso más allá con las herramientas que crean. Si has creado una biblioteca, módulo, etc. interesante para usarlo con Mailgun, nos encantaría saberlo y destacarlo en nuestro blog.
El siguiente artículo está escrito por Spike Grobstein, ingeniero DevOps sénior en Ticket Evolution con más de diez años de experiencia en Linux, especialista en automatización y despliegue.
**********
Enviar emails manualmente tras un despliegue exitoso es un fastidio, así que decidí escribir una receta de Capistrano para automatizarlo usando Mailgun. Puedes obtener el código completo aquí. Necesitarás una cuenta de Mailgun, pero hay un plan gratuito que incluye acceso a todas las API de Mailgun y que te permite enviar hasta 200 emails al día para que puedas probarlo y ver si te gusta.
Para enviar una notificación tras el despliegue, añade lo siguiente a tu archivo deploy.rb:
set :mailgun_api_key, 'key-12345678901234567890123456789012' # tu clave de API de Mailgun
set :mailgun_api_key, 'key-12345678901234567890123456789012' # tu clave de API de Mailgun
set :mailgun_domain, 'example.com' # tu dominio de email de Mailgun
set :mailgun_from, 'deployment@example.com' # de quién parecerá provenir el email
set :mailgun_recipients, [ 'you@example.com', 'otherguy@example.com' ] # quién recibirá el email
# crear un hook posterior al despliegue
after :deploy, 'mailgun_notify'
Ya está. Al hacer un despliegue, debería enviarse automáticamente un email utilizando las plantillas de texto y HTML integradas.
También puedes enviar emails que incluyan variables más sofisticadas. Echa un vistazo al siguiente ejemplo, que envía diferentes emails a los equipos de Desarrollo y Operaciones. Si quisieras usar este código, solo tendrías que incluirlo en tu archivo deploy.rb:
# al usar send_email, los siguientes dos ajustes son OBLIGATORIOS
set :mailgun_api_key, 'key-12345678901234567890123456789012' # tu clave de API de Mailgun
set :mailgun_domain, 'example.com' # tu dominio de email de Mailgun
set :mailgun_recipient_domain, 'example.com' # añade esto a cualquier dirección de email no cualificada
set(:email_body) { abort "Por favor, establece email_body usando `-s email_body='this is the body of the email'`" }
# algunas variables que usaremos al llamar a mailgun.send_email
set :ops_emails, [ 'alice', 'bob' ]
set :dev_emails, [ 'carl@contractors.com', 'dave' ]
# algunas tareas básicas
namespace :email do
task :ops do
mailgun.send_email(
:to => ops_emails, # Capistrano::Mailgun llama automáticamente a build_recipients
:from => 'some_dude@example.com',
:subject => 'acabas de usar Mailgun',
:text => email_body
)
end
task :devs do
mailgun.send_email(
:to => 'no-reply@example.com',
:from => 'no-reply@example.com',
:bcc => mailgun.build_recipients(dev_emails, 'audit.example.com'), # fíjate en el dominio diferente
:subject => 'Solo sois profesionales del desarrollo',
:text => email_body
)
end
end
Esto define dos tareas que se pueden usar para enviar emails a operaciones (ops) o desarrollo (devs). La tarea email:ops utiliza una variable de Capistrano, email_body, que debe configurarse en la línea de comandos. Con este ejemplo, podrías enviar un email al equipo de operaciones de la siguiente manera:
cap email:ops -s email_body="Sois geniales. Seguid así"
También podrías aprovechar :text_template y/o :html_template para mensajes más complejos. Lo anterior es solo un ejemplo.
Además, fíjate en el uso de mailgun.build_recipients. La documentación completa está disponible en Github.
Espero que este código ayude a eliminar parte de la complejidad que supone gestionar grandes despliegues. ¡Dime qué te parece!
Fundada en abril de 2010, Ticket Evolution desarrolla software y servicios que gestionan la ejecución, compensación y liquidación en tiempo real de la compraventa de entradas de eventos. Si alguna vez has comprado una entrada para un partido deportivo por Internet, o has llamado a un agente para reservar asientos en un concierto, lo más probable es que nuestro sistema se haya utilizado en algún punto del proceso. El equipo de Ticket Evolution se enorgullece de crear un lugar excelente tanto para aprender como para contribuir a proyectos interesantes. A menudo resuelven retos técnicos complejos mientras se mantienen al día tanto en nuevas tecnologías como en informática tradicional. Además, están contratando!