View ChuckNorris Plugin on the plugin site for more information. |
|---|
Displays a picture of Chuck Norris (instead of Jenkins the butler) and a random Chuck Norris 'The Programmer' fact on each build page.
Download & Installation
You can preferably install this plugin directly from the Plugins Update Center, or if need be by downloading the latest .hpi and install it from the Manage Plugins menu.
Usage
- After installing the plugin, go to job configuration page, a checkbox with the text 'Activate ChuckNorris' should appear.
- Tick the checkbox and save the configuration. For freestyle job, Chuck Norris image (along with a random quote) will appear on the job page.
- Run a build. After it's completed, Chuck Norris image (and the random quote) should also appear on the build page. This is applicable for both freestyle and Maven jobs.
Screenshots
FAQ
Q: I'm getting NonExistentFieldException in Hudson log file, how to fix this problem?
hudson.util.RobustReflectionConverter doUnmarshal
WARNING: Skipping a non-existent field fact
com.thoughtworks.xstream.converters.reflection.NonExistentFieldException: No such field hudson.plugins.chucknorris.RoundhouseAction.fact
A: Upgrade to ChuckNorris Plugin 0.4 or newer. That should get rid of the exception message.
Testimonials
- Uncle Bob Martin said ChuckNorris Plugin is very motivating .
- Fabrizio Giudici said Kick your bugs in the ass!
- John Ferguson Smart mentioned ChuckNorris Plugin in Kickass Hudson Plugins
Credits
Chuck Norris 'The Programmer' facts and Emotional Hudson Plugin.


27 Comments
Unknown User (gregmoore)
Me thinks some one has way way too much time on there hands. LOL
whats next Bruce Lee?
Cliffano Subagio
Just a plugin I wrote when I first learnt how to write a Hudson plugin :).
Honouring Bruce Lee is implicitly implied via ChuckNorris Plugin since Chuck himself once said "Lee, pound for pound, might well have been one of the strongest men in the world, and certainly one of the quickest."
BruceLee Plugin would be similar to ChuckNorris Plugin, only the images more bad ass, and the quotes more philosophical.
Brian Sayatovic
I've installed it, but it only shows "happy" Chuck Norris, and no statement about Chuck Norris' abilities. What is the trigger for it to change image and/or text?
Cliffano Subagio
The image depends on the build result.
Success -> happy Chuck
Warning/Aborted -> alert Chuck
Failure -> badass Chuck
The text is random.
Unknown User (graham.keogh@fineos.com)
Doesn't seem to work with 1.318. I get the text displayed but no graphics.
Looking at the source its pulling it from /hudson/plugin/chucknorris/images yet you can't hit this!!!
Cliffano Subagio
I tested the plugin with 1.318 and it worked fine.
My suggestion is to reinstall the plugin and restart Hudson, or perhaps upgrade both Hudson and ChuckNorris plugin to the latest versions.
Note that the image doesn't appear on the job page for Maven projects, it appears on the build pages. For freestyle projects, the image appears on job and build pages.
Unknown User (j.godau@schuetze-berlin.de)
Upgraded to Hudson 1.341 and am getting lots of errors like:
19.01.2010 15:00:43 hudson.util.RobustReflectionConverter doUnmarshal
WARNUNG: Skipping a non-existent field fact
com.thoughtworks.xstream.converters.reflection.NonExistentFieldException: No such field hudson.plugins.chucknorris.RoundhouseAction.fact
at com.thoughtworks.xstream.converters.reflection.FieldDictionary.field(FieldDictionary.java:106)
at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.getFieldType(PureJavaReflectionProvider.java:152)
at hudson.util.RobustReflectionConverter.determineType(RobustReflectionConverter.java:326)
at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:217)
at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:172)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
at hudson.util.RobustCollectionConverter.populateCollection(RobustCollectionConverter.java:82)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:61)
at hudson.util.RobustCollectionConverter.unmarshal(RobustCollectionConverter.java:73)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
at hudson.util.RobustReflectionConverter.unmarshallField(RobustReflectionConverter.java:261)
at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:221)
at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:172)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
at hudson.util.XStream2.unmarshal(XStream2.java:70)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
at hudson.XmlFile.unmarshal(XmlFile.java:148)
at hudson.model.Run.<init>(Run.java:252)
at hudson.model.AbstractBuild.<init>(AbstractBuild.java:151)
at hudson.model.Build.<init>(Build.java:97)
at hudson.model.FreeStyleBuild.<init>(FreeStyleBuild.java:41)
at sun.reflect.GeneratedConstructorAccessor23.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at hudson.model.AbstractProject.loadBuild(AbstractProject.java:813)
at hudson.model.AbstractProject$1.create(AbstractProject.java:209)
at hudson.model.AbstractProject$1.create(AbstractProject.java:207)
at hudson.model.RunMap.load(RunMap.java:221)
at hudson.model.AbstractProject.onLoad(AbstractProject.java:207)
at hudson.model.Project.onLoad(Project.java:86)
at hudson.model.Items.load(Items.java:107)
at hudson.model.Hudson$12.run(Hudson.java:2108)
at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
at hudson.model.Hudson$3.runTask(Hudson.java:648)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
I've tried to uninstall and reinstall the ChuckNorris Plugin but it doesn't help - what causes this and how can I prevent it from happening??
Jack...
Cliffano Subagio
I just tested ChuckNorris Plugin 0.3 on Hudson 1.338, which was then upgraded to 1.341, and the plugin worked alright without any exception.
What version of Hudson did you upgrade from?
Did you upgrade ChuckNorris Plugin as well?
What version of ChuckNorris Plugin are you using?
Did you upgrade ChuckNorris Plugin as well?
Did you run the build on a slave machine?
Could you also try removing the following lines from the job's config.xml
<hudson.plugins.chucknorris.CordellWalkerRecorder>
<factGenerator/>
</hudson.plugins.chucknorris.CordellWalkerRecorder>
then restart Hudson, reactivate ChuckNorris on the job configuration page, and run another build.
If you still see the same error, please attach or email me (cliffano@gmail.com) your job config.xml (don't forget to filter any non-public info).
Cliffano Subagio
Ok, I managed to reproduce the warning message (please note that it's a warning and not an error)
1. Run a build with ChuckNorris Plugin 0.1 or 0.2, this will appear in the job's build.xml
<hudson.plugins.chucknorris.RoundhouseAction>
<style>BAD_ASS</style>
<fact>Chuck Norris can access private methods.</fact>
</hudson.plugins.chucknorris.RoundhouseAction>
2. Upgrade to ChuckNorris Plugin 0.3, run a build, this will appear in build.xml
<hudson.plugins.chucknorris.RoundhouseAction>
<mStyle>BAD_ASS</mStyle>
<mFact>Chuck Norris can access private methods.</mFact>
</hudson.plugins.chucknorris.RoundhouseAction>
If you restart Hudson and view build#1, you'll see NonExistentFieldException warning because field style and fact no longer exist as they're replaced by mStyle and mFact in 0.3 (my bad for making this mistake of changing the field names, I should've been more careful).
This means build#1 ignores ChuckNorris Plugin and won't display Chuck's image and quote.
Meanwhile, build#2 is ok and displays the image and quote as normal.
I agree that this is annoying and the long stack trace really pollutes the log file.
A quick google search shows that others suffer similar issue:
- PerforcePlugin http://wiki.jenkins-ci.org/display/HUDSON/Perforce+Plugin
- GitSCM http://stackoverflow.com/questions/534308/how-do-you-set-up-hudson-to-work-with-git
- SCMTrigger http://markmail.org/message/rwyzpv5op7y5x4bk#query:hudson%20NonExistentFieldException+page:1+mid:i6emx2rz3y3jw62a+state:results
Not nice. I'll see if there's a way to fix this in the next version.
If you really want to get rid of those warning messages right now, the simplest thing to do is to do mass replace of <style> to <mStyle> and <fact> to <mFact> within <hudson.plugins.chucknorris.RoundhouseAction>, or remove <hudson.plugins.chucknorris.RoundhouseAction> completely from the old builds.
Update: v0.4 should preserve backward compatibility to version 0.1 and 0.2 so that the warning messages will disappear silently by upgrading to 0.4 . Stay tuned!
Cliffano Subagio
I just released v0.4 that should get rid of the NonExistentFieldException from the log file.
Thanks for highlighting this issue to me, sorry it caused you grief with the prev version.
Unknown User (j.godau@schuetze-berlin.de)
We upgraded from Hudson 1.337 to 1.341. The ChuckNorris plugin was and still is Version 0.3
Builds are all run locally (no slave machines).
The error only occurs at Hudson startup (everything else seems to run normally).
I will test the changes to the config.xml files and restart overnight and let you know tomorrow how that goes.
Thanks
Jack...
Unknown User (j.godau@schuetze-berlin.de)
Hi,
I've just done the following:
I did a more thorough search and discovered these entries in the old build.xml files contain:
<hudson.plugins.chucknorris.RoundhouseAction>
<style>BAD_ASS</style>
<fact>Chuck Norris can access private methods.</fact>
</hudson.plugins.chucknorris.RoundhouseAction>
After cleaning these and deleting all chucknorris files from the hudson/plugins directory the errors are gone except for:
INFO: Started all plugins
failed to locate class: com.thoughtworks.xstream.mapper.CannotResolveClassException: hudson.plugins.chucknorris.RoundhouseAction : hudson.plugins.chucknorris.RoundhouseAction
failed to locate class: com.thoughtworks.xstream.mapper.CannotResolveClassException: hudson.plugins.chucknorris.RoundhouseAction : hudson.plugins.chucknorris.RoundhouseAction
failed to locate class: com.thoughtworks.xstream.mapper.CannotResolveClassException: hudson.plugins.chucknorris.RoundhouseAction : hudson.plugins.chucknorris.RoundhouseAction
20.01.2010 11:47:57 hudson.model.Hudson$4 onAttained
Please advise how I might be able to get rid of these last errors?
I want to _completely_ remove all traces of the chucknorris plugin from our system.
Thanks
Jack...
Cliffano Subagio
Unfortunately this one is an open issue http://issues.jenkins-ci.org/browse/JENKINS-3786 (for DiskUsage Plugin, but same prob re uninstalling a plugin)
A similar issue was also raised against Warnings Plugin but was closed as not-reproducible.
I suggest voting for issue JENKINS-3786 so that it appears on the top 10 list and hopefully one of the core devs can look at it.
I know you're not going to like this, but can you try installing ChuckNorris Plugin again but you don't have to activate it on any job, do you still see the CannotResolveClassException?
In the mean time, I'll keep trying to reproduce the exception.
Unknown User (j.godau@schuetze-berlin.de)
After I reinstalled it (without enabling it on any project) I got 6 of these stack traces on startup:
[snip]
If I deactivate it (via the Hudson, manage plugins page) I get 3 of these when I restart:
[snip]
EDIT: I found another three old builds were still in the system with chucknorris tags. I removed these and now no errors appear (whether hudson is present or not).
Thanks for your help!
Regards
Jack...
Cliffano Subagio
After searching the mailing list archive, it looks like the rule of thumb is to never remove a plugin.
Unless, like what you just did, you cleaned up traces of the plugin from the config.xml and build.xml files.
Unknown User (axel.heider@gi-de.com)
Feature Request: allow changing the quotes. Either vie GUI or use a separate file
fbaboschi -
Agree. I'd like that too.
Unknown User (luigi.viggiano@ubs.com)
From my blog :
The only primitive Chuck Norris uses in Java is
ABSOLUTE_FEAR. In fact, in his dialect of Java, it is the only legal symbol in the entire language. There are no variables, because Chuck never varies: the pain he causes is constant. There are no control statements, because Chuck is always in control. There are no classes, because Chuck is is a class by himself. And no package has yet been made that could contain Chuck. You can't useprotectedaccess modifier as nobody can protect you from Chuck Norris. Even the JVM must never run his code optimized; since his code is already optimal, and this would cause a black hole singularity where the processor used to be.Unknown User (deezer)
No Norris in Hudson ver. 1.382, Norris 0.4
Cliffano Subagio
I just tested it against Hudson 1.385 and it worked fine.
Any error? Could you please try 1.385?
kalpesh soni
didnt work on latest jenkins
no check box in configure
Vojtech Krasa
Does not work properly in Firefox, the background image is not visible, in Chome is everything ok.
Jenkins 1.461
Fernando Mantoan
The Subversion link is invalid, the source is located now at: https://github.com/jenkinsci/chucknorris-plugin
Also, the bug of background-image and CSS properties is fixed in the latest pull request: https://github.com/jenkinsci/chucknorris-plugin/pull/1
Adam Monsen
In Jenkins 1.484, "Activate Chuck Norris" is a Post-build Action (not an independent checkbox), and only appears if you add it as such.
Mike Henderson
Is there some way we could have an external XML file for jokes?
Anders Kielsholm
Is there any way that you could add it to the Dashboard View - or that it could be a new feature? It could maybe act on if any on the builds (in the dashboard!) had failed or if all is okay. Would be awesome!!
Patrick Bindy
I'm using Jenkins ver. 1.647 and I've installed the Chuck Norris plugin, but I can't see any option to activate the plugin in the jobs configuration or anywhere else.
I've tried to restart the windows service, uninstall/reinstall the plugin and restart again the windows service, but no change.
I'm using the latest release (1.0), is it compatible with version 1.647 of Jenkins ?