# CI pipeline configuration

# Switch from branch pipelines to merge request pipelines when a merge request is created
workflow:
  rules:
    # Ensures next rules do not block triggered pipelines
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
      when: never
    # always run for merge requests
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    # never run a branch pipeline if there is an open merge request for that branch
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
      when: never
    # the only allowed branch pipeline is that on the default branch
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

stages:
   - build
   - run
   - test

building_stage:
   stage: build
   allow_failure: false
   artifacts:
      paths:
         - build/cluster/*
	 - build/sphere/*
	 - build/trapping/*
      exclude:
         - ".git*"
	 - ".git/**/*"
      expire_in: 2 hours
   script:
      # bash commands to be executed
      - pwd
      - hostname
      - echo $CI_COMMIT_SHA
      - echo $CI_COMMIT_BRANCH
      - cd src
      - echo "Running make"
      - make

running_stage:
   stage: run
   allow_failure: false
   needs:
      - job: building_stage
   artifacts:
      paths:
         - build/cluster/*
	 - build/sphere/*
	 - build/trapping/*
      exclude:
         - ".git*"
	 - ".git/**/*"
      expire_in: 2 hours
   script:
      # bash commands to be executed
      - pwd
      - hostname
      - echo $CI_COMMIT_SHA
      - echo $CI_COMMIT_BRANCH
      - cd build/sphere
      - echo "Running SPH"
      - chmod +x edfb sph np_sphere
      - ./edfb
      - ./sph
      - echo "Running np_sphere"
      - ./np_sphere
      - cd ../cluster
      - echo "Running CLU"
      - chmod +x edfb clu np_cluster
      - ./edfb
      - ./clu
      - echo "Running np_cluster"
      - ./np_cluster
      
testing_stage:
   stage: test
   allow_failure: true
   needs:
      - job: running_stage
   artifacts:
      - paths:
         - build/cluster/pycompare.html
	 - build/sphere/pycompare.html
      exclude:
         - ".git*"
	 - ".git/**/*"
      expire_in: 2 hours
   script:
      # bash commands to be executed
      - pwd
      - hostname
      - echo $CI_COMMIT_SHA
      - echo $CI_COMMIT_BRANCH
      - cd build/sphere
      - echo "Comparing output of SPHERE"
      - python3 ../../src/scripts/pycompare.py --ffile=OSPH --cfile=c_OSPH --html
      - cd ../cluster
      - echo "Comparing output of CLUSTER"
      - python3 ../../src/scripts/pycompare.py --ffile=OCLU --cfile=c_OCLU --html