This is driving me nuts.   Jenkins has been running just fine until during 
one of the updates in the past month or so something went south.  We're now 
getting no e-mail and the following error in the Job logs:

Executing pre-send script
Pre-send script tried to access secured objects: classpath entry file:/ 
(7a4a36093f15af3f79ad37dbe1308c5da1d8bace) not yet approved for use
ERROR: Could not send email as a part of the post-build publishers.
org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedClasspathException: 
classpath entry file:/ (7a4a36093f15af3f79ad37dbe1308c5da1d8bace) not yet 
approved for use


I've gone into the Manage Jenkins->In Process Script Security and nothing 
is pending approval.   

I've taken the "7aa3609" string (which I'm guessing is a hash) and tried 
putting it directly into the approvedClasspathEntries in scriptApproval.xml

There is no "groovy sandbox" checkbox near the script as mentioned in 
similar problems I've seen described on the 'net.

I've started to play with Permissive Script Security Plugin, but would like 
to avoid that (and the instructions didn't make a lot of sense yet on 
MacOS).

The script is below.  Is there an easy fix for this?!?

Thanks much!
M@





Pre-send script:


// Load up the first 1000 lines of the log file into a variable
def log = build.getLog(1000)

// Let's setup a boolean of the result of searching for the string that 
appears
// in the log file when a job successfully completes but no work occurred.

def NothingDone = (log ==~/.*Nothing downloaded, packaged or imported.*/)
assert NothingDone instanceof Boolean
logger.println("** NothingDone is " + NothingDone)

def Error = (log ==~/.*Error.*/)
assert Error instanceof Boolean
logger.println("** Error is " + Error)

def error = (log ==~/.*error.*/)
assert error instanceof Boolean
logger.println("** error is " + error)

// New items were imported into the munki repo
def NewItemsImported = (log ==~/.*new items were imported into Munki.*/)
assert NewItemsImported instanceof Boolean
logger.println("** NewItemsImported is " + NewItemsImported)

// New items were downloaded to the AutoPkg Cache directory
def NewItemsDownloaded = (log ==~/.*new items were downloaded.*/)
assert NewItemsDownloaded instanceof Boolean
logger.println("** NewItemsDownloaded is " + NewItemsDownloaded)

/* The below code is for AutoPkg FAQ #1:
 *
 * Every time I run a recipe it downloads something even if it didn't 
change. Why?
 *      https://github.com/autopkg/autopkg/wiki/FAQ
 *
 * the IS_TROUBLEMAKER is a per-job environmental variable set using the 
 * Jenkins EnvInject Plugin -- 
https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin
 *
 * below is the elvis/ternary operator that does the following:
 * if IS_TROUBLEMAKER is set from the Jenkins job configuration, take that 
value
 * (it should be true).  If it's not set/doesn't exist, set it to false
 * because we have a lot of existing jobs and only set the IS_TROUBLEMAKER 
on jobs that
 * ARE troublemakers!
 */


try { 

   // if IS_TROUBLMAKER is set by EnvInject plugin, set known_troublemaker 
to that value
   // (as it could've been a troublemaker in the past, and set to false 
when it was
   // fixed

   known_troublemaker = $IS_TROUBLEMAKER 

} catch (MissingPropertyExceptionmpe) { 

   // if we get an error, then it's because $IS_TROUBLEMAKER doesn't exist, 
so we
   // should set it to false
   
   known_troublemaker = false
   logger.println("** IS_TROUBLEMAKER try failed, caught 
MissingPropertyExceptionmpe and set known_troublemaker to " + 
known_troublemaker)

} 


logger.println("** known_troublemaker is " + known_troublemaker)

/* And now let's test against that boolean and kill the e-mail (cancelEmail 
= true) if it found the
 * -Nothing downloaded, packaged or imported- string  AND it hasn't found a 
string with Error or error
 */
 
if (NothingDone && !Error && !error) {

// AutoPkg neither downloaded to the AutoPkg Cache nor imported anything to 
the munki repo, 
// so no e-mail this is the case 99% of the time
logger.println("=== e-mail cancelled: Job completed without errors but 
nothing was done (nothing downloaded or imported)")
cancel=true
} else if (NewItemsImported) {
// New items were imported into the Munki Repo, send the email.
logger.println("=*=*=*=*=*=*=*=*=*=*=*=* New Item in Munki Repo, E-mail 
Sent !!!! =*=*=*=*=*=*=*=*=*=*=*=*")
cancel=false

} else if (NewItemsDownloaded && known_troublemaker) {

// logger.println("** AutoPkg downloaded, but not imported to Munki as " + 
$JOB_NAME + " is a known troublemaker.")
logger.println("=== e-mail cancelled: KNOWN TROUBLEMAKER: AutoPkg 
downloaded sucessufully (but no import as this version was already in the 
munki repo")
logger.println("=== See AutoPkg FAQ, item #1 at 
https://github.com/autopkg/autopkg/wiki/FAQ";)
cancel=true

} else { 
    // Send the email, something's run amok
    cancel=false
logger.println('@#$%&!@#$%&!@#$%&!@#$%&!      Ruh Roh!  Something went 
wrong -- E-mail Sent !!!!! @#$%&!@#$%&!@#$%&!@#$%&!')
}
 
// logger.println("** End of Presend Script and it is " + IS_TROUBLEMAKER + 
" that " + JOB_NAME + " is a known troublemaker.")
// logger.println("** cancel = " + cancel)
// logger.println("** \n\nlogfile begin ..........\n" + log + 
"\n\n..........\nlog file end")

-- 
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/a17581ac-0595-4f1d-b897-508e955c4fe6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to