Jenkins : Jenkins Pieces in GitHub

Executable WAR: Who's calling whom?

There are some pages in the Wiki about Jenkins overall architecture and libraries it's using (e.g. Stapler, accidentally by the same author who started Hudson / Jenkins ;-) ) as well as some instructions about how to build Jenkins, yet it's not so obvious in the first page what building blocks Jenkins is made up of or - in other words - locate the actual source code of some specific portion of it to understand it's behaviour. Therefore here is some little overview about what pices are where and how they come together.

Note: The fact that https://github.com/jenkinsci contains Jenkins himself as well as a lot of plugins (which makes some 200 repositories) doesn't make it appear too transparently actually.

Finding the executable WAR's Main class

see: Jenkins GitHub: extras-executable-war

Contains a class named Main.java (in the default package) which is the entry point into Jenkins when called on the command line as

java -jar jenkins.war

One may get confused by finding a different class called Main,hudson.Main in the jenkins repository of the Jenkins GitHub.

This is just something different. For the application entry point you're looking for the class called Main (in a file called Main.java) without any package name prefix. Yet you will likely stuble over hudson.Main first as it's part of the core jenkins repository where you're initially pointed to in the Building Jenkins document, which does not actually refer you to the extras-executable-war repository at all.

Shedding light on JEE containers: Jetty but still Winstone?

ML post: Winstone [not Jenkins! ~the editor] is now powered by Jetty