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.

Reply via email to