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]