Skip to content

DO NOT MERGE: Test collapsible CI log sections and build diagnostics#5974

Draft
hjmjohnson wants to merge 3 commits intoInsightSoftwareConsortium:mainfrom
hjmjohnson:wip-test-dashboard-groupings
Draft

DO NOT MERGE: Test collapsible CI log sections and build diagnostics#5974
hjmjohnson wants to merge 3 commits intoInsightSoftwareConsortium:mainfrom
hjmjohnson:wip-test-dashboard-groupings

Conversation

@hjmjohnson
Copy link
Member

Summary

What this tests

The fork's dashboard branch adds:

  1. Collapsible CI log sections — configure/build/test/coverage/memcheck/submit phases are wrapped in ci_section_start()/ci_section_end() which emit GitHub Actions ::group::, Azure DevOps ##[group], or GitLab CI ANSI section markers
  2. Build diagnostics reportingci_report_build_diagnostics() parses Build.xml after ctest_build() and prints warnings/errors directly to the CI log

Dependencies

⚠️ DO NOT MERGE

This PR must not be merged. The dashboard clone URL must be reverted to upstream before merging PR #5971. Close this PR after verifying CI output.

🤖 Generated with Claude Code

@github-actions github-actions bot added type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots area:Python wrapping Python bindings for a class type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct labels Mar 20, 2026
@hjmjohnson
Copy link
Member Author

@blowekamp Personally, I am loving this new condensed output. I think it makes navigating the logs MUCH easier to find the important information. It is much less noisy.

image

NOTE: The PIxi builds do things differently, so they will look a little different.

@blowekamp
Copy link
Member

That looks really good!

The pixie build already seems to have the steps split, which should give a similar effect with out the additional markup.

@thewtex
Copy link
Member

thewtex commented Mar 20, 2026

Very nice!!

hjmjohnson and others added 2 commits March 22, 2026 07:50
Replace -VV (extra verbose) with -V (verbose) in all CI pipeline
invocations of `ctest -S`. This change applies to all 8 Azure DevOps
pipeline YAML files and the GitHub Actions arm.yml workflow.

Background:

The -VV flag causes CTest to print the full stdout/stderr of every
test, regardless of whether it passed or failed. With ITK's 3000+
tests, this generates hundreds of megabytes of CI log output, making
it difficult to find the actual failure in a failing build.

Every pipeline already sets the environment variable
CTEST_OUTPUT_ON_FAILURE=1, which instructs CTest to print test output
only when a test fails. However, this variable has been effectively
dead code because -VV unconditionally prints all output, overriding
the output-on-failure behavior.

With this change:
- -V (verbose) prints CTest progress: test names, pass/fail status,
  and timing — sufficient for monitoring build progress
- CTEST_OUTPUT_ON_FAILURE=1 now takes effect, printing full test
  output only for tests that fail
- CI logs are dramatically smaller and failures are easier to find

Note: The CTEST_OUTPUT_ON_FAILURE environment variable works in both
direct ctest invocations and ctest -S scripted/dashboard mode. The
ctest_test() CMake command used internally by itk_common.cmake does
not have an OUTPUT_ON_FAILURE keyword argument, but the environment
variable is read by the CTest process regardless of invocation mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ctest_build() captures compiler diagnostics in Build.xml for CDash
submission but does not print them to the CI log.  With -V (instead
of -VV), build output scrolls past quickly and warnings are easy to
miss entirely.

Add report_build_diagnostics.py which parses the <Warning> and
<Error> elements from Build.xml and prints them in a clearly
delimited section.  Add a "Report build warnings and errors" step
to every Azure DevOps and GitHub Actions pipeline, running after
the build/test step with succeededOrFailed()/always() so diagnostics
are reported even when the build fails.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@hjmjohnson hjmjohnson force-pushed the wip-test-dashboard-groupings branch from b173d08 to 0b121c8 Compare March 22, 2026 12:50
@hjmjohnson hjmjohnson closed this Mar 22, 2026
@hjmjohnson hjmjohnson reopened this Mar 22, 2026
Point all CI pipelines at hjmjohnson/ITK dash-board-github-ci-instrument-groupings
branch instead of upstream dashboard to test collapsible CI log sections
and build diagnostics reporting from PR InsightSoftwareConsortium#5973.

This commit must NOT be merged — revert the dashboard clone URL
before merging PR InsightSoftwareConsortium#5971.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@hjmjohnson hjmjohnson force-pushed the wip-test-dashboard-groupings branch from 0b121c8 to e6c369c Compare March 22, 2026 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:Python wrapping Python bindings for a class type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants