Sorry for the delayed response Rajendra. Will try this and let you know.
Got stuck with another issue.
On Friday, September 28, 2018 at 12:07:12 PM UTC-4, rajendraprasad reddy
wrote:
>
> Following snippet can collect all jobs into a list,
>
> Just modify the script and please remove the filtering logic from previous
> script,
>
> And add the following snippet, that's all you will get all the jobs.
>
> def jobsList=[];
>
> Jenkins.instance.projects.collect {
>
> String currentJob=it.name;
>
> jobsList.add(currentJob)
>
> }
>
> Thanks,
> Rajendra
>
> On Fri 28 Sep, 2018, 8:03 PM , <[email protected] <javascript:>> wrote:
>
>> Rajendra. Thank you so much for the information. It is very
>> descriptive. But, need some more help. Sorry to bother, I'm new to
>> Groovy. You mentioned you are filtering the job name by 'Monitor'. Just
>> wanted to check how it works for this scenario
>>
>> I need details of all jobs, irrespective of which project/folder they
>> belong to, from Saturday to Friday. How does it work in this case?
>>
>> Also, I need this report to be emailed. If you can suggest a method for
>> that, will be helpful. Thanks so much for the help.
>>
>> On Friday, September 28, 2018 at 3:00:14 AM UTC-4, rajendraprasad reddy
>> 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 <https://plugins.jenkins.io/groovy> 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
>>> <https://plugins.jenkins.io/groovy> 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, <[email protected]> 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 , <[email protected]> wrote:
>>>>>
>>>>>> Any help on this. Little urgent.
>>>>>>
>>>>>> On Wednesday, September 26, 2018 at 3:29:23 PM UTC-4,
>>>>>> [email protected] 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 [email protected].
>>>>>> To view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/jenkinsci-users/b90c4f44-cae0-4c29-bdb1-2d9ceb0e1736%40googlegroups.com
>>>>>>
>>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/b90c4f44-cae0-4c29-bdb1-2d9ceb0e1736%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>> 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 [email protected].
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/jenkinsci-users/42f25477-6bdc-485e-95a9-466833637c9f%40googlegroups.com
>>>>
>>>> <https://groups.google.com/d/msgid/jenkinsci-users/42f25477-6bdc-485e-95a9-466833637c9f%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> 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 [email protected] <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/jenkinsci-users/9fea91d6-dc7d-4720-b361-d3411df8c91c%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/jenkinsci-users/9fea91d6-dc7d-4720-b361-d3411df8c91c%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> 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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-users/d16ef873-3924-459d-99d8-4f9b738eff57%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.