A set of benchmarks to compare a new prototype MiniZinc implementation
1stages:
2 - check
3 - build
4 - trigger
5
6.download_script: &download_script
7 - curl --location --header "PRIVATE-TOKEN:$ACCESS_TOKEN" --silent https://gitlab.com/api/v4/snippets/1796163/raw | tr -d '\r' > download.sh
8
9variables:
10 # Vendor solver locations
11 GECODE_ROOT: "$CI_PROJECT_DIR/vendor/gecode"
12 GUROBI_ROOT: "$CI_PROJECT_DIR/vendor/gurobi"
13 CPLEX_ROOT: "$CI_PROJECT_DIR/vendor/CPLEX_Studio/cplex"
14 OSICBC_ROOT: "$CI_PROJECT_DIR/vendor/cbc"
15 # CCache settings
16 CCACHE_DIR: "$CI_PROJECT_DIR/.ccache"
17 CCACHE_MAXSIZE: "100M"
18
19# ----------- Quick check -----------
20
21check:format:
22 stage: check
23 image: dekker1/minibuild:clang-format
24 script:
25 - mkdir -p build
26 - cd build
27 - cmake -GNinja .. -DCLANG_FORMAT_EXECUTABLE="run-clang-format" -DCLANG_FORMAT_FLAGS="--color always"
28 - cmake --build . --target format
29 tags: [linux, docker]
30
31# ----------- Build MiniZinc -----------
32
33.build_template: &build_definition
34 stage: build
35 before_script: *download_script
36 script:
37 - sh download.sh vendor master vendor:${MZNARCH} vendor.zip
38 - unzip -q vendor.zip
39 - mkdir -p build
40 - cd build
41 - cmake -G"$CMAKE_ARCH" -DCMAKE_BUILD_TYPE=Release -v .. -DBUILD_REF=$CI_PIPELINE_ID -DUSE_PROPRIETARY=OFF -DCMAKE_INSTALL_PREFIX="$CI_PROJECT_DIR/minizinc"
42 - cmake --build . --config Release
43 - cmake --build . --config Release --target install
44 artifacts:
45 paths: [minizinc/]
46 cache:
47 key: "$CI_JOB_NAME"
48 paths: [.ccache, vendor.zip*]
49
50build:linux:
51 <<: *build_definition
52 image: dekker1/minibuild:cpp
53 variables:
54 MZNARCH: "linux"
55 CMAKE_ARCH: "Ninja"
56 tags: [linux, docker]
57
58build:musl:
59 <<: *build_definition
60 image: dekker1/minibuild:alpine
61 variables:
62 MZNARCH: "musl"
63 CMAKE_ARCH: "Ninja"
64 tags: [linux, docker]
65
66build:osx:
67 <<: *build_definition
68 stage: build
69 variables:
70 MZNARCH: "osx"
71 CMAKE_ARCH: "Ninja"
72 tags: [osx, cmake, cpp]
73
74build:win64:
75 stage: build
76 variables:
77 MZNARCH: "win64"
78 CMAKE_ARCH: "Visual Studio 15 2017 Win64"
79 before_script:
80 - curl -o download.sh --location --header "PRIVATE-TOKEN:%ACCESS_TOKEN%" --silent https://gitlab.com/api/v4/snippets/1796163/raw
81 - dos2unix download.sh
82 script:
83 - sh download.sh vendor master vendor:%MZNARCH% vendor.zip
84 - unzip -q vendor.zip
85 - if not exist "build" mkdir build
86 - cd build
87 - cmake -G"%CMAKE_ARCH%" .. -DBUILD_REF=%CI_PIPELINE_ID% -DUSE_PROPRIETARY=OFF -DCMAKE_INSTALL_PREFIX="%CI_PROJECT_DIR%/minizinc"
88 - cmake --build . --config Release
89 - cmake --build . --config Release --target install
90 artifacts:
91 paths: [minizinc/]
92 cache:
93 key: "win64"
94 paths: [vendor.zip*]
95 tags: [win64, cmake, cpp]
96
97build:wasm_complete:
98 image: trzeci/emscripten
99 stage: build
100 variables:
101 MZNARCH: "wasm"
102 CMAKE_ARCH: "Unix Makefiles"
103 tags: [docker]
104 before_script: *download_script
105 script:
106 - sh download.sh vendor master vendor:wasm vendor.zip
107 - unzip -q vendor.zip
108 - mkdir -p build
109 - cd build
110 - emconfigure cmake -G"$CMAKE_ARCH" -DCMAKE_FIND_ROOT_PATH="/" -DGECODE_ROOT="$GECODE_ROOT" -DOSICBC_ROOT="$OSICBC_ROOT" -DCMAKE_BUILD_TYPE=MinSizeRel -DEMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES=1 -v .. -DBUILD_REF=$CI_PIPELINE_ID -DUSE_PROPRIETARY=OFF -DCMAKE_INSTALL_PREFIX="$CI_PROJECT_DIR/minizinc"
111 - cmake --build . --config MinSizeRel
112 - cmake --build . --config MinSizeRel --target install
113 artifacts:
114 paths: [minizinc/]
115 cache:
116 key: "$CI_JOB_NAME"
117 paths: [.ccache, vendor.zip*]
118 when: manual
119
120build:wasm_minimal:
121 image: trzeci/emscripten
122 stage: build
123 variables:
124 MZNARCH: "wasm"
125 CMAKE_ARCH: "Unix Makefiles"
126 tags: [docker]
127 before_script: *download_script
128 script:
129 - sh download.sh vendor master vendor:wasm vendor.zip
130 - unzip -q vendor.zip
131 - mkdir -p build
132 - cd build
133 - emconfigure cmake -G"$CMAKE_ARCH" -DCMAKE_BUILD_TYPE=MinSizeRel -DEMSCRIPTEN_GENERATE_BITCODE_STATIC_LIBRARIES=1 -v .. -DBUILD_REF=$CI_PIPELINE_ID -DUSE_PROPRIETARY=OFF -DCMAKE_INSTALL_PREFIX="$CI_PROJECT_DIR/minizinc"
134 - cmake --build . --config MinSizeRel
135 - cmake --build . --config MinSizeRel --target install
136 artifacts:
137 paths: [minizinc/]
138 cache:
139 key: "$CI_JOB_NAME"
140 paths: [.ccache, vendor.zip*]
141 when: manual
142
143# ----------- Trigger FindMUS pipeline -----------
144
145trigger:findmus:
146 stage: trigger
147 image: dekker1/minibuild:package
148 script:
149 - "curl --request POST --form token=$TRIGGER --form ref=master https://gitlab.com/api/v4/projects/minizinc%2FFindMUS/trigger/pipeline"
150 dependencies: []
151 tags: [linux, docker]
152 only: [develop]