2016-05-12 15 views
2

Benutzerregistrierung in einer neuen Jenkins Instanz, ich habe erzeugt einen Groovy Skript zu automatisieren:Ist es möglich, E-Mails von der Jenkins Script Console zu senden?

// 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)); 

Dann kann ich entweder fügen Sie diese in das Jenkins Script Console oder führen Sie es durch den Jenkins CLI, und es wird erstellen die Benutzer.

Das nächste, was ich zu dieser Einrichtung hinzufügen möchte, ist die Möglichkeit, die neuen Benutzer zu benachrichtigen, dass ihr Konto per E-Mail erstellt wurde. Ich vermute, dass dies möglich ist, da der "Mailer" in meiner Jenkins-Instanz installiert ist. Um zum Beispiel des trendy Pipeline-as-Code verwendet wird, kann ich zu meinem Jenkinsfile hinzufügen:

Und es wird es senden. Dies kann jedoch nicht in der Befehlszeilenschnittstelle oder in der Skriptkonsole reproduziert werden. Ist das überhaupt möglich?

Antwort

3

könnten Sie versuchen, verwenden Java-Code wie Ihr Groovy Skript withing:

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.' 
} 

Verwendungsbeispiel:

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

hmm Ich habe es versucht, aber es hat nichts getan. Ich glaube nicht, dass Hudson/Jenkins 'javax.mail' direkt verwendet. –

+0

Bezieht sich' mailhost' auf einen gültigen Mailserver? – luka5z

+0

yep, das gleiche benutze ich in der jenkins config. Es ist jedoch schwer, das groovige Skript zu debuggen: _ ( –

0

Dieses Skript ist hervorragend !! funktioniert sehr gut .... Aber ich änderte es zu:

i) jenkins Umgebungsvariablen aufrufen, um Build-Status in meinem E-Mail Betreff senden.

ii) senden Sie E-Mail Körper mit mehreren Zeilen gemäß meiner Anforderung wie unten - Hope it help !! (hinzugefügt unter Abschnitt neben dem oben genannten Skript)

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}")