Skip to content

Commit e499f92

Browse files
authored
feature/extra-ci (#178)
* Add arch-llvm and centos builders * Fix arch llvm builder to not wait for I/O * Run tests after completion of build (hopefully) * Update CentOS to devtoolset-8 to fill coverage gap * Test manual deployment * Add FreeBSD builder, probably * Disable freebsd builder and fix arch tests * Update documentation and prepare for first merge
1 parent 4c437fc commit e499f92

File tree

3 files changed

+213
-40
lines changed

3 files changed

+213
-40
lines changed

PLATFORMS.md

+9-17
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
1-
### Project CHRONO _feature/multiarch_
1+
### Project CHRONO Platform Testing
22

3-
This branch introduces changes which aim to make Chrono behave more predictably when building for
4-
a greater variety of platforms and architectures.
3+
This document tracks changes which aim to make Chrono behave more predictably when building for a greater variety of platforms and architectures.
54

6-
Chrono with _feature/multiarch_ includes existing support for 64-bit x86 CPUs and has also been known to
7-
build on AArch64 and POWER8/9 under Linux.
5+
Chrono currently includes existing support for 64-bit x86 CPUs and has also been known to build on AArch64 and POWER8/9 under Linux.
86

9-
##### Additional Features
10-
- Some x86 compilers which are not able to build Chrono releases or the develop branch may work with _feature/multiarch_
11-
- AArch64 experimental support includes some integration of NEON vectorization instructions
12-
- POWER 8/9 experimental support has been tested for GCC 7 or newer and XLC 16.1 and newer
13-
14-
##### Previously Tested Architectures and Compilers
7+
##### Previously Tested Architectures and Compilers (Windows / Linux)
158
- x86_64 / GCC 6 and newer
169
- x86_64 / Clang 6.0.0 and newer
1710
- x86_64 / MSVC 14 and newer
@@ -20,12 +13,11 @@ build on AArch64 and POWER8/9 under Linux.
2013
- POWER / XLC 16.1._x_
2114

2215

16+
##### Additional Platforms
17+
- FreeBSD 12.0 / LLVM 6
18+
2319

2420
##### **DISCLAIMER**
2521

26-
Chrono is primarily an x86-based software. While _feature/multiarch_ may enable the use of Chrono
27-
on a wider variety of platforms, these additional platforms are not officially supported by the developers.
28-
To be absolutely clear; the developers will not provide online support for these platforms.
29-
Any additional platforms or architectures mentioned by the developers in any documentation have only been through a
30-
minimum of testing and come with absolutely no guarantees as to their performance or validity.
31-
_Caveat emptor_, your mileage may vary, etc.
22+
Chrono is primarily an x86-based software. While the configurations listed above may enable the use of Chrono on a wider variety of platforms, these additional platforms are not officially supported by the developers. To be absolutely clear; the developers will not provide online support for these platforms.
23+
Any additional platforms or architectures mentioned by the developers in any documentation have only been through a minimum of testing and come with absolutely no guarantees as to their performance or validity. _Caveat emptor_, your mileage may vary, etc.

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,8 @@ Project Chrono represents a community effort aimed at producing a physics-based
7070
- Scripting via Python.
7171
- Makefile system based on CMake (cross-platform, on Windows 32/64 bit, Linux, OSX).
7272

73+
## CI/CD Status
74+
| Branch | Status |
75+
| ------ | ------ |
76+
| develop | [![pipeline status](https://gitlab.com/uwsbel/chrono/badges/develop/pipeline.svg)](https://gitlab.com/uwsbel/chrono/commits/develop) |
7377

contrib/.gitlab-ci.yml

+200-23
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22
## ProjectChrono Default CI Config ##
33
#####################################
44

5-
#---------------#
6-
# Linux Builder #
7-
#---------------#
5+
# Build Stages (shared by each platform)
6+
stages:
7+
- build
8+
- test
9+
- deploy
810

9-
.linux:
11+
#---------------------#
12+
# Arch Linux Builders #
13+
#---------------------#
14+
15+
.archlinux:
1016
tags:
1117
- linux
1218
image:
@@ -19,31 +25,130 @@
1925
- wget https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.5.tar.gz
2026
- tar -xf blaze-3.5.tar.gz
2127
- cp blaze-3.5/blaze -r /usr/local/include
28+
- git submodule init
29+
- git submodule update
2230
- mkdir -p build
2331

24-
linux:build:
32+
linux:arch-gcc:build:
2533
stage: build
26-
extends: .linux
34+
extends: .archlinux
2735
script:
28-
- git submodule update
29-
- git submodule init
3036
- cd build
31-
- cmake ../ -DCMAKE_BUILD_TYPE=Release -DENABLE_MODULE_POSTPROCESS=TRUE -DENABLE_MODULE_PYTHON=TRUE -DENABLE_MODULE_COSIMULATION=FALSE -DENABLE_MODULE_IRRLICHT=TRUE -DENABLE_MODULE_VEHICLE=TRUE -DENABLE_MODULE_PARALLEL=TRUE -DENABLE_MODULE_OPENGL=TRUE -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCUDA_HOST_COMPILER=/usr/bin/gcc
37+
- cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=TRUE -DBUILD_BENCHMARKING=TRUE -DENABLE_MODULE_POSTPROCESS=TRUE -DENABLE_MODULE_PYTHON=TRUE -DENABLE_MODULE_COSIMULATION=FALSE -DENABLE_MODULE_IRRLICHT=TRUE -DENABLE_MODULE_VEHICLE=TRUE -DENABLE_MODULE_PARALLEL=TRUE -DENABLE_MODULE_OPENGL=TRUE -DENABLE_MODULE_DISTRIBUTED=TRUE -DENABLE_MODULE_FSI=TRUE -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCUDA_HOST_COMPILER=/usr/bin/gcc-8 -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
3238
- make -j 8
3339
artifacts:
3440
expire_in: 30m
3541
paths:
36-
- build
42+
- build/
3743

3844

39-
linux:test:
45+
linux:arch-gcc:test:
46+
stage: test
47+
needs: ["linux:arch-gcc:build"]
48+
extends: .archlinux
49+
script:
50+
- cd build
51+
- make test
52+
dependencies: ["linux:arch-gcc:build"]
53+
54+
linux:arch-llvm:build:
55+
stage: build
56+
extends: .archlinux
57+
script:
58+
- pacman -S --noconfirm llvm clang openmp
59+
- cd build
60+
- cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=TRUE -DBUILD_BENCHMARKING=TRUE -DENABLE_MODULE_POSTPROCESS=TRUE -DENABLE_MODULE_PYTHON=TRUE -DENABLE_MODULE_COSIMULATION=FALSE -DENABLE_MODULE_IRRLICHT=TRUE -DENABLE_MODULE_VEHICLE=TRUE -DENABLE_MODULE_PARALLEL=TRUE -DENABLE_MODULE_OPENGL=TRUE -DENABLE_MODULE_DISTRIBUTED=TRUE -DENABLE_MODULE_FSI=TRUE -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCUDA_HOST_COMPILER=/usr/bin/gcc-8 -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
61+
- make -j 8
62+
artifacts:
63+
expire_in: 30m
64+
paths:
65+
- build/
66+
67+
68+
linux:arch-llvm:test:
4069
stage: test
41-
extends: .linux
70+
needs: ["linux:arch-llvm:build"]
71+
extends: .archlinux
4272
script:
73+
- pacman -S --noconfirm llvm clang openmp
4374
- cd build
4475
- make test
45-
dependencies:
46-
- linux:build
76+
dependencies: ["linux:arch-llvm:build"]
77+
78+
79+
#----------------#
80+
# CentOS Builder #
81+
#----------------#
82+
83+
.centos:
84+
tags:
85+
- linux
86+
image:
87+
name: nvidia/cuda:10.0-devel-centos7
88+
entrypoint: ["/usr/bin/bash", "-c"]
89+
before_script:
90+
- uname -a
91+
- yum -y update && yum -y install epel-release
92+
- yum -y groupinstall "Development Tools"
93+
- yum -y install centos-release-scl
94+
- yum -y install devtoolset-8
95+
# The normal "scl enable ..." route creates a new bash session which will
96+
# cause the script to hang. We need to activate the environment in the
97+
# _current_ shell instead
98+
- source /opt/rh/devtoolset-8/enable
99+
- yum -y install cmake3 eigen3 irrlicht-devel glew-devel glfw-devel glfw-devel
100+
libGLEW glm-devel sudo boost-devel freeglut-devel wget fish python
101+
python-devel python-pip pcre-devel openmpi openmpi-devel
102+
- alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20
103+
--slave /usr/local/bin/ctest ctest /usr/bin/ctest3
104+
--slave /usr/local/bin/cpack cpack /usr/bin/cpack3
105+
--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3
106+
--family cmake
107+
# SWIG will have been mysteriously installed, we install a newer version later
108+
- yum -y remove swig
109+
- ldconfig
110+
- wget https://sourceforge.net/projects/swig/files/swig/swig-3.0.12/swig-3.0.12.tar.gz
111+
- tar -xf swig-3.0.12.tar.gz
112+
- cd swig-3.0.12
113+
- ./configure && make && make install
114+
- ldconfig
115+
- cd ../
116+
- wget https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.5.tar.gz
117+
- tar -xf blaze-3.5.tar.gz
118+
- cp blaze-3.5/blaze -r /usr/local/include
119+
- git submodule init
120+
- git submodule update
121+
- mkdir -p build
122+
123+
linux:centos:build:
124+
stage: build
125+
extends: .centos
126+
script:
127+
- cd build
128+
- cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=TRUE
129+
-DBUILD_BENCHMARKING=TRUE -DENABLE_MODULE_POSTPROCESS=TRUE
130+
-DENABLE_MODULE_PYTHON=TRUE -DENABLE_MODULE_COSIMULATION=FALSE
131+
-DENABLE_MODULE_IRRLICHT=TRUE -DENABLE_MODULE_VEHICLE=TRUE
132+
-DENABLE_MODULE_PARALLEL=TRUE -DENABLE_MODULE_OPENGL=TRUE
133+
-DENABLE_MODULE_DISTRIBUTED=TRUE
134+
-DCMAKE_C_COMPILER=/opt/rh/devtoolset-8/root/usr/bin/gcc
135+
-DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-8/root/usr/bin/g++
136+
# -DCUDA_HOST_COMPILER=/opt/rh/devtoolset-8/root/usr/bin/gcc
137+
# -DENABLE_MODULE_FSI=TRUE
138+
- make -j 8
139+
artifacts:
140+
expire_in: 30m
141+
paths:
142+
- build/
143+
144+
linux:centos:test:
145+
stage: test
146+
needs: ["linux:centos:build"]
147+
extends: .centos
148+
script:
149+
- cd build
150+
- make test
151+
dependencies: ["linux:centos:build"]
47152

48153

49154
#-----------------#
@@ -54,35 +159,107 @@ linux:test:
54159
tags:
55160
- windows
56161
before_script:
57-
# - wget -UseBasicParsing https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.5.tar.gz -OutFile blaze-3.5.tar.gz
58-
# - tar -xf .\blaze-3.5.tar.gz blaze-3.5/blaze
162+
# - wget -UseBasicParsing https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.5.tar.gz -OutFile blaze-3.5.tar.gz
163+
# - tar -xf .\blaze-3.5.tar.gz blaze-3.5/blaze
164+
- git submodule init
165+
- git submodule update
59166
- mkdir -Force build
60167

61168

62-
windows:build:
169+
windows:vs2019:build:
63170
stage: build
64171
extends: .windows
65172
script:
66173
- cd build
67-
- cmake ../ -G "Visual Studio 16 2019" -A x64 -T v142 -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=TRUE -DBUILD_BENCHMARKING=TRUE -DENABLE_MODULE_POSTPROCESS=TRUE -DENABLE_MODULE_PYTHON=TRUE -DENABLE_MODULE_COSIMULATION=FALSE -DENABLE_MODULE_IRRLICHT=TRUE -DENABLE_MODULE_VEHICLE=TRUE -DENABLE_MODULE_PARALLEL=TRUE -DENABLE_MODULE_OPENGL=TRUE -DBLAZE_DIR=C:/Users/Public/Documents/blaze-3.1 -DSWIG_EXECUTABLE=C:/Users/Public/Documents/swigwin-3.0.12/swig.exe -DBOOST_ROOT=C:/Users/Public/Documents/boost_1_68_0 -DGLM_INCLUDE_DIR=C:/Users/Public/Documents/glm-0.9.9.5 -DGLEW_DLL=C:/Users/Public/Documents/glew-2.1.0/bin/Release/x64/glew32.dll -DGLEW_INCLUDE_DIR=C:/Users/Public/Documents/glew-2.1.0/include -DIRRLICHT_LIBRARY=C:/Users/Public/Documents/irrlicht-1.8.4/lib/Win64-visualStudio/Irrlicht.lib -DIRRLICHT_ROOT=C:/Users/Public/Documents/irrlicht-1.8.4 -DUSE_PARALLEL_CUDA=OFF -DGLEW_LIBRARY=C:/Users/Public/Documents/glew-2.1.0/lib/Release/x64/glew32.lib -DGLFW_DLL=C:/Users/Public/Documents/glfw-3.3/lib-vc2015/glfw3.dll -DGLFW_INCLUDE_DIR=C:/Users/Public/Documents/glfw-3.3/include/GLFW -DGLFW_LIBRARY=C:/Users/Public/Documents/glfw-3.3/lib-vc2015/glfw3dll.lib -DENABLE_MODULE_FSI=TRUE -DEIGEN3_INCLUDE_DIR=C:/Users/Public/Documents/eigen-3.3.7
174+
- cmake ../ -G "Visual Studio 16 2019" -A x64 -T v142
175+
-DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=TRUE -DBUILD_BENCHMARKING=TRUE
176+
-DENABLE_MODULE_POSTPROCESS=TRUE -DENABLE_MODULE_PYTHON=TRUE
177+
-DENABLE_MODULE_COSIMULATION=FALSE -DENABLE_MODULE_IRRLICHT=TRUE
178+
-DENABLE_MODULE_VEHICLE=TRUE -DENABLE_MODULE_PARALLEL=TRUE
179+
-DENABLE_MODULE_OPENGL=TRUE -DUSE_PARALLEL_CUDA=OFF -DENABLE_MODULE_FSI=TRUE
180+
-DBLAZE_DIR=C:/Users/Public/Documents/blaze-3.1
181+
-DSWIG_EXECUTABLE=C:/Users/Public/Documents/swigwin-3.0.12/swig.exe
182+
-DBOOST_ROOT=C:/Users/Public/Documents/boost_1_68_0
183+
-DGLM_INCLUDE_DIR=C:/Users/Public/Documents/glm-0.9.9.5
184+
-DGLEW_DLL=C:/Users/Public/Documents/glew-2.1.0/bin/Release/x64/glew32.dll
185+
-DGLEW_INCLUDE_DIR=C:/Users/Public/Documents/glew-2.1.0/include
186+
-DGLEW_LIBRARY=C:/Users/Public/Documents/glew-2.1.0/lib/Release/x64/glew32.lib
187+
-DGLFW_DLL=C:/Users/Public/Documents/glfw-3.3/lib-vc2015/glfw3.dll
188+
-DGLFW_INCLUDE_DIR=C:/Users/Public/Documents/glfw-3.3/include/GLFW
189+
-DGLFW_LIBRARY=C:/Users/Public/Documents/glfw-3.3/lib-vc2015/glfw3dll.lib
190+
-DIRRLICHT_LIBRARY=C:/Users/Public/Documents/irrlicht-1.8.4/lib/Win64-visualStudio/Irrlicht.lib
191+
-DIRRLICHT_ROOT=C:/Users/Public/Documents/irrlicht-1.8.4
192+
-DEIGEN3_INCLUDE_DIR=C:/Users/Public/Documents/eigen-3.3.7
68193
#- Invoke-Expression "& `'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.com`' Chrono.sln -Build `"Release|x64`" -log buildlog.txt"
69194
- '& "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" Chrono.sln -maxcpucount:8 -property:Configuration=Release'
70195
artifacts:
71196
expire_in: 30m
72197
paths:
73-
- build
198+
- build/
74199

75200

76-
windows:test:
201+
windows:vs2019:test:
77202
stage: test
203+
needs: ["windows:vs2019:build"]
78204
extends: .windows
79205
script:
80206
- cd build
81207
- ctest
82-
dependencies:
83-
- windows:build
208+
dependencies: ["windows:vs2019:build"]
84209

85210

211+
windows:vs2019:deploy:
212+
stage: deploy
213+
needs: ["windows:vs2019:test"]
214+
extends: .windows
215+
script:
216+
- Out-Host "Build PyChrono and deploy via Anaconda..."
217+
- Out-Host "**NOT YET IMPLEMENTED**"
218+
environment:
219+
name: pychrono-win64
220+
url: https://anaconda.org/projectchrono/pychrono
221+
when: manual
86222

87-
88223

224+
#-----------------#
225+
# FreeBSD Builder #
226+
#-----------------#
227+
228+
.freebsd:
229+
tags:
230+
- freebsd
231+
before_script:
232+
- uname -a
233+
- wget https://bitbucket.org/blaze-lib/blaze/downloads/blaze-3.5.tar.gz
234+
- tar -xf blaze-3.5.tar.gz
235+
- cp blaze-3.5/blaze -r /usr/local/include
236+
- git submodule update
237+
- git submodule init
238+
- mkdir -p build
239+
240+
241+
.freebsd:llvm:build:
242+
stage: build
243+
extends: .freebsd
244+
script:
245+
- cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=TRUE
246+
-DBUILD_BENCHMARKING=TRUE -DENABLE_MODULE_POSTPROCESS=TRUE
247+
-DENABLE_MODULE_PYTHON=TRUE -DENABLE_MODULE_COSIMULATION=FALSE
248+
-DENABLE_MODULE_IRRLICHT=TRUE -DENABLE_MODULE_VEHICLE=TRUE
249+
-DENABLE_MODULE_PARALLEL=TRUE -DENABLE_MODULE_OPENGL=TRUE
250+
-DENABLE_MODULE_DISTRIBUTED=TRUE -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
251+
- make -j 8
252+
artifacts:
253+
expire_in: 30m
254+
paths:
255+
- build/
256+
257+
258+
.freebsd:llvm:test:
259+
stage: test
260+
needs: ["freebsd:llvm:build"]
261+
extends: .freebsd
262+
script:
263+
- cd build
264+
- make test
265+
dependencies: ["freebsd:llvm:build"]

0 commit comments

Comments
 (0)