framework is the deployment unit used to factorize the documentation and binaries repositories of a collection of related packages. It basically contains:
- the jekyll templated markdown or html pages describing the framework from a global point of view or more specific to packages.
- optionally packages binaries if it is used has a binaries repository.
- git version control information.
CMake projects files used to :
- build the source static site
- generate configuration files
frameworks have been imagined since it can become quite complex to understand the relationship between many related packages.
A framework is implemented as folder hierarchy inside a worskpace. This is in the same time a CMake project and a git repository.
A framework is a CMake project structured according to the standard folder hierarchy defined below:
- the root folder of the framework has the name of the framework. This folder is basically a git repository which allows to manage concurrent work and version control on a package’s content.
.gitfolder contains version control related information, automatically managed by the git tool.
- the root
.gitignorefile is used to exclude from version control some artefacts like temporary files.
CMakeLists.txtfile is used to describe how to build the framework. It also contains meta-information on the framework (authors and institutions, repository address, license, etc.).
buildfolder contains results from build process.
srcfolder contains hand written documentation files as well as files generated by packages. Each subdirectory has a specific role:
assetsfolder contains static binary assets, like images, used in the framework global description.
pagesfolder contains files used to describe the framework from a global point of view. Some of these files are pre-generated, other are hand-written.
_postsfolder contains specific markdown files used to notify important activities in the framework lifecycle. These files are hand written if they concern the framework as a whole, or they are automatically generated by packages when the activity concerns a specific package.
_packagesfolder contains specific markdown files used to describe a given package belonging to the framework. It can also contain binaries for that package, in such a case the framework acts as a binary repository for the package. This folder’s content is mainly modified by packages contributing to the framework.
sharefolder contains some specific files used by the build process.
cmakesubfolder contains cmake scripts (notably find scripts) that the framework uses during configuration.
cisubfolder contains scripts used during continuous integration process.
license.txtfile contains the license that applies to the static site source code itself. This file is generated by the build process.
README.mdfile contains the text presenting the framework in the source project online site.
.gitlab-ci.ymlfile ise used to control and configure the continuous integration process of the framework.
Frameworks, as any deployment unit, are also
git repositories, whose content is structured according to the previously defined pattern.
git is used to version all text files used (cmake scripts, html or markdown sources, etc.).
Contrarily to packages, there is no semantic version bound to a framework.