When I am the only one committing, I just build and test before actually committing. I usually use a makefile target like :
That configures, builds, runs all tests (valgrind aware), runs lints, etc. As I know I'll be the only one pushing, I don't really need the power of something like Hudson.
Additionally, in an environment where you have several branches feeding a main repository, if everyone follows the always pull before you commit or push, the CI server might be a little over kill. A well written rule that the author of whatever broke the last build buys pizza on Friday usually keeps things running very smoothly :)
If it gets into a situation where a project is clearly divided into sub systems that have their own leaders, you really need to contemplate using something like Hudson. Someone might test locally, lose a race with another sub system and end up pushing something toxic.
Also, if you are maintaining a fork of a fast moving project (for instance, your own set of patches to the Linux kernel), you should really consider using something like Hudson, even though you are 'solo' on that project. This is especially true if you branch / re-base directly from mainline.