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.