I use Jenkins extended email notification plugin to get an email after a build finishes...
and when i get the mail i see URL which gives the latest changes done to the build for ex:something like: <://abcd.l%20Automation%20-%20IE8%20Browser/changes>...
Instead of this i would like to see the URL in the mail which directly gives the build status
for ex: some thing like://abcd.l%20Automation%20-%20IE8%20Browser/buildnumber>...so that clicking on this URL should directly open the build status page....
is there any way we can configure with the jenkins ?
I have default content being set as below : $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
Check console output at $BUILD_URL to view the results.
please let me know ...
musaffir
$BUILD_URL should work.
Please check "Advanced Settings" of "Editable Email Notification" plugin in your job. You might have overridden the default settings of "Failure" trigger
Related
- Version:
azure devops Dev17.M153.5
sql server 15.0.2000
- Reproducible Steps:
Install the azure devops 2019 1.1
Configure the application-tier as Simplified-Chinese
Finish the installation
Create the team notification for ’A pull request is created or updated‘
Check the mailbox
Information:
PR notification email was not received
Follow the instruction and we got the following message:
"messages":[{"level":1,"time":"11:23:40.2682787","message":
"设置电子邮件格式时出错。将改为发送一条错误消息。
MustacheExpressionInvalidException:对于表达式“stringFormat“在 {0} 中打开”event.secondaryToolName”找不到帮助程序“stringFormat“在”
#MustacheTemplatedExpression..ctor:0
#MustacheExpression.Parse:0
#ContributedTemplateServiceBase`1.ParseFieldToken:0
#ContributedTemplateServiceBase`1.ParseFieldToken:0
#ContributedTemplateServiceBase`1.ParseFieldToken:0
#ContributedTemplateServiceBase`1.ParseFieldToken:0
"
- We have tried :
Double-check the Why am I not getting an email ---- No issue is against the rules in the guidance
Try another notification type, such as "Work item is created" or "A build completes" ---- We can receive the related email
Remove the application-tier which has been initialized as Simplified-Chinese, and re-initialize the new application-tier as English-----The expected PR notification email was RECEIVED !!!
In order to narrow down the issue, you could try the following items:
Check whether you have the latest patch installed: https://learn.microsoft.com/en-us/azure/devops/server/release-notes/azuredevops2019u1?view=azure-devops
If you configure the application-tier as Simplified-Chinese again, would you be able to see the issue agine?
Check in other team projects to see whether you can reproduce this issue.
Create a new team project collection, and create a new team project in it, to see whether you can reproduce this issue.
Check the event log in Event Viewer, to see whether there is useful information.
Maven java Selenium Project. I have been building jobs successfully. But I cannot attach My report to send email to outlook.
enter image description here
I am able to add the report to the body of the email, which displays without any CSS. Please help.
enter image description here
In 'Editable Email Notification', ideally, you need to place the file to be attached in "workspace" of the job. & then use filename.extension in 'Attachments'.
https://i.stack.imgur.com/Bl79T.png
If you are using a slave/agent node to build a job, you will find the workspace in root directory of agent node. -> Root_directory/workplace/job_name.
or you may find your job's workspace in "build.xml" of your job.(jenkins/jobs/job_name/builds/build_no/build.xml)
I had faced similar issue with no attachments in automated mail :)
Solution - update the url as per the location where file is generated .
Example - I created a job named - "AutoRunJob" -> Workspace -> File ( generating html )
my path in the editable email notification - target/test-output/LoggerReport/dashboard.html
Note : In Case no emails are flowing check what triggers it is set to by clicking on advance settings inside editable email notification configurations .
I've setup Jenkins to send emails only to users who broke the build using email-ext plugin, but I'm getting this error:
Not sending mail to unregistered user user#example.com because your SCM claimed this was associated with a user ID ‘John Smith' which your security realm does not recognize; you may need changes in your SCM plugin
I don't really understand what this error means, is the problem in our SCM, or in the email plugin? The emails are taken from the commit history, should I register them somewhere so Jenkins will start working?
For reference, this is the code around the error message in the plugin's source code:
} catch (UsernameNotFoundException x) {
if (SEND_TO_UNKNOWN_USERS) {
listener.getLogger().printf("Warning: %s is not a recognized user, but sending mail anyway%n", userAddress);
} else {
listener.getLogger().printf("Not sending mail to unregistered user %s because your SCM"
........
How do I enable SEND_TO_UNKNOWN_USERS?
The error message is also mentioned in this bug report.
For version V2.61 or above this can be configured via a radio button.
Go to
Manage Jenkins -> Configure System -> Extended E-mail Notification
and tick the radio button for Allow sending to unregistered users
Edit: If this does not work, see https://stackoverflow.com/a/45353810/492336 for another solution.
OK, after some experiments this is what I found out:
Jenkins takes the email part of the committer (not the author). For example for a commit message that looks like that:
Author: John Smith <author1#example1.com> 2017-07-27 17:15:39
Committer: John Doe <committer1#example2.com> 2017-07-27 17:15:39
Parent: 9c3ff18dda8ca6f7b7ac4ebab4c76d3c85891a33 (commit)
Branch: master
Jenkins will take "committer1", and create a brand new user under People with User ID "committer1" and email "". Unless that user has a password however, it will be considered unregistered so you need to go to Configure for that user and add a password field to it:
So this is one way to fix the error, but you have to do it for every user and in a big team it can be tedious.
Put the line bellow in your jenkins startup script
-Dhudson.tasks.MailSender.SEND_TO_UNKNOWN_USERS=true
The newest Jenkins security directive only allow sending mail to registered user. The line above bypass this configuration.
Given jenkins takes the first part of the email address and creates a user, I made my team have their jenkins user name be the first part of their email address. This removed any overhead of having to maintain two separate users.
I am trying to update the email recipients for loads of jenkins job with new set of email lists, I am unable to find the right API to do so. Although this could be updated in the config file directly but wanted to use Jenkins APIs if available any
Edit : I am referring to the below field
Post-build Actions: E-mail Notification > Recipients
Well. Currently I do not have the code but I have the thoughts.
1st step:
You can use whatever jenkins API (REST, python wrapper,etc...) to dump all your job names into a txt file, saying job_list.txt.
Below is an example. And you can find the useage from This link.
import jenkins
j = jenkins.Jenkins('http://your_url_here', 'username', 'password')
j.get_jobs()
2nd step:
As you can see, each job has an config file with path like $JENKINS_HOME/jobs/job_name/config.xml. This can also be accessed from your browser. From browser it looks like this:
So your question can be simplified into either:
"How to update the recipients value of config.xml from each job folder under $JENKINS_HOME/jobs directory".
Or:
"How to update the recipients value of config.xml from each job url like http://your_jenkins_url/job/each_job_name/config.xml".
So this can be done by any script language like python,ruby,shell,vb or whatever http-like lib like 'urllib2', 'requests' etc...
3rd step:
After all the config.xml file updated, don't forget to restart your jenkins to take effects.
Good luck, buddy!
Edited(2015-05-27)
There is an existing Groovy script written by #edalquist which can update the email address in a programatically way. https://github.com/jenkinsci/jenkins-scripts/blob/master/scriptler/updateEmailAddress.groovy
I use the grails mail plugin to send mail, I have to send an email from the service and from this i use the grails mail plugin: http://grails.org/plugin/mail
So I have this code:
mailService.sendMail {
async true
to 'hello#world.fr'
from 'world#hello.fr'
subject subj
body (view:'/mail/_mailTemplate')
}
So at this point everything's fine , my method send email.
In my mail template i have the image pippo.png that i have to show, and I do it in this way.
<img src="${resource(dir: 'images/mailImage', file: 'pippo.png',absolute:true)}">
In the generated html the link that i get as a result for that image is :
http://localhost/images/mailImage/pippo.png
with this link is obvious that the mail client will never find the image.
but when i render the same template from a controller i get:
http://www.mycorrectdomain/images/mailImage/pippo.png
so how can I get the current domain even when i render my template from the service?
In the grails documentation of the resource tag, it says:
absolute (optional) - If true will prefix the link target address with the value of the grails.serverURL property from Config.groovy, or localhost if there is no setting in Config.groovy and not running in production.
So, I'm guessing the reason you are seeing localhost is because you haven't configured your URL in Config.groovy, or, you are not running in production model.
To change the default URL, in Config.groovy:
grails.serverURL = "http://www.thecorrectwebsite.com"
To run in production mode: grails production run-app should do the trick.