Project Recipes¶
Project recipes include some aspects of software projects:
Name of the project
Repository URL
Specific build instructions if different from default build instructions for the project’s nature. Moreover, customizations are possible.
A basic project recipe, which in this case would be
stored in a file named rsb-cpp.project
, looks like this:
templates:
- code-cor-lab
- cmake-cpp
- base
variables:
description: >-
C++ implementation of the robotics service bus (RSB)
keywords:
- middleware
- integration
- robotics
repository: https://code.cor-lab.org/git/rsb.git.cpp
redmine-project: rsb
cmake.options:
- BUILD_TESTS=OFF
- BUILD_EXAMPLES=OFF
- "@{next-value|[]}"
The following fields are most important:
FILENAME
This is not an actual field but the name of the recipe file with its extension removed (e.g.
rsb-cpp
for a recipe file namedrsb-cpp.project
).Must be unique w.r.t. to all other projects in the repository. Should in general not contain any version information (unless particular versions of a project genuinely constitute their own projects).
templates
TODO A list of template names characterizing the technical and organizational nature of the project. For most basic purposes, it is sufficient to choose a suitable template for the build system used by the project and the
base
template to inherit specifications for the general nature of build jobs to create.TODO It is important to note that templates first mentioned have higher precedence for defining variables then templates further to the end of the list. Therefore, the
base
template should always be listed last so that more specific templates can override variables defined in the base template.
Repository Information¶
variables
» scm
Kind of the repository from which a copy of the project can be obtained.
Only needed if the repository kind cannot be guessed from the value of the
repository
field.Currently supported values:
git
,svn
,mercurial
,archive
.
variables
» repository
URL of the repository from which a copy of the project can be obtained.
When omitted, automatic analysis of the project will not be performed and the generated Jenkins job will not obtain a copy of the project as the first build step.
Project Description¶
variables
» natures
A list of natures of the project, for example CMake project, Maven project, etc.
The nature of a project can guide the analysis of the associated repository.
This information is usually provided by templates specified in the
template
field, but can be overriden, for example in “freestyle” projects or other more complicated projects.
variables
» description
A description of the project can be multiple lines or even paragraphs.
variables
» keywords
A list of keywords characterizing the project.
Dependencies¶
See also
- concept-dependencies
TODO
There are two ways determining :
Dependency information for a given project can be manually specified in the fields
variables
» extra-requires
TODO
variables
» extra-provides
TODO