The LISA Developer Guide
The LISA Developer Guide aims at gathering all the informations relevant to collaborative software development for LISA, in order to ease:
- code sharing and development management
- pipeline building, testing and validation
Software project management
GitLab allows to manage developer teams by setting roles to authenticated users:
- Project owner: can configure the project settings
- Masters: can add team members, manage protected branches
- Developers: can create branches, merge request, manage issues, write in the wiki.
See The GitLab documentation for more details.
A software project is defined by:
- a development team;
- a schedule: the principal pieces of code developed in this project will share synchronized development, testing, production phase.
- a subject: what the software is written for.
Each project has its own git repository.
Each project team should agree on a common workflow that settle the way the version system is used. We suggest the following workflow, aka gitflow:
masterbranch is used to commit fully validated version of the code, that is used for production. a
developbranch is used for testing and preparing new release.
Development of new features are done within a dedicated branch, branched off
develop, which is created for this specific purpose. Developers should commit their code as often as possible, with a reference to ticket number when exists and push on a daily basis.
Hot fixes are branched off
Features and hot fixes are merged after approval and review by the rest of the team or the project managers using merge requests.
The release process consists in merging
master, and should be well defined process, with specific rules and tests (see next paragraph).
Tests and performances
New features should be accompagnied by their testing code, including performance test when applicable.
Standard testing frameworks and tools exist for any programming language.
Once designed, written and validated, the test execution should be promoted to the CI engine of the project, for a systematic usage.