forked from mpoeter/xenium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathazure-pipelines.yml
157 lines (139 loc) · 5.53 KB
/
azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
stages:
- stage: Build
jobs:
- job: BuildLinux
displayName: "Build Linux"
strategy:
matrix:
gcc11-Release:
compiler: g++-11
buildConfiguration: Release
image: "ubuntu-22.04"
gcc11-Debug:
compiler: g++-11
buildConfiguration: Debug
image: "ubuntu-22.04"
clang13-Release:
compiler: clang++-13
buildConfiguration: Release
image: "ubuntu-22.04"
clang13-Debug:
compiler: clang++-13
buildConfiguration: Debug
image: "ubuntu-22.04"
clang14-Mac-Debug:
compiler: clang++
buildConfiguration: Debug
image: macOS-12
clang14-Mac-Release:
compiler: clang++
buildConfiguration: Release
image: macOS-12
pool:
vmImage: $(image)
steps:
- script: |
$(compiler) --version
git submodule update --init --recursive
mkdir $(Build.BinariesDirectory)/build
cd $(Build.BinariesDirectory)/build
cmake $(Build.SourcesDirectory) -DCMAKE_CXX_COMPILER=$(compiler) -DCMAKE_CXX_STANDARD=17 -DCMAKE_BUILD_TYPE=$(buildConfiguration)
displayName: "Prepare build"
- script: make -j 4
displayName: Build
workingDirectory: $(Build.BinariesDirectory)/build
- script: ./gtest --gtest_output=xml:gtest.log
workingDirectory: $(Build.BinariesDirectory)/build
displayName: "Run tests"
- publish: $(Build.BinariesDirectory)/build/benchmark
artifact: benchmark
condition: and(eq(variables.compiler, 'clang++-13'), eq(variables.buildConfiguration, 'Release'))
- task: PublishTestResults@2
inputs:
testResultsFormat: "JUnit"
testResultsFiles: $(Build.BinariesDirectory)/build/gtest.log
############################################################
- job: BuildWindows
displayName: "Build Windows"
pool:
vmImage: windows-2019
strategy:
matrix:
x64-Release:
buildPlatform: x64
buildConfiguration: Release
x64-Debug:
buildPlatform: x64
buildConfiguration: Debug
steps:
- script: |
git submodule update --init --recursive
mkdir $(Build.BinariesDirectory)\build
displayName: "Prepare build"
- task: CMake@1
displayName: "Configure xenium"
inputs:
workingDirectory: '$(Build.BinariesDirectory)\build'
cmakeArgs: '$(Build.SourcesDirectory) -G "Visual Studio 16 2019" -A "$(buildPlatform)"'
- task: CMake@1
displayName: "Build xenium"
inputs:
workingDirectory: '$(Build.BinariesDirectory)\build'
cmakeArgs: "--build . -j 4 --config $(buildConfiguration) -- /m"
- script: .\gtest.exe --gtest_output=xml:gtest.log
workingDirectory: '$(Build.BinariesDirectory)\build\$(buildConfiguration)'
displayName: "Run Unit Tests"
- task: PublishTestResults@2
inputs:
testResultsFormat: "JUnit"
testResultsFiles: $(Build.BinariesDirectory)\build\$(buildConfiguration)\gtest.log
############################################################
- stage: BenchmarkSmokeTest
condition: succeeded()
jobs:
- job: BenchmarkSmokeTest
displayName: "Benchmark smoke tests"
pool:
vmImage: "Ubuntu-22.04"
steps:
- task: DownloadPipelineArtifact@2
inputs:
artifact: benchmark
path: benchmarks/examples
- script: |
cd benchmarks/examples
chmod +x benchmark
set -e
for QUEUE in ramalhete michael_scott vyukov_bounded kirsch_kfifo kirsch_bounded_kfifo; do
./benchmark queue.json -- "ds=(queues.$QUEUE)" warmup.rounds=0 rounds=1 runtime=500
done
for RECLAIMER in EBR NEBR DEBRA QSBR static-HP dynamic-HP; do
./benchmark queue.json -- "ds.reclaimer=(reclaimers.$RECLAIMER)" warmup.rounds=0 rounds=1 runtime=500
done
for HASHMAP in vyukov harris_michael; do
./benchmark hash_map.json -- "ds=(hash_maps.$HASHMAP)" warmup.rounds=0 rounds=1 runtime=500
done
############################################################
- stage: Documentation
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
jobs:
- job: Documentation
displayName: "Build + deploy documentation"
pool:
vmImage: "Ubuntu-20.04"
steps:
- script: |
sudo apt-get install -y doxygen graphviz
displayName: Apt install dependencies
- script: |
cd doc
doxygen
displayName: build doxygen
- script: |
cd doc/html
git init
git checkout --orphan gh-pages
git add .
git -c user.name='Azure' -c user.email='Azure' commit -m "Deploy xenium documentation to gh-pages"
git push -f -q "https://mpoeter:$(GITHUB_TOKEN)@github.com/mpoeter/xenium.git" gh-pages
displayName: publish GitHub pages