Plugin Information
Displays a picture of Chuck Norris (instead of Hudson the butler) and a random Chuck Norris 'The Programmer' fact on each build page.
Download & Installation
You can download this plugin from dev.java.net and install it from Hudson Manage Plugins menu, or install it directly from Hudson Plugins Update Center.
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
Credits
Chuck Norris 'The Programmer' facts and Emotional Hudson Plugin.
Comments (15)
Oct 01
Greg Moore says:
Me thinks some one has way way too much time on there hands. LOL whats next Bru...Me thinks some one has way way too much time on there hands. LOL
whats next Bruce Lee?
Oct 15
Cliffano Subagio says:
Just a plugin I wrote when I first learnt how to write a Hudson plugin :). Hon...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.
Oct 07
Brian J. Sayatovic says:
I've installed it, but it only shows "happy" Chuck Norris, and no statement abou...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?
Oct 15
Cliffano Subagio says:
The image depends on the build result. Success -> happ...The image depends on the build result.
Success -> happy Chuck
Warning/Aborted -> alert Chuck
Failure -> badass Chuck
The text is random.
Oct 22
Graham Keogh says:
Doesn't seem to work with 1.318. I get the text displayed but no graphics. Look...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!!!
Dec 30
Cliffano Subagio says:
I tested the plugin with 1.318 and it worked fine. My suggestion is to reinstall...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.
Jan 19
Jörg Godau says:
Upgraded to Hudson 1.341 and am getting lots of errors like: 19.01.2010 15:00:4...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...
Jan 19
Cliffano Subagio says:
I just tested ChuckNorris Plugin 0.3 on Hudson 1.338, which was then upgraded to...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).
Jan 20
Cliffano Subagio says:
Ok, I managed to reproduce the warning message (please note that it's a warning ...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.hudson-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!
Jan 21
Cliffano Subagio says:
I just released v0.4 that should get rid of the NonExistentFieldException from t...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.
Jan 19
Jörg Godau says:
We upgraded from Hudson 1.337 to 1.341. The ChuckNorris plugin was and still is ...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...
Jan 20
Jörg Godau says:
Hi, I've just done the following: removed all of the ChuckNorris entries from...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...
Jan 20
Cliffano Subagio says:
Unfortunately this one is an open issue http://issues.hudson-ci.org/browse/HUDSO...Unfortunately this one is an open issue http://issues.hudson-ci.org/browse/HUDSON-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 HUDSON-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.
Jan 21
Jörg Godau says:
After I reinstalled it (without enabling it on any project) I got 6 of these sta...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...
Jan 21
Cliffano Subagio says:
After searching the mailing list archive, it looks like the rule of thumb is to ...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.