image: hello-world:latest

stages:
  - build-img
  - test

build-img:
  stage: build-img
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - mkdir -p /kaniko/.docker
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    - /kaniko/executor --cache=true --context $CI_PROJECT_DIR --dockerfile ./Dockerfile --destination $CI_REGISTRY_IMAGE:latest
  tags:
    - docker

###### Test jobs #####

.test:cmake: &cmake_def
  stage: test
  image: $CI_REGISTRY_IMAGE:latest
  needs: ['build-img']
  script:
    - conan install -if build -g cmake_find_package catch2/2.13.7@
    - |
      if [ "$ENABLE_CGAL" == "ON" ]; then
        conan install -if build -g cmake_find_package cgal/5.2.1@
      fi
    - conan install -if build -g cmake_find_package taocpp-pegtl/3.2.1@

    - cmake -S.
            -Bbuild
            -GNinja
            -DCMAKE_MODULE_PATH=$PWD/build
            -DCMAKE_BUILD_TYPE=Debug
            -DCSG_CGAL_ENABLED=${ENABLE_CGAL}
            -DCMAKE_CXX_FLAGS="-pedantic-errors"
    - cmake --build build --target unit_tests_csg
    - cd build
    - ctest
  tags:
    - docker

test:cgal:
  variables:
    ENABLE_CGAL: "ON"
  <<: *cmake_def

test:no_cgal:
  variables:
    ENABLE_CGAL: "OFF"
  <<: *cmake_def

.test:spack: &spack_def
  stage: test
  image: $CI_REGISTRY_IMAGE:latest
  needs: ['build-img']
  when: manual
  script:
    - /usr/local/spack/bin/spack repo add .spack/repo
    - /usr/local/spack/bin/spack install csg-eb ${NO_CSG}
  tags:
    - docker

spack:cgal:
  variables:
    NO_CSG: ""
  <<: *spack_def

spack:no_cgal:
  variables:
    NO_CSG: "~cgal"
  <<: *spack_def

.test:gnumake: &gnumake_def
  stage: test
  variables:
    BUILD: ${CI_PROJECT_DIR}/build
    BOOST_HOME: ${BUILD}/boost
    CATCH2_HOME: ${BUILD}/catch2
    CGAL_HOME: ${BUILD}/cgal
    PEGTL_HOME: ${BUILD}/taocpp-pegtl
  image: $CI_REGISTRY_IMAGE:latest
  needs: ['build-img']
  script:
    - conan install -if build -g deploy catch2/2.13.7@
    - |
      if [ "$ENABLE_CGAL" == "ON" ]; then
        conan install -if build -g deploy cgal/5.2.1@
      fi
    - conan install -if build -g deploy taocpp-pegtl/3.2.1@
    - make install DESTDIR=the_destination
  tags:
    - docker

gnumake:cgal:
  variables:
    ENABLE_CGAL: "ON"
  <<: *gnumake_def

gnumake:no_cgal:
  <<: *gnumake_def