Developer’s guide
Code versionning
Package version follows semantic versionning conventions and is defined in setup.py
.
Releases are generated when new high-level functionnality are implemented (e.g. a new step in the production process), with a documentation role. Production-ready code is fast-forwarded in the prod
branch when needed to match the main
branch.
Tests
Tests can be run in an activated environment with.
conda activate lidar_prod
python -m pytest
One test depends on a large, non-versionned file (665MB), which is accessible from the self-hosted action runner, but not publicly available at the moment. The absence of the file makes the test xfail so that it is not required for local development.
Continuous Integration (CI)
New features are developped in ad-hoc branches (e.g. refactor-database-query
), and merged in the dev
branch. When ready, dev
can be merged in main
.
CI tests are run for pull request to merge on either dev
or main
branches, and on pushes to dev
, main
, and prod
. The CI workflow builds a docker image, runs linting, and tests the code.
Continuous Delivery (CD)
When the event is a push and not a merge request, this means that there was either a direct push to dev
|main
|prod
or that a merge request was accepted. In this case, if the CI workflow passes, the docker image is tagged with the branch name, resulting in e.g. a lidar_prod:prod
image that is up to date with the branch content. See [../tutorials/use.md] for how to leverage such image to run the app.
Additionnaly, pushes on the main
branch build this library documentation, which is hosted on Github pages.