This document summarizes the technical baseline of OpenSidescan, the CI migration status, and maintenance rules for repository-level changes.
- Keep
version.mdupdated for every planned and completed change. - Any CI, build, test, packaging, or documentation modification must be recorded in
version.md.
- Main language: C++
- Domain: Side-scan sonar processing, detection, visualization, and installer packaging
- Main build system: CMake + platform scripts (
Scripts/*.sh,Scripts/*.bat) - Third-party code strategy: git submodules (
MBES-lib,QDarkStyleSheet)
- Legacy CI:
Jenkinsfile - New CI target: GitHub Actions workflow in
.github/workflows/ci.yml - Migrated flows:
- Linux file lock tests
- Linux unit test build/run
- Linux application build
- Windows file lock tests (
windows-latest) - Windows unit tests (
windows-latest) - Windows application build (
windows-latest) - In-CI signing is disabled by policy note (HSM service or dedicated signing host recommended)
build-essential,cmakelibeigen3-dev,libopencv-dev,qtbase5-dev
- MSBuild toolchain
- OpenCV and Qt available at paths expected by existing CMake files
- Existing project scripts in
Scripts/*.bat
signtool.exeinstalled on signing runner- Code-signing certificate available either:
- in the machine certificate store (auto-select mode
/a), or - through GitHub secrets (
WINDOWS_SIGN_CERT_B64,WINDOWS_SIGN_CERT_PASSWORD)
- in the machine certificate store (auto-select mode
- Timestamp service:
http://timestamp.digicert.com
- Root
CMakeLists.txtdefines an emptyPROJECT_VERSION, which triggers a CMake warning. - Linux unit-test CMake uses legacy dataset download logic targeting
/optand internal URL references. - Windows CMake files currently rely on hardcoded local dependency paths (
C:/LIBS,C:/Qt).
- Define a canonical project version in CMake and propagate it to CI and packaging.
- Replace hardcoded Windows dependency paths with a package-manager/toolchain approach.
- Decouple test datasets from internal-only hosts and non-portable absolute paths.