git-subtree-dir: software/mza git-subtree-split: f970a59b177c13ca3dd8aaef8cc6681d83b7e813
153 lines
4.5 KiB
YAML
153 lines
4.5 KiB
YAML
stages:
|
|
- check
|
|
- build
|
|
- trigger
|
|
|
|
.download_script: &download_script
|
|
- curl --location --header "PRIVATE-TOKEN:$ACCESS_TOKEN" --silent https://gitlab.com/api/v4/snippets/1796163/raw | tr -d '\r' > download.sh
|
|
|
|
variables:
|
|
# Vendor solver locations
|
|
GECODE_ROOT: "$CI_PROJECT_DIR/vendor/gecode"
|
|
GUROBI_ROOT: "$CI_PROJECT_DIR/vendor/gurobi"
|
|
CPLEX_ROOT: "$CI_PROJECT_DIR/vendor/CPLEX_Studio/cplex"
|
|
OSICBC_ROOT: "$CI_PROJECT_DIR/vendor/cbc"
|
|
# CCache settings
|
|
CCACHE_DIR: "$CI_PROJECT_DIR/.ccache"
|
|
CCACHE_MAXSIZE: "100M"
|
|
|
|
# ----------- Quick check -----------
|
|
|
|
check:format:
|
|
stage: check
|
|
image: dekker1/minibuild:clang-format
|
|
script:
|
|
- mkdir -p build
|
|
- cd build
|
|
- cmake -GNinja .. -DCLANG_FORMAT_EXECUTABLE="run-clang-format" -DCLANG_FORMAT_FLAGS="--color always"
|
|
- cmake --build . --target format
|
|
tags: [linux, docker]
|
|
|
|
# ----------- Build MiniZinc -----------
|
|
|
|
.build_template: &build_definition
|
|
stage: build
|
|
before_script: *download_script
|
|
script:
|
|
- sh download.sh vendor master vendor:${MZNARCH} vendor.zip
|
|
- unzip -q vendor.zip
|
|
- mkdir -p build
|
|
- cd build
|
|
- cmake -G"$CMAKE_ARCH" -DCMAKE_BUILD_TYPE=Release -v .. -DBUILD_REF=$CI_PIPELINE_ID -DUSE_PROPRIETARY=OFF -DCMAKE_INSTALL_PREFIX="$CI_PROJECT_DIR/minizinc"
|
|
- cmake --build . --config Release
|
|
- cmake --build . --config Release --target install
|
|
artifacts:
|
|
paths: [minizinc/]
|
|
cache:
|
|
key: "$CI_JOB_NAME"
|
|
paths: [.ccache, vendor.zip*]
|
|
|
|
build:linux:
|
|
<<: *build_definition
|
|
image: dekker1/minibuild:cpp
|
|
variables:
|
|
MZNARCH: "linux"
|
|
CMAKE_ARCH: "Ninja"
|
|
tags: [linux, docker]
|
|
|
|
build:musl:
|
|
<<: *build_definition
|
|
image: dekker1/minibuild:alpine
|
|
variables:
|
|
MZNARCH: "musl"
|
|
CMAKE_ARCH: "Ninja"
|
|
tags: [linux, docker]
|
|
|
|
build:osx:
|
|
<<: *build_definition
|
|
stage: build
|
|
variables:
|
|
MZNARCH: "osx"
|
|
CMAKE_ARCH: "Ninja"
|
|
tags: [osx, cmake, cpp]
|
|
|
|
build:win64:
|
|
stage: build
|
|
variables:
|
|
MZNARCH: "win64"
|
|
CMAKE_ARCH: "Visual Studio 15 2017 Win64"
|
|
before_script:
|
|
- curl -o download.sh --location --header "PRIVATE-TOKEN:%ACCESS_TOKEN%" --silent https://gitlab.com/api/v4/snippets/1796163/raw
|
|
- dos2unix download.sh
|
|
script:
|
|
- sh download.sh vendor master vendor:%MZNARCH% vendor.zip
|
|
- unzip -q vendor.zip
|
|
- if not exist "build" mkdir build
|
|
- cd build
|
|
- cmake -G"%CMAKE_ARCH%" .. -DBUILD_REF=%CI_PIPELINE_ID% -DUSE_PROPRIETARY=OFF -DCMAKE_INSTALL_PREFIX="%CI_PROJECT_DIR%/minizinc"
|
|
- cmake --build . --config Release
|
|
- cmake --build . --config Release --target install
|
|
artifacts:
|
|
paths: [minizinc/]
|
|
cache:
|
|
key: "win64"
|
|
paths: [vendor.zip*]
|
|
tags: [win64, cmake, cpp]
|
|
|
|
build:wasm_complete:
|
|
image: trzeci/emscripten
|
|
stage: build
|
|
variables:
|
|
MZNARCH: "wasm"
|
|
CMAKE_ARCH: "Unix Makefiles"
|
|
tags: [docker]
|
|
before_script: *download_script
|
|
script:
|
|
- sh download.sh vendor master vendor:wasm vendor.zip
|
|
- unzip -q vendor.zip
|
|
- mkdir -p build
|
|
- cd build
|
|
- 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"
|
|
- cmake --build . --config MinSizeRel
|
|
- cmake --build . --config MinSizeRel --target install
|
|
artifacts:
|
|
paths: [minizinc/]
|
|
cache:
|
|
key: "$CI_JOB_NAME"
|
|
paths: [.ccache, vendor.zip*]
|
|
when: manual
|
|
|
|
build:wasm_minimal:
|
|
image: trzeci/emscripten
|
|
stage: build
|
|
variables:
|
|
MZNARCH: "wasm"
|
|
CMAKE_ARCH: "Unix Makefiles"
|
|
tags: [docker]
|
|
before_script: *download_script
|
|
script:
|
|
- sh download.sh vendor master vendor:wasm vendor.zip
|
|
- unzip -q vendor.zip
|
|
- mkdir -p build
|
|
- cd build
|
|
- 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"
|
|
- cmake --build . --config MinSizeRel
|
|
- cmake --build . --config MinSizeRel --target install
|
|
artifacts:
|
|
paths: [minizinc/]
|
|
cache:
|
|
key: "$CI_JOB_NAME"
|
|
paths: [.ccache, vendor.zip*]
|
|
when: manual
|
|
|
|
# ----------- Trigger FindMUS pipeline -----------
|
|
|
|
trigger:findmus:
|
|
stage: trigger
|
|
image: dekker1/minibuild:package
|
|
script:
|
|
- "curl --request POST --form token=$TRIGGER --form ref=master https://gitlab.com/api/v4/projects/minizinc%2FFindMUS/trigger/pipeline"
|
|
dependencies: []
|
|
tags: [linux, docker]
|
|
only: [develop]
|