Skip to content

Commit 0b91ca8

Browse files
authored
Merge pull request #58 from jhlegarreta/UseAzurePipelinesForCI
ENH: Add Azure Pipelines CI.
2 parents f146124 + a587ac1 commit 0b91ca8

File tree

10 files changed

+448
-256
lines changed

10 files changed

+448
-256
lines changed

.circleci/config.yml

Lines changed: 0 additions & 86 deletions
This file was deleted.

.travis.yml

Lines changed: 0 additions & 20 deletions
This file was deleted.

README.rst

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,12 @@
11
ITKModuleTemplate
22
=================
33

4-
.. |CircleCI| image:: https://circleci.com/gh/InsightSoftwareConsortium/ITKModuleTemplate.svg?style=shield
5-
:target: https://circleci.com/gh/InsightSoftwareConsortium/ITKModuleTemplate
4+
.. image:: https://dev.azure.com/InsightSoftwareConsortium/ITKModules/_apis/build/status/InsightSoftwareConsortium.ITKModuleTemplate?branchName=master
5+
:target: https://dev.azure.com/InsightSoftwareConsortium/ITKModules/_build/latest?definitionId=8&branchName=master
6+
:alt: Build Status
67

7-
.. |TravisCI| image:: https://travis-ci.org/InsightSoftwareConsortium/ITKModuleTemplate.svg?branch=master
8-
:target: https://travis-ci.org/InsightSoftwareConsortium/ITKModuleTemplate
9-
10-
.. |AppVeyor| image:: https://img.shields.io/appveyor/ci/itkrobot/itkmoduletemplate.svg
11-
:target: https://ci.appveyor.com/project/itkrobot/itkmoduletemplate
12-
13-
=========== =========== ===========
14-
Linux macOS Windows
15-
=========== =========== ===========
16-
|CircleCI| |TravisCI| |AppVeyor|
17-
=========== =========== ===========
8+
Overview
9+
--------
1810

1911
This is a module for the `Insight Toolkit (ITK) <http://itk.org>`_ for
2012
segmentation and registration. It is designed to work with the ITK modular

appveyor.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

