Hi bl0ck3r,
this puzzled me as well at the beginning, but there's actually quite
some logic to it ;O):
A project is a special case of a job, i.e. all projects are jobs, but
not all jobs are projects.
Cheers,
Simon.
The long story:
Perhaps it helps to extend to mentally the names to "*general purpose*
jobs" and "*software building* projects" (although the latter don't need
build software, they are tailored to this use case).
In the case of "new job", Jenkins can't not know yet, if the new job
will be of the project subtype. On the other hand, once you have chosen
to create a project, this is reflected as specific as possible in the UI
("Project Foo"). If you look at the precise wording on the "New Job"
page, you'll realize the subtle differences (e.g. "Build a free-style
software *project*" as opposed to "Monitor an external *job*").
An example of a job that is *not* a project is the lesser known
"external job" that receives notifications from events that happen
outside Jenkins, but should be tracked inside Jenkins (e.g. system
restarts etc.). See
https://wiki.jenkins-ci.org/display/JENKINS/Monitoring+external+jobs for
more about this job type.
For the records, this is actual class model used by Jenkins internally
(extending sub-classes are indented below their super-class:
Job
AbstractProject
MatrixProject (a.k.a. "multi-configuration project")
Project
FreeStyleProject
MatrixConfiguration (a single configuration of a matrix project)
StubJob
ViewJob
ExternalJob
Only FreeStyleProject, MatrixProject, and ExternalJob are visible on the
"New Job" page.
So, how could we could improve the understanding of the difference
between "Job" and "Project" in the UI? Any suggestions?
--
bl0ck3r (15.05.2012 15:02):
The UI needs to be more consistent. In the main Jenkins menu, I can
create a "New Job" called Foo, but after it is created, the page is
titled "Project Foo". This is inconsistent and got me confused for a
couple of days as I was learning Jenkins.