Skip to content

Commit 35fc0aa

Browse files
authored
Merge pull request #6164 from hjmjohnson/ci-minimize-redundancy
COMP: Minimize redundant Azure CI matrix (issue #6163)
2 parents 29c57fe + 5a29ced commit 35fc0aa

7 files changed

Lines changed: 37 additions & 511 deletions

CMake/CTestCustom.cmake.in

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,30 @@ set(CTEST_CUSTOM_WARNING_EXCEPTION
132132
# ignore some third party warnings
133133
".*Modules/ThirdParty/.*warning:.*Wzero-as-null-pointer-constant"
134134
".*Modules/ThirdParty/Eigen3/.*warning:.*"
135+
# MSVC emits "warning C####:" rather than "warning:"; cover that form too
136+
# so Eigen-internal MSVC warnings (e.g. C4750 from
137+
# Eigenvalues/Tridiagonalization.h, "function with _alloca() inlined into
138+
# a loop") do not fail the dashboard.
139+
".*Modules.ThirdParty.Eigen3.*warning C[0-9]+:.*"
140+
# GCC IPA-CP cloning produces -Wmaybe-uninitialized false positives in
141+
# Core/products/SelfadjointMatrixVector.h at -O3 + C++20 on Ubuntu 24.04
142+
# (and matching ARM toolchains); the multi-line "note: by argument N of
143+
# type ... declared here" continuation also lives in Eigen3 paths.
144+
# The 'warning:' wildcard above already covers the primary line; this
145+
# extra pattern silences GCC's path-less continuation lines that the
146+
# reporter associates with the same Eigen file.
147+
".*Modules/ThirdParty/Eigen3/.*note:.*"
148+
# Apple clang on macOS does not recognise GCC's -Wmaybe-uninitialized
149+
# warning group, so every use of ITK_GCC_SUPPRESS_Wmaybe_uninitialized
150+
# in itkMacro.h emits a four-line diagnostic burst (warning + three
151+
# macro-expansion notes per site). At ~50 use-sites that's ~200
152+
# warnings on a single Darwin Python build, which exceeds the dashboard
153+
# ceiling. Suppressing the four lines individually keeps any genuine
154+
# -Wunknown-warning-option diagnostic from a non-Wmaybe context still
155+
# visible.
156+
"warning: unknown warning group '-Wmaybe-uninitialized'"
157+
"note: expanded from macro 'ITK_GCC_SUPPRESS_Wmaybe_uninitialized'"
158+
"note: expanded from macro 'ITK_PRAGMA'"
135159

136160
# CircleCI distcc warnings
137161
".*WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED.*"

Testing/ContinuousIntegration/AzurePipelinesLinux.yml

Lines changed: 9 additions & 218 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ variables:
3434
CCACHE_NOHASHDIR: 'true'
3535
CCACHE_SLOPPINESS: pch_defines,time_macros
3636
jobs:
37-
- job: Linux
37+
- job: LinuxLegacyRemovedCxx20
3838
timeoutInMinutes: 0
3939
cancelTimeoutInMinutes: 300
4040
pool:
41-
vmImage: ubuntu-22.04
41+
vmImage: ubuntu-24.04
4242
steps:
4343
- checkout: self
4444
clean: true
@@ -80,9 +80,9 @@ jobs:
8080

8181
- task: Cache@2
8282
inputs:
83-
key: '"ccache-v4" | "$(Agent.OS)" | "Linux" | "$(Build.SourceVersion)"'
83+
key: '"ccache-v4" | "$(Agent.OS)" | "LinuxLegacyRemovedCxx20" | "$(Build.SourceVersion)"'
8484
restoreKeys: |
85-
"ccache-v4" | "$(Agent.OS)" | "Linux"
85+
"ccache-v4" | "$(Agent.OS)" | "LinuxLegacyRemovedCxx20"
8686
path: $(CCACHE_DIR)
8787
displayName: 'Restore ccache'
8888

@@ -97,116 +97,13 @@ jobs:
9797
cat > dashboard.cmake << EOF
9898
set(CTEST_BUILD_CONFIGURATION "MinSizeRel")
9999
set(CTEST_CMAKE_GENERATOR "Ninja")
100-
set(dashboard_cache "
101-
BUILD_SHARED_LIBS:BOOL=OFF
102-
BUILD_EXAMPLES:BOOL=OFF
103-
ITK_WRAP_PYTHON:BOOL=OFF
104-
CMAKE_C_COMPILER_LAUNCHER:STRING=ccache
105-
CMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
106-
ITK_COMPUTER_MEMORY_SIZE:STRING=4.5
107-
")
108-
set(CTEST_TEST_ARGS EXCLUDE_LABEL BigIO) # Disabled to conserve disk space
109-
include(\$ENV{AGENT_BUILDDIRECTORY}/ITK-dashboard/azure_dashboard.cmake)
110-
EOF
111-
cat dashboard.cmake
112-
workingDirectory: $(Agent.BuildDirectory)/ITK-dashboard
113-
displayName: 'Configure CTest script'
114-
115-
- bash: |
116-
set -x
117-
118-
c++ --version
119-
cmake --version
120-
121-
ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2
122-
displayName: 'Build and test'
123-
env:
124-
CTEST_OUTPUT_ON_FAILURE: 1
125-
CCACHE_MAXSIZE: 2.4G
126-
127-
- bash: ccache --show-stats
128-
condition: always()
129-
displayName: 'ccache stats'
130-
131-
- bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build
132-
condition: succeededOrFailed()
133-
displayName: 'Report build warnings and errors'
134-
135-
- script: |
136-
ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml
137-
condition: succeededOrFailed()
138-
displayName: 'Format CTest output in JUnit format'
139-
140-
- task: PublishTestResults@2
141-
inputs:
142-
testResultsFiles: "$(Agent.BuildDirectory)/JUnitTestResults.xml"
143-
testRunTitle: 'CTest $(Agent.OS)'
144-
condition: succeededOrFailed()
145-
displayName: 'Publish test results'
146-
147-
- job: LinuxLegacyRemoved
148-
timeoutInMinutes: 0
149-
cancelTimeoutInMinutes: 300
150-
pool:
151-
vmImage: ubuntu-22.04
152-
steps:
153-
- checkout: self
154-
clean: true
155-
fetchDepth: 5
156-
- bash: |
157-
set -x
158-
if [ -n "$(System.PullRequest.SourceCommitId)" ]; then
159-
git checkout $(System.PullRequest.SourceCommitId)
160-
fi
161-
displayName: 'Checkout pull request HEAD'
162-
163-
- bash: |
164-
set -x
165-
sudo pip3 install ninja
166-
sudo apt-get update
167-
sudo apt-get install -y python3-venv ccache locales
168-
sudo locale-gen de_DE.UTF-8
169-
sudo python3 -m pip install lxml scikit-ci-addons
170-
displayName: 'Install dependencies'
171-
172-
- bash: |
173-
set -x
174-
git clone -b dashboard --single-branch https://github.com/InsightSoftwareConsortium/ITK.git ITK-dashboard
175-
workingDirectory: $(Agent.BuildDirectory)
176-
displayName: 'Download dashboard script'
177-
178-
- task: Cache@2
179-
inputs:
180-
key: '"externaldata" | "v1" | **/*.cid'
181-
restoreKeys: |
182-
"externaldata" | "v1"
183-
path: $(ExternalData_OBJECT_STORES)
184-
displayName: 'Restore ExternalData object store'
185-
186-
- task: Cache@2
187-
inputs:
188-
key: '"ccache-v4" | "$(Agent.OS)" | "LinuxLegacyRemoved" | "$(Build.SourceVersion)"'
189-
restoreKeys: |
190-
"ccache-v4" | "$(Agent.OS)" | "LinuxLegacyRemoved"
191-
path: $(CCACHE_DIR)
192-
displayName: 'Restore ccache'
193-
194-
- bash: |
195-
set -x
196-
ccache --zero-stats
197-
ccache --evict-older-than 7d
198-
ccache --show-config
199-
displayName: 'ccache config and maintenance'
200-
201-
- bash: |
202-
cat > dashboard.cmake << EOF
203-
set(CTEST_BUILD_CONFIGURATION "MinSizeRel")
204-
set(CTEST_CMAKE_GENERATOR "Ninja")
205-
set(BUILD_NAME_SUFFIX "LegacyRemoved")
100+
set(BUILD_NAME_SUFFIX "LegacyRemovedCxx20")
206101
set(dashboard_cache "
207102
ITK_LEGACY_REMOVE:BOOL=ON
103+
CMAKE_CXX_STANDARD:STRING=20
104+
CMAKE_CXX_STANDARD_REQUIRED:BOOL=ON
208105
BUILD_SHARED_LIBS:BOOL=OFF
209-
BUILD_EXAMPLES:BOOL=OFF
106+
BUILD_EXAMPLES:BOOL=ON
210107
ITK_WRAP_PYTHON:BOOL=OFF
211108
CMAKE_C_COMPILER_LAUNCHER:STRING=ccache
212109
CMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
@@ -247,112 +144,6 @@ jobs:
247144
- task: PublishTestResults@2
248145
inputs:
249146
testResultsFiles: "$(Agent.BuildDirectory)/JUnitTestResults.xml"
250-
testRunTitle: 'CTest $(Agent.OS) LegacyRemoved'
147+
testRunTitle: 'CTest $(Agent.OS) LegacyRemovedCxx20'
251148
condition: succeededOrFailed()
252149
displayName: 'Publish test results'
253-
254-
- job: LinuxCxx20
255-
timeoutInMinutes: 0
256-
cancelTimeoutInMinutes: 300
257-
pool:
258-
vmImage: ubuntu-24.04
259-
steps:
260-
- checkout: self
261-
clean: true
262-
fetchDepth: 5
263-
- bash: |
264-
set -x
265-
if [ -n "$(System.PullRequest.SourceCommitId)" ]; then
266-
git checkout $(System.PullRequest.SourceCommitId)
267-
fi
268-
displayName: "Checkout pull request HEAD"
269-
- task: UsePythonVersion@0
270-
inputs:
271-
versionSpec: "3.10"
272-
architecture: "x64"
273-
- bash: |
274-
set -x
275-
sudo pip3 install ninja
276-
sudo apt-get update
277-
sudo apt-get install -y python3-venv ccache locales
278-
sudo locale-gen de_DE.UTF-8
279-
sudo python3 -m pip install lxml scikit-ci-addons
280-
displayName: "Install dependencies"
281-
- bash: |
282-
set -x
283-
git clone -b dashboard --single-branch https://github.com/InsightSoftwareConsortium/ITK.git ITK-dashboard
284-
workingDirectory: $(Agent.BuildDirectory)
285-
displayName: "Download dashboard script"
286-
287-
- task: Cache@2
288-
inputs:
289-
key: '"externaldata" | "v1" | **/*.cid'
290-
restoreKeys: |
291-
"externaldata" | "v1"
292-
path: $(ExternalData_OBJECT_STORES)
293-
displayName: 'Restore ExternalData object store'
294-
295-
- task: Cache@2
296-
inputs:
297-
key: '"ccache-v4" | "$(Agent.OS)" | "LinuxCxx20" | "$(Build.SourceVersion)"'
298-
restoreKeys: |
299-
"ccache-v4" | "$(Agent.OS)" | "LinuxCxx20"
300-
path: $(CCACHE_DIR)
301-
displayName: 'Restore ccache'
302-
303-
- bash: |
304-
set -x
305-
ccache --zero-stats
306-
ccache --evict-older-than 7d
307-
ccache --show-config
308-
displayName: 'ccache config and maintenance'
309-
310-
- bash: |
311-
cat > dashboard.cmake << EOF
312-
set(CTEST_BUILD_CONFIGURATION "MinSizeRel")
313-
set(CTEST_CMAKE_GENERATOR "Ninja")
314-
set(BUILD_NAME_SUFFIX "Cxx20")
315-
set(dashboard_cache "
316-
CMAKE_CXX_STANDARD:STRING=20
317-
CMAKE_CXX_STANDARD_REQUIRED:BOOL=ON
318-
BUILD_SHARED_LIBS:BOOL=OFF
319-
BUILD_EXAMPLES:BOOL=OFF
320-
ITK_WRAP_PYTHON:BOOL=OFF
321-
CMAKE_C_COMPILER_LAUNCHER:STRING=ccache
322-
CMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
323-
ITK_COMPUTER_MEMORY_SIZE:STRING=4.5
324-
")
325-
set(CTEST_TEST_ARGS EXCLUDE_LABEL BigIO) # Disabled to conserve disk space
326-
include(\$ENV{AGENT_BUILDDIRECTORY}/ITK-dashboard/azure_dashboard.cmake)
327-
EOF
328-
cat dashboard.cmake
329-
workingDirectory: $(Agent.BuildDirectory)/ITK-dashboard
330-
displayName: "Configure CTest script"
331-
- bash: |
332-
set -x
333-
c++ --version
334-
cmake --version
335-
ctest -S $(Agent.BuildDirectory)/ITK-dashboard/dashboard.cmake -V -j 2
336-
displayName: "Build and test"
337-
env:
338-
CTEST_OUTPUT_ON_FAILURE: 1
339-
CCACHE_MAXSIZE: 2.4G
340-
341-
- bash: ccache --show-stats
342-
condition: always()
343-
displayName: 'ccache stats'
344-
345-
- bash: python3 $(Build.SourcesDirectory)/Testing/ContinuousIntegration/report_build_diagnostics.py $(Build.SourcesDirectory)-build
346-
condition: succeededOrFailed()
347-
displayName: 'Report build warnings and errors'
348-
349-
- script: |
350-
ci_addons ctest_junit_formatter $(Build.SourcesDirectory)-build > $(Agent.BuildDirectory)/JUnitTestResults.xml
351-
condition: succeededOrFailed()
352-
displayName: "Format CTest output in JUnit format"
353-
- task: PublishTestResults@2
354-
inputs:
355-
testResultsFiles: "$(Agent.BuildDirectory)/JUnitTestResults.xml"
356-
testRunTitle: "CTest $(Agent.OS) Cxx20"
357-
condition: succeededOrFailed()
358-
displayName: "Publish test results"

Testing/ContinuousIntegration/AzurePipelinesLinuxPython.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ jobs:
9898
python_executable=`which python3`
9999
python_root_dir=$(dirname $(dirname ${python_executable}))
100100
cat > dashboard.cmake << EOF
101-
set(CTEST_BUILD_CONFIGURATION "MinSizeRel")
101+
set(CTEST_BUILD_CONFIGURATION "Release")
102102
set(CTEST_CMAKE_GENERATOR "Ninja")
103103
set(BUILD_NAME_SUFFIX "-Python")
104104
set(dashboard_cache "

0 commit comments

Comments
 (0)