azure-pipelines.yml

Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
variables:
2+
ITKGitTag: v5.0rc01
3+
CMakeBuildType: MinSizeRel
4+
5+
trigger:
6+
batch: true
7+
branches:
8+
include:
9+
- master
10+
11+
jobs:
12+
13+
- job: 'Test'
14+
displayName: "Build and test"
15+
timeoutInMinutes: 0
16+
cancelTimeoutInMinutes: 300
17+
18+
strategy:
19+
matrix:
20+
Linux:
21+
imageName: 'ubuntu-16.04'
22+
cCompiler: gcc
23+
cxxCompiler: g++
24+
compilerInitialization: ''
25+
macOS:
26+
imageName: 'macos-10.13'
27+
cCompiler: clang
28+
cxxCompiler: clang++
29+
compilerInitialization: ''
30+
Windows:
31+
imageName: 'vs2017-win2016'
32+
cCompiler: cl.exe
33+
cxxCompiler: cl.exe
34+
compilerInitialization: 'call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat"'
35+
36+
pool:
37+
vmImage: $(imageName)
38+
39+
steps:
40+
- bash: |
41+
set -x
42+
if [ -n "$(System.PullRequest.SourceCommitId)" ]; then
43+
git checkout $(System.PullRequest.SourceCommitId)
44+
fi
45+
displayName: 'Checkout pull request HEAD'
46+
47+
- task: UsePythonVersion@0
48+
inputs:
49+
versionSpec: '3.7'
50+
architecture: 'x64'
51+
52+
- script: |
53+
python -m pip install --upgrade pip
54+
python -m pip install --upgrade setuptools
55+
python -m pip install scikit-ci-addons
56+
python -m pip install ninja
57+
displayName: 'Install build dependencies'
58+
59+
- script: |
60+
git clone --depth 5 --branch $(ITKGitTag) https://github.com/InsightSoftwareConsortium/ITK.git
61+
workingDirectory: $(Agent.BuildDirectory)
62+
displayName: 'Download ITK'
63+
64+
- script: |
65+
mkdir ITK-build
66+
cd ITK-build
67+
$(compilerInitialization)
68+
cmake -DCMAKE_C_COMPILER:FILEPATH="$(cCompiler)" -DBUILD_SHARED_LIBS:BOOL=ON -DCMAKE_CXX_COMPILER="$(cxxCompiler)" -DCMAKE_BUILD_TYPE:STRING=$(CMakeBuildType) -DBUILD_TESTING:BOOL=OFF -GNinja ../ITK
69+
ninja
70+
workingDirectory: $(Agent.BuildDirectory)
71+
displayName: 'Build ITK'
72+
73+
- script: |
74+
curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITK/dashboard/itk_common.cmake -O
75+
displayName: 'Fetch CTest driver script'
76+
77+
- script: |
78+
python -m pip install cookiecutter
79+
cd /
80+
python -m cookiecutter --no-input --output-dir $(Agent.BuildDirectory)/ITKModuleTemplate $(Agent.SourcesDirectory)
81+
displayName: 'Evaluate template'
82+
83+
- bash: |
84+
cat > dashboard.cmake << EOF
85+
set(CTEST_SITE "Azure.\$ENV{AGENT_MACHINENAME}")
86+
file(TO_CMAKE_PATH "\$ENV{AGENT_BUILDDIRECTORY}" CTEST_DASHBOARD_ROOT)
87+
file(TO_CMAKE_PATH "\$ENV{AGENT_BUILDDIRECTORY}/ITKModuleTemplate" CTEST_SOURCE_DIRECTORY)
88+
file(TO_CMAKE_PATH "\$ENV{AGENT_BUILDDIRECTORY}/build" CTEST_BINARY_DIRECTORY)
89+
set(dashboard_source_name "$(Build.Repository.Name)")
90+
if(DEFINED ENV{SYSTEM_PULLREQUEST_SOURCEBRANCH})
91+
set(branch "-\$ENV{SYSTEM_PULLREQUEST_SOURCEBRANCH}")
92+
set(dashboard_model "Experimental")
93+
elseif(ENV{BUILD_SOURCEBRANCHNAME} STREQUAL "master")
94+
set(branch "-master")
95+
set(dashboard_model "Continuous")
96+
else()
97+
set(branch "-\$ENV{BUILD_SOURCEBRANCHNAME}")
98+
set(dashboard_model "Experimental")
99+
endif()
100+
if(DEFINED ENV{SYSTEM_PULLREQUEST_PULLREQUESTNUMBER})
101+
set(pr "-PR\$ENV{SYSTEM_PULLREQUEST_PULLREQUESTNUMBER}")
102+
else()
103+
set(pr "")
104+
endif()
105+
set(CTEST_BUILD_NAME "$(Build.Repository.Name)-$(Agent.OS)-Build$(Build.BuildId)\${pr}\${branch}")
106+
set(CTEST_UPDATE_VERSION_ONLY 1)
107+
set(CTEST_TEST_ARGS \${CTEST_TEST_ARGS} PARALLEL_LEVEL \${PARALLEL_LEVEL})
108+
set(CTEST_BUILD_CONFIGURATION "Release")
109+
set(CTEST_CMAKE_GENERATOR "Ninja")
110+
set(CTEST_CUSTOM_WARNING_EXCEPTION
111+
\${CTEST_CUSTOM_WARNING_EXCEPTION}
112+
# macOS Azure Pipelines
113+
"ld: warning: text-based stub file"
114+
)
115+
set(dashboard_no_clean 1)
116+
set(ENV{CC} $(cCompiler))
117+
set(ENV{CXX} $(cxxCompiler))
118+
set(dashboard_cache "
119+
ITK_DIR:PATH=\${CTEST_DASHBOARD_ROOT}/ITK-build
120+
BUILD_TESTING:BOOL=ON
121+
")
122+
string(TIMESTAMP build_date "%Y-%m-%d")
123+
message("CDash Build Identifier: \${build_date} \${CTEST_BUILD_NAME}")
124+
message("CTEST_SITE = \${CTEST_SITE}")
125+
include(\${CTEST_SCRIPT_DIRECTORY}/itk_common.cmake)
126+
EOF
127+
cat dashboard.cmake
128+
displayName: 'Configure CTest script'
129+
130+
- script: |
131+
$(compilerInitialization)
132+
ctest -j 2 -V -S dashboard.cmake
133+
displayName: 'Build and test'
134+
135+
- script: |
136+
sudo pip3 install --upgrade pip
137+
sudo pip3 install --upgrade setuptools
138+
sudo pip3 install scikit-ci-addons
139+
ci_addons ctest_junit_formatter $(Agent.BuildDirectory)/build > $(Agent.BuildDirectory)/JUnitTestResults.xml
140+
condition: succeededOrFailed()
141+
displayName: 'Format CTest output in JUnit format'
142+
143+
- task: PublishTestResults@2
144+
inputs:
145+
testResultsFiles: "$(Agent.BuildDirectory)/JUnitTestResults.xml"
146+
testRunTitle: 'CTest $(Agent.OS)'
147+
condition: succeededOrFailed()
148+
displayName: 'Publish test results'
149+
150+
151+
- job: 'PackageLinux'
152+
timeoutInMinutes: 0
153+
cancelTimeoutInMinutes: 300
154+
displayName: "Build Linux Python packages"
155+
pool:
156+
vmImage: 'Ubuntu-16.04'
157+
158+
steps:
159+
- script: |
160+
curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITKPythonPackage/master/scripts/dockcross-manylinux-download-cache-and-build-module-wheels.sh -O
161+
chmod u+x dockcross-manylinux-download-cache-and-build-module-wheels.sh
162+
displayName: 'Fetch build script'
163+
164+
- script: |
165+
export ITK_PACKAGE_VERSION=$(ITKGitTag)
166+
./dockcross-manylinux-download-cache-and-build-module-wheels.sh
167+
displayName: 'Build Python packages'
168+
169+
- task: PublishPipelineArtifact@0
170+
inputs:
171+
artifactName: 'LinuxWheels'
172+
targetPath: './dist'
173+
174+
175+
- job: 'PackageMacOS'
176+
displayName: "Build macOS Python packages"
177+
timeoutInMinutes: 0
178+
cancelTimeoutInMinutes: 300
179+
pool:
180+
vmImage: 'macos-10.13'
181+
182+
steps:
183+
- script: |
184+
curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITKPythonPackage/master/scripts/macpython-download-cache-and-build-module-wheels.sh -O
185+
chmod u+x macpython-download-cache-and-build-module-wheels.sh
186+
displayName: 'Fetch build script'
187+
188+
- script: |
189+
export ITK_PACKAGE_VERSION=$(ITKGitTag)
190+
./macpython-download-cache-and-build-module-wheels.sh
191+
displayName: 'Build Python packages'
192+
193+
- task: PublishPipelineArtifact@0
194+
inputs:
195+
artifactName: 'MacOSWheels'
196+
targetPath: './dist'
197+
198+
199+
- job: 'PackageWindows'
200+
displayName: "Build Windows Python packages"
201+
timeoutInMinutes: 0
202+
cancelTimeoutInMinutes: 300
203+
pool:
204+
vmImage: 'vs2017-win2016'
205+
206+
steps:
207+
- script: |
208+
curl -L https://raw.githubusercontent.com/InsightSoftwareConsortium/ITKPythonPackage/master/scripts/windows-download-cache-and-build-module-wheels.ps1 -O
209+
displayName: 'Fetch build script'
210+
211+
- script: |
212+
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
213+
set ITK_PACKAGE_VERSION=$(ITKGitTag)
214+
set CC=cl.exe
215+
set CXX=cl.exe
216+
powershell.exe -file .\windows-download-cache-and-build-module-wheels.ps1
217+
displayName: 'Build Python packages'
218+
219+
- task: PublishPipelineArtifact@0
220+
inputs:
221+
artifactName: 'WindowsWheels'
222+
targetPath: './dist'

0 commit comments

Comments
 (0)