2016-05-12 4 views
2

Чтобы автоматизировать регистрацию пользователя в новый экземпляр Дженкинс, я произвел Groovy скрипт:Можно ли отправлять электронные письма с Jenkins Script Console?

// Automatically generated groovy script -- 1463047124 
jenkins.model.Jenkins.instance.securityRealm.createAccount("username", "NGRkOGJiNGE2NDEyMTExMDI0OGZmOWNj") 
def user = hudson.model.User.get("username"); 
def userEmail = "[email protected]"; 
user.addProperty(new hudson.tasks.Mailer.UserProperty(userEmail)); 

Тогда я могу либо вставить это в консоли Дженкинс Script или запустить его через Jenkins CLI, и это создаст пользователи.

Следующее, что я хотел бы добавить к этой настройке, - это возможность уведомлять новых пользователей, что их учетная запись создана по электронной почте. Я подозреваю, что это можно сделать, поскольку «почтовая программа» установлена ​​в моем экземпляре Jenkins. Например, с помощью модную Трубопроводный-как-код, я могу добавить к моему Jenkinsfile:

И это будет отправить его. Однако это невозможно воспроизвести в CLI или в консоли сценариев. Возможно ли это сделать?

ответ

3

Вы можете попробовать использовать Java-подобный код жгутов свой Groovy скрипт:

import javax.mail.* 
import javax.mail.internet.* 


def sendMail(host, sender, receivers, subject, text) { 
    Properties props = System.getProperties() 
    props.put("mail.smtp.host", host) 
    Session session = Session.getDefaultInstance(props, null) 

    MimeMessage message = new MimeMessage(session) 
    message.setFrom(new InternetAddress(sender)) 
    receivers.split(',').each { 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(it)) 
    } 
    message.setSubject(subject) 
    message.setText(text) 

    println 'Sending mail to ' + receivers + '.' 
    Transport.send(message) 
    println 'Mail sent.' 
} 

Пример использования:

sendMail('mailhost', messageSender, messageReceivers, messageSubject, messageAllText) 
+0

Хмм Я пробовал, но ничего не делал. Я не думаю, что Хадсон/Дженкинс напрямую использует 'javax.mail'. –

+0

Действительно ли почтовый хост ссылается на действительный почтовый сервер? – luka5z

+0

yep, то же самое я использую в конфигурации jenkins. Трудно отладить строчный скрипт: _ ( –

0

Этот сценарий является превосходным !! работает очень хорошо .... Но я догадался, что:

i) Переменные окружения jenkins для отправки статуса сборки в мой вопрос электронной почты.

ii) отправить тело электронной почты с несколькими линиями согласно моему требованию, как показано ниже - Надеюсь, что это поможет! (добавлено ниже в дополнение к сценарию, упомянутому выше)

def result = manager.build.result 
manager.listener.logger.println "And the result is: ${result}" 
def environment = manager.getEnvVars() 
def body = "Job Name: ${environment.JOB_NAME} "+ 
System.getProperty("line.separator")+" Build Number: 

${environment.BUILD_NUMBER} "+ System.getProperty("line.separator")+" Build 
Status: ${result} " + System.getProperty("line.separator") 
    + " DEPLOYMENT INFORMATION: Check Deployment Console Output at ${environment.BUILD_URL} " 
    + System.getProperty("line.separator") 
    + " Disclaimer: Please do not reply to this email as this is an auto-generated email from Jenkins" 

def subject = " ${environment.JOB_NAME}>> ${environment.BUILD_NUMBER} >> ${result} " 
sendMail('[email protected]', "[email protected]", "[email protected]", "APPID>>${subject}", "${body}") 
Смежные вопросы