I have used autojenkins, it’s command line and api is neat to expose job 
details 

Sent from my iPhone

> On Sep 27, 2018, at 11:59 PM, RAJENDRA PRASAD <rajendra.penuma...@gmail.com> 
> wrote:
> 
> Here is the Ggroovy Script:
> import javax.mail.*
> import javax.mail.internet.*
> import jenkins.model.*
> import java.text.SimpleDateFormat
> import java.util.*;
> import java.util.Calendar;
> import java.lang.System;
> import org.apache.tools.ant.Project
> import org.apache.tools.ant.ProjectHelper
> 
> def env="Dev_Jenkins_Server";
> SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
> sdf.setTimeZone(TimeZone.getTimeZone("EST"));
> def  d=new Date();
> def oneHourPrior=new Date(System.currentTimeMillis() - 3600 * 1000);
> def currentTime=sdf.format(d);
> def monitoringStartTime=trim(oneHourPrior)
> 
> 
> def totalMonitoringJobs=0;
> def testSuiteIndex=0;
> def passedTestSuiteCount=0;
> def failedTestSuiteCount=0;
> def passedJobsList=[];
> def failedJobsList=[];
> def totalJobsList=[];
> 
> println "Monitoring Start Time:        "+monitoringStartTime ;
> println  "Monitoring Current Time:      "+currentTime;
> 
> def matchedJobs = Jenkins.instance.items.findAll { job ->
>               job.name =~ /Monitor/
> }
> 
> println 
> "*********************************************************************************"
>        println "Total Monitoring Suites Count:"+matchedJobs.size();
>        totalMonitoringJobs=matchedJobs.size();
> 
> println "***********************************Listing all Available Monitoring 
> Projects**********************************************"
>     def index=0;
>      matchedJobs.each { job ->
>                index=index+1;
>               println index+". "+job.name;
>                 totalJobsList<<job.name+"\n";
>       }
>     println 
> "*********************************************************************************\n\n"
> 
> println "********************************Todays Execution Summary 
> Results***************************************"
>  matchedJobs.each { job ->
>    def numbuilds = job.builds.size()
>   if (numbuilds == 0) {
>        println '  -> no build'
>        return
>   }
>    def lastbuild = job.builds[0]
>        Calendar cal1 = Calendar.getInstance();
>         Calendar cal2 = Calendar.getInstance();
>         cal1.setTime(monitoringStartTime);
>         cal2.setTime(lastbuild.getTime());
> 
> 
> if (cal2.after(cal1)) {
>            testSuiteIndex=testSuiteIndex+1
>             def rightPadding=50;
> 
> 
> String jobName= job.name;
> int requiredPadding=50-(jobName.size());
> while(requiredPadding>0){
>        jobName=jobName+" "
>        requiredPadding--;
> } 
> 
> def jobInfo=jobName+'\tlastbuild: ' + lastbuild.displayName + ' = ' + 
> lastbuild.result + ', time: ' + lastbuild.getTime();
> 
> String latestbuildStatus=lastbuild.result;
>      if( latestbuildStatus.equals("SUCCESS")){
>                  passedTestSuiteCount=passedTestSuiteCount+1
>                  //println "Found a Success Project"
>                  jobInfo="\t\t"+ passedTestSuiteCount+" . "+jobInfo
>                 passedJobsList.add(jobInfo)
>         }
>      if( latestbuildStatus.equals("FAILURE")){
>                  failedTestSuiteCount=failedTestSuiteCount+1
>                    jobInfo="\t\t"+ failedTestSuiteCount+" . "+jobInfo
>                  failedJobsList.add(jobInfo)
>         }
>     }
> 
> }
> 
> String passedJobsInfo= passedJobsList.join("\n")
> String failedJobsInfo= failedJobsList.join("\n")
> 
> def jobsList ="";
> def jobIndex=0;
> totalJobsList.each{
>      jobIndex=jobIndex+1;
>      jobsList=jobIndex+". "+jobsList+it
> 
> }
> 
> 
> String cumulativeStatus="PASS"
> if(failedJobsList.size()>0){
>     cumulativeStatus="FAIL"
> }
> 
> 
> String  emailBody=""" 
>      *******************************Todays Cumulative Test Execution Summary 
> Report*****************
>      \tMonitoring Start Time:\t\t${monitoringStartTime} 
>      \tReport Genretated Time:\t${currentTime}
>      \tTotal Monitoring Jobs Count Scheduled to run in Monitoring Window:  
> ${totalMonitoringJobs}
>      \tTotal Jobs Executed Today(As of Now): ${testSuiteIndex}
>      \tTotal Jobs Passed Today(As of Now):    ${passedJobsList.size()}
>      \tTotal Jobs Failed Today:(As of Now):     ${failedJobsList.size()}
>      \tCumulative Result: ${cumulativeStatus}
>     
> ***********************************************************************"""+"\n\n\t----->>>>>Failed
>  Jobs Count: ${failedJobsList.size()} 
> \n"+failedJobsInfo+"\n\n\t----->>>>>Passed Jobs Count: 
> ${passedJobsList.size()}\n"+passedJobsInfo+"\n\n"
> 
> println emailBody;
> String subject="${env} Jenkins Server:[ ${cumulativeStatus}]  ${currentTime}: 
>  Cumulative Test Execution Summary Report";
> 
>  public static Date trim(Date date) {
>         Calendar calendar = Calendar.getInstance();
>         calendar.setTime(date);
>         calendar.add(Calendar.SECOND, 0);
>         calendar.add(Calendar.MINUTE, -60);
>         calendar.add(Calendar.HOUR_OF_DAY,0);
>         return calendar.getTime();
>     }
> 
> def padRight(String s, int n) {
>      String.format("%1-" + n + "s", s);  
> }
> 
> 
> //You have Following use email service and send it :
> def emailSubject=subject
> def emailRecipientsList="email1,email2"
> def email_subject= subject
> def email_body= emailBody
> 
> Above groovy script collects the pass failed jobs info and composes a  mail 
> subject and mail body.
> 
> To use above groovy script:
> 1. Install Groovy plugin from plugin manager
> 2. Create a Freestyle project
> 3. Good to 'Build. section of the free style job (Please look at attached pic 
> -1)
> 4. Select Option  :  Execute system Groovy script  (Please look at attached 
> pic -1)
>         Note: Unless you install Groovy plugin above option will not display 
> build options
> 5. Select option Groovy Command 
> 6. Copy the above groovy Script in the next text field of build area config
> 7. If you wan to run this script periodically every day define a cron entry  
> build triggers section  similar to the attached pic-3
> 
> I am filtering jobs based on the job name, i.e if job name contains 'Monitor' 
> token then those jobs only checked  and consolidated report will be generated.
> You can also test above groovy script from script console of jenkins  
> 
> 
> Note: I have not added the email sending part in this, there are sevceral 
> ways to do that nased on the email service that you use 
> Let me know if you need help in that also 
> 
> 
> 
> Thanks and Regards,
> Rajendra Prasad Reddy Penumalli
> 
> 
> 
>> On Fri, 28 Sep 2018 at 08:21, <gotviser...@gmail.com> wrote:
>> Hi Rajendra.  Thank you so much for this news.  Would really appreciate help 
>> on implementing this.  Could you please guide me through?
>> 
>>> On Thursday, September 27, 2018 at 9:44:16 PM UTC-4, rajendraprasad reddy 
>>> wrote:
>>> Hi ,
>>> I did similar implementation for monitoring my Jenkins instance. But I 
>>> never used a plugin to do that , instead of plugins I used groovy script to 
>>> prepare mail body content and sending this mail body to intended recipient 
>>> list.
>>> Using groovy it is possible to get any information of Jenkins using Jenkins 
>>> API calls.
>>> 
>>> Let me know you need further help in implementing this procedure.
>>> 
>>> Thanks,
>>> Rajendra
>>> 
>>>> On Thu 27 Sep, 2018, 5:58 PM , <gotvi...@gmail.com> wrote:
>>>> Any help on this.  Little urgent.
>>>> 
>>>>> On Wednesday, September 26, 2018 at 3:29:23 PM UTC-4, gotvi...@gmail.com 
>>>>> wrote:
>>>>> I'm looking to generate a report, as a job, which will provide the global 
>>>>> metrics of my Jenkins instance.  I need details in the report like (1) 
>>>>> How many jobs ran? (2) # of failed and successful jobs and every possible 
>>>>> metrics possible in one report.  I need to send this report every week to 
>>>>> my management, so would like to know if it's possible to schedule a job 
>>>>> to run this report every Friday and send the metrics by email to my 
>>>>> managers?  I found these two plugins - 'Global Build Status' and 'Build 
>>>>> Metrics'.  But not able to use these as part of a job, download the 
>>>>> report or email a link to the report or nothing of that sort.  Please 
>>>>> help.
>>>> 
>>>> -- 
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "Jenkins Users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>> email to jenkinsci-use...@googlegroups.com.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/jenkinsci-users/b90c4f44-cae0-4c29-bdb1-2d9ceb0e1736%40googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Jenkins Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to jenkinsci-users+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jenkinsci-users/42f25477-6bdc-485e-95a9-466833637c9f%40googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Jenkins Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to jenkinsci-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/jenkinsci-users/CAMrg02TjKqHeQsftXX7i%2BakzVOspKuh2yj%2BtYwwRwH%2BRiFCX8w%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.
> <pic_1_Build Options.png>
> <pic_2_Build_Secition _Free Style_Job.jpg>
> <pic_3_BuildTriggers.png>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/094A75F5-E07B-485C-8DAF-4942FB5FE5CF%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to