default:
  artifacts:
    expire_in: 1 day
    
stages:
  - build
  - test
  - testcov
  - build_emscripten
  - deploy

build_code:
    stage: build
    image: "registry.gitlab.com/mergul/bubel-ecs:latest"
    script:
        - /bin/bash /compile_ecs.sh
    artifacts: 
        expire_in: 1h
        paths:
            - binaries
    allow_failure: true

test_dmd_debug:
    stage: test    
    image: frolvlad/alpine-glibc
    script:
        - binaries/dmd_debug_unittest
    artifacts:
        reports:
            junit: test_report.xml
test_dmd:
    stage: test    
    image: frolvlad/alpine-glibc
    script:
        - binaries/dmd_release_unittest
    artifacts:
        reports:
            junit: test_report.xml
test_dmd_betterC:
    stage: test    
    image: frolvlad/alpine-glibc
    script:
        - binaries/dmd_release_unittest_bc
    artifacts:
        reports:
            junit: test_report.xml
            
coverage_test_dmd:
    stage: testcov
    image: "registry.gitlab.com/mergul/bubel-ecs/curl:latest"
    needs: ["test_dmd_debug", "build_code"]
    dependencies:
        - build_code
    script:
        - mkdir reports
        - binaries/dmd_unittest_cov
    after_script:
        - bash <(curl -s https://codecov.io/bash) -s reports -t 1a0c0169-a721-4085-8252-fed4755dcd8c

build_wasm:
    stage: build
    image: "registry.gitlab.com/mergul/bubel-ecs:latest"
    script:
        - /bin/bash /compile_wasm.sh
        - /bin/bash /gen_doc.sh
    artifacts: 
        expire_in: 1h
        paths:
            - build
    rules:
        - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'
          when: always
    allow_failure: true

emscripten:
    stage: build_emscripten    
    image: "registry.gitlab.com/mergul/bubel-ecs/emscripten:latest"
    dependencies:
        - build_code
    script:
        - /bin/bash /build.sh
    rules:
        - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'
          when: always
    artifacts:
        expire_in: 1h
        paths:
            - wasm

pages:
    stage: deploy
    image: frolvlad/alpine-glibc
    script:
        - mkdir public
        - cp -r wasm/* public/
        - cp -r build/public/* public/
    rules:
        - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'
          when: always
    artifacts:
        expire_in: 1h
        paths:
            - public