feature/integrate-jenkins-code-coverage #3

Merged
torsten merged 19 commits from feature/integrate-jenkins-code-coverage into main 2026-10-22 20:59:05 +00:00
19 Commits
Author SHA1 Message Date
torstenandCopilot 08edfc17ee Fix Jenkins coverage plugin syntax: use recordCoverage instead of lcovAdapter
qt-migration-copilot-demo/pipeline/pr-main This commit looks good
qt-migration-copilot-demo/pipeline/head Build queued...
- Jenkins Coverage Plugin 4.x+ uses recordCoverage method
- Replaced deprecated publishCoverage with lcovAdapter syntax
- New syntax: recordCoverage tools: [[parser: 'LCOV', pattern: '...']]

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 02bccf38a4ee
2026-10-22 19:54:34 +02:00
torstenandCopilot 63444f8f14 Fix lcov unused exclude pattern error
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
Add 'unused' to --ignore-errors to handle exclude patterns that may not match
all files in all build configurations.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: b013634f799e
2026-10-22 19:52:37 +02:00
torstenandCopilot 2099761c09 Fix Jenkins agent label: use 'agent any' instead of 'label any'
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 1502e571778c
2026-10-22 19:47:38 +02:00
torstenandCopilot 7d7adf5a54 Jenkinsfile: Build Docker image locally when not present
qt-migration-copilot-demo/pipeline/pr-main Something is wrong with the build of this commit
- Add Docker Image stage that checks if image exists and builds if needed
- Fix nested stages structure in Build and Test stage
- Docker image built on Jenkins host instead of pulling from registry
- Resolves 'pull access denied' error when image not in registry

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 443ea4c1ce1c
2026-10-22 19:45:37 +02:00
torsten 0162466168 Fix Dockerfile: GID 1001, remove genhtml (included in lcov), cleanup test file
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
Entire-Checkpoint: 0d9a8cfb0768
2026-10-22 19:36:19 +02:00
torsten 4f6b09db3e Fix Coverage stage branch check for PR builds
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
Use CHANGE_BRANCH for PR builds (BRANCH_NAME is PR-3 in PR context)

Entire-Checkpoint: 7a9bf7a0810d
2026-10-22 19:26:50 +02:00
torstenandCopilot 2117e2ff80 Allow Coverage stage on feature branches
qt-migration-copilot-demo/pipeline/pr-main This commit looks good
- Update branch condition to include feature/* branches
- Coverage stage now runs on main, master, coverage.*, and feature.* branches

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 29232d1106cb
2026-10-22 19:23:06 +02:00
torstenandCopilot fda4b23734 Fix AutoMOC: include correct moc file in test_mainwindow.cpp
qt-migration-copilot-demo/pipeline/pr-main This commit looks good
- Changed #include from test_main.moc to test_mainwindow.moc
- Required for Qt Meta-Object Compiler to process Q_OBJECT macro

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 5ac05d07f260
2026-10-22 19:18:06 +02:00
torstenandCopilot 78d273a07a Rename test file to match policy script pattern
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
- Rename tests/test_main.cpp to tests/test_mainwindow.cpp
- Update CMakeLists.txt to reference new test filename
- This ensures policy check script finds matching test for MainWindow.cpp

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: fa1f655c111a
2026-10-22 18:52:58 +02:00
torstenandCopilot 468e18560f Fix duplicate main() linker error in tests
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
- Merged test_mainwindow.cpp tests into test_main.cpp to have single main()
- Removed test_mainwindow.cpp from CMakeLists.txt test executable
- Qt test executables should have only one main() via QTEST_MAIN()

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 0f6858921c53
2026-10-22 18:49:11 +02:00
torsten c312c7ab31 Fix QString literals in test_mainwindow.cpp
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
Replace u""_s with QStringLiteral() for compiler compatibility

Entire-Checkpoint: 7fd5c52cf858
2026-10-22 18:45:30 +02:00
torstenandCopilot 27dbe998b1 Fix Jenkins workspace permission issue
qt-migration-copilot-demo/pipeline/pr-main There was a failure building this commit
- Add jenkins user to Dockerfile.ci and run as non-root
- Remove '-u root:root' args from Jenkinsfile Docker agent
- Build files will now be owned by jenkins user, allowing proper cleanup

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: f545f3d8aa33
Signed-off-by: twi-devel <torsten.wierschin@life-maps.com>
2026-10-22 18:42:44 +02:00
torstenandCopilot a89ac10175 Fix Jenkins workspace cleanup with chmod before rm
- Replace cleanWs with shell commands that fix permissions before deletion
- Handle build/, build-coverage/, and coverage/ directories
- Use chmod -R u+w to make files writable before rm -rf
- Addresses 'Operation not permitted' errors on Jenkins host

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 9acfd6cc578c
Signed-off-by: twi-devel <torsten.wierschin@life-maps.com>
2026-10-22 18:42:43 +02:00
torstenandCopilot a871f87775 Add workspace cleanup stage to prevent corruption issues
- Add Cleanup stage at pipeline start to wipe workspace before checkout
- Prevents 'corrupt .git repository' errors from stale build artifacts
- Uses disableDeferredWipeout for thorough cleanup

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: f6767c4eba2c
Signed-off-by: twi-devel <torsten.wierschin@life-maps.com>
2026-10-22 18:42:43 +02:00
torsten fa3a27c123 fix: CMake include path and QString literals
- Add target_include_directories for test target to find MainWindow.h
- Replace u""_s literals with QStringLiteral() for compiler compatibility
- Fixes Jenkins build errors

Entire-Checkpoint: 0e6491fe1b1c
Signed-off-by: twi-devel <torsten.wierschin@life-maps.com>
2026-10-22 18:42:43 +02:00
torsten fc70e757bd style: Apply clang-format to all C++ files
- Format MainWindow.cpp, MainWindow.h, main.cpp
- Format test files (test_main.cpp, test_mainwindow.cpp)
- Fixes Jenkins clang-format policy check

Entire-Checkpoint: ea47c089bf3a
Signed-off-by: twi-devel <torsten.wierschin@life-maps.com>
2026-10-22 18:42:43 +02:00
torsten 44f52cb2db fix: Add Qt6::Test component to find_package
- Missing Qt6::Test component caused CMake configuration failure in Jenkins
- Required for test executable linking

Entire-Checkpoint: ec1d65182c71
Signed-off-by: twi-devel <torsten.wierschin@life-maps.com>
2026-10-22 18:42:43 +02:00
torstenandCopilot 83633f1095 ci: Add current SSH key to allowed_signers
Add ED25519 key for torsten.wierschin@life-maps.com to enable
signed commits for CI policy validation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 074fdb682ad5
Signed-off-by: twi-devel <torsten.wierschin@life-maps.com>
2026-10-22 18:42:43 +02:00
torstenandCopilot 78a81a95b6 feat: Add LCOV coverage support for Jenkins CI
- Add ENABLE_COVERAGE CMake option with gcov flags
- Create collect-coverage.sh script for LCOV workflow
- Add Qt6 test files with QTest framework
- Update Jenkinsfile with Coverage stage (main/master/coverage.*)
- Update CI Docker image with lcov and genhtml packages
- Add .gitignore entries for coverage artifacts
- Add COVERAGE.md documentation

Coverage workflow:
1. Configure with -DENABLE_COVERAGE=ON
2. Build and run tests to generate .gcda/.gcno files
3. Collect coverage with lcov
4. Filter out Qt/system libraries
5. Generate HTML report and lcov.info for Jenkins

Jenkins publishes coverage/lcov.info using Coverage Plugin.
Coverage stage only runs on protected branches.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 7783c7698334
Entire-Checkpoint: 70341e29996b
Signed-off-by: twi-devel <torsten.wierschin@life-maps.com>
2026-10-22 18:42:43 +02:00