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

hjmjohnson and others added 3 commits March 19, 2026 18:59
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>
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>
@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!!

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