FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
.gitlab-ci.yml 14.1 KiB
Newer Older
image: lb584/ews_coordinator:latest

L. Bower's avatar
L. Bower committed
variables:
  # NOTE, MAKE SURE ANY PIPELINE-LEVEL VARIABLES ARE UNIQUE TO THIS PIPELINE
  # WHEN CALLED FROM A MULTI-PIPELINE TRIGGER, VARIABLES WITH SHARED NAMES WILL BE OVERWRITTEN

  OUTPUT_DIR: "$CI_PROJECT_DIR/outputs/"
  TEST_WORKSPACE_DIR: "/storage/app/EWS_prod/regions/EastAfrica/test_workspace/"
  CUSTOM_RUN_DATE:
    description: "Full-fat tests will pull data from the deployment environment. For robustness, the default option is a
    pre-selected date we know works. To override the default date, manually enter the key value pair using the format 
L. Bower's avatar
L. Bower committed
    in this example e.g.: CUSTOM_RUN_DATE 20230115 - NOTE THAT IF YOU SELECT A CUSTOM DATE BEFORE THE CURRENT 
    SEASON_START DATE, THE ADVISORY TEST WILL FAIL AS IT WILL NOT FIND A SURVEY WITHIN THE CURRENT SEASON"
L. Bower's avatar
L. Bower committed

cache:
  paths:
    - .cache/pip
    - venv/

stages:
L. Bower's avatar
L. Bower committed
  - docs
  - half-fat
  - full-fat
  - epi-fit
  before_script:
      - BRANCH="main"
      - echo "branch - " $BRANCH
      - RUN_TIME=$(date '+%Y-%m-%d_%H%M%S')
      - echo "run time - $RUN_TIME"
      - PACKAGES_DIR="$CI_PROJECT_DIR/packages/"
      - echo "project dir - " $CI_PROJECT_DIR
      - echo "output dir - " $OUTPUT_DIR
      - echo "packages dir - " $PACKAGES_DIR
      - echo "pip dir - " $PIP_CACHE_DIR
      - echo "full-fat run date type - " FULL_FAT_RUN_DATE_TYPE
      - echo "custom full-fat run date - " $CUSTOM_RUN_DATE

L. Bower's avatar
L. Bower committed
      - source /storage/app/EWS_prod/envs/venv/ews_prod/bin/activate
      - pip install coverage
      - python3 -V  # Print out python version for debugging
      - mkdir -p $OUTPUT_DIR
#      - git clone -b $BRANCH "https://nouser:$GROUP_WHEAT_ACCESS_VAR@gitlab.developers.cam.ac.uk/gilligan-epid/wheat-rusts/ews-source-generation.git" $PACKAGES_DIR/source_gen
#      - git clone -b $BRANCH "https://nouser:$GROUP_WHEAT_ACCESS_VAR@gitlab.developers.cam.ac.uk/gilligan-epid/wheat-rusts/ews_plotting.git" $PACKAGES_DIR/plotting
#      - git clone -b $BRANCH "https://nouser:$GROUP_WHEAT_ACCESS_VAR@gitlab.developers.cam.ac.uk/gilligan-epid/wheat-rusts/ews-epimodel.git" $PACKAGES_DIR/epimodel
#      - git clone -b main "https://nouser:$GROUP_WHEAT_ACCESS_VAR@gitlab.developers.cam.ac.uk/gilligan-epid/wheat-rusts/ews-advisory-builder.git" $PACKAGES_DIR/advisory_builder
#      - git clone -b main "https://nouser:$GROUP_WHEAT_ACCESS_VAR@gitlab.developers.cam.ac.uk/gilligan-epid/wheat-rusts/ews_environmental_suitability_v2.git" $PACKAGES_DIR/environmental_suitability
#      - git clone -b $BRANCH "https://nouser:$GROUP_WHEAT_ACCESS_VAR@gitlab.developers.cam.ac.uk/gilligan-epid/wheat-rusts/ews-postprocessing.git" $PACKAGES_DIR/post_processing
#      - git clone -b main "https://nouser:$GROUP_WHEAT_ACCESS_VAR@gitlab.developers.cam.ac.uk/gilligan-epid/wheat-rusts/ews-met-processing.git" $PACKAGES_DIR/met_processing
      - epimodel=$PACKAGES_DIR/epimodel
      - advisory=$PACKAGES_DIR/advisory_builder
      - met_processing=$PACKAGES_DIR/met_processing
      - met_processor=$PACKAGES_DIR/environmental_suitability
      - plotting=$PACKAGES_DIR/plotting
      - post_processing=$PACKAGES_DIR/post_processing
      - source_gen=$PACKAGES_DIR/source_gen
L. Bower's avatar
L. Bower committed
      - coordinator=$CI_PROJECT_DIR
      - coordinator_tests=$CI_PROJECT_DIR/tests
      - export PYTHONPATH=$PYTHONPATH:$coordinator:$coordinator_tests
      - echo "pythonpath - " $PYTHONPATH
L. Bower's avatar
L. Bower committed

half_fat_tests:
  when: manual
  stage: half-fat
  extends: .before_script
L. Bower's avatar
L. Bower committed
  script:
L. Bower's avatar
L. Bower committed
    - cd $CI_PROJECT_DIR/tests/integration/partial/
    - python3 -m coverage run run_test_suite.py $CI_PROJECT_DIR/test_reports
L. Bower's avatar
L. Bower committed
    - python3 -m coverage report
L. Bower's avatar
L. Bower committed
    - python3 -m coverage html -d $CI_PROJECT_DIR/coverage
L. Bower's avatar
L. Bower committed
  artifacts:
    when: always
L. Bower's avatar
L. Bower committed
    paths:
L. Bower's avatar
L. Bower committed
      - $CI_PROJECT_DIR/coverage
L. Bower's avatar
L. Bower committed
      - $CI_PROJECT_DIR/test_reports
    expire_in: 10 days
L. Bower's avatar
L. Bower committed

#half_fat_epi_tests:
#  when: always
#  stage: half-fat
#  extends: .before_script
#
#  script:
#    - cd $CI_PROJECT_DIR/tests/integration/partial/
#    - python3 -m coverage run -m unittest test_epi.py
#    - python3 -m coverage report
#    - python3 -m coverage html -d $CI_PROJECT_DIR/coverage
#    - ls
#  artifacts:
#    when: always
#    paths:
#      - $CI_PROJECT_DIR/coverage
#      - $CI_PROJECT_DIR/test_reports
#    expire_in: 10 days

full_fat_depo:
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - when: manual
      allow_failure: true
  stage: full-fat
  extends: .before_script
  tags: ["ewas-production"]
  script:
      cd $CI_PROJECT_DIR/tests/integration/full/
L. Bower's avatar
L. Bower committed
      python3 full_test_deposition.py 
L. Bower's avatar
L. Bower committed
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/depo_config_EastAfrica_fc_live.json
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
L. Bower's avatar
L. Bower committed
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $CUSTOM_RUN_DATE
L. Bower's avatar
L. Bower committed
      --custom_dir_prefix temp_depo_$RUN_TIME
L. Bower's avatar
L. Bower committed
  artifacts:
L. Bower's avatar
L. Bower committed
    when: always
L. Bower's avatar
L. Bower committed
    paths:
L. Bower's avatar
L. Bower committed
      - $CI_PROJECT_DIR/test_reports
L. Bower's avatar
L. Bower committed
    expire_in: 10 days
epi_fit:
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - when: manual
      allow_failure: true
  stage: epi-fit
  extends: .before_script
  allow_failure: true
  tags: ["ewas-production"]
  script:
    - >
      cd $CI_PROJECT_DIR
L. Bower's avatar
L. Bower committed
      
L. Bower's avatar
L. Bower committed
      EMAIL_CRED="/storage/app/EWS_prod/envs/credentials/Cred_gmail.json"
L. Bower's avatar
L. Bower committed

      export EMAIL_CRED
L. Bower's avatar
L. Bower committed
      
      OUTPUT_DIR="/storage/app/EWS_prod/regions/EastAfrica/test_workspace/integration/epi_fit/outputs/"
      LOGGING_CONFIG_FILE_PATH="/storage/app/EWS_prod/regions/EastAfrica/test_workspace/integration/epi_fit/data_proc/6.0_epi_pipeline/inputs/configs/epi_log_config.json"
      mkdir $CI_PROJECT_DIR/fitting_outputs
L. Bower's avatar
L. Bower committed
      python3 $PACKAGES_DIR/epimodel/ews/epi_model/fit.py
      /storage/app/EWS_prod/regions/EastAfrica/test_workspace/integration/epi_fit/data_proc/6.0_epi_pipeline/inputs/configs/sys_config_epi_remote.json
      /storage/app/EWS_prod/regions/EastAfrica/test_workspace/integration/epi_fit/data_proc/6.0_epi_pipeline/inputs/configs/run_config_epi_long_remote.json
      python3 $PACKAGES_DIR/epimodel/ews/epi_model/epi_fit/params_metrics_file_compare.py       
      /storage/app/EWS_prod/regions/EastAfrica/test_workspace/integration/epi_fit/outputs/optimum_parameters_metrics.csv 
      /storage/app/EWS_prod/regions/EastAfrica/test_workspace/integration/epi_fit/data_proc/6.0_epi_pipeline/inputs/configs/example_optimum_parameters_metrics.csv 
      /storage/app/EWS_prod/regions/EastAfrica/test_workspace/integration/epi_fit/outputs/metric_comparison.txt
      cp -rv $OUTPUT_DIR/*.csv $OUTPUT_DIR/*.json $OUTPUT_DIR/*.txt $OUTPUT_DIR/parameter_sweep_heatmaps $CI_PROJECT_DIR/fitting_outputs/
  artifacts:
    when: always
    paths:
L. Bower's avatar
L. Bower committed
      - $CI_PROJECT_DIR/fitting_outputs/
    expire_in: 5 days
L. Bower's avatar
L. Bower committed

L. Bower's avatar
L. Bower committed
full_fat_env_suit:
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - when: manual
      allow_failure: true
L. Bower's avatar
L. Bower committed
  stage: full-fat
  extends: .before_script
L. Bower's avatar
L. Bower committed
  tags: ["ewas-production"]
  script:
    - >
      cd $CI_PROJECT_DIR/tests/integration/full/

      python3 full_test_env_suit.py 
L. Bower's avatar
L. Bower committed
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/env_suit_config_EastAfrica_fc_live.json
L. Bower's avatar
L. Bower committed
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
L. Bower's avatar
L. Bower committed
      --test_report_dir $CI_PROJECT_DIR/test_reports
L. Bower's avatar
L. Bower committed
      --custom_run_date $CUSTOM_RUN_DATE
L. Bower's avatar
L. Bower committed
      --custom_dir_prefix temp_env_suit_$RUN_TIME
  artifacts:
L. Bower's avatar
L. Bower committed
    when: always
L. Bower's avatar
L. Bower committed
    paths:
      - $CI_PROJECT_DIR/test_reports
    expire_in: 10 days
full_fat_survey:
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
L. Bower's avatar
L. Bower committed
      when: manual
      allow_failure: true
  stage: full-fat
  extends: .before_script
  tags: ["ewas-production"]
  script:
    - >
L. Bower's avatar
L. Bower committed
      cd $CI_PROJECT_DIR/tests/integration/full/
      
      python3 full_test_survey.py 
L. Bower's avatar
L. Bower committed
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
L. Bower's avatar
L. Bower committed
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/survey_config_EastAfrica_fc_live.json
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
L. Bower's avatar
L. Bower committed
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $CUSTOM_RUN_DATE
L. Bower's avatar
L. Bower committed
      --custom_dir_prefix temp_survey_$RUN_TIME
  artifacts:
L. Bower's avatar
L. Bower committed
    when: always
L. Bower's avatar
L. Bower committed
    paths:
      - $CI_PROJECT_DIR/test_reports
    expire_in: 10 days
L. Bower's avatar
L. Bower committed
full_fat_advisory:
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - when: manual
      allow_failure: true
L. Bower's avatar
L. Bower committed
  stage: full-fat
  extends: .before_script
  tags: ["ewas-production"]
  script:
    - >
      cd $CI_PROJECT_DIR/tests/integration/full/

      SURVEY_RUN_DATE=$(date -d "$CUSTOM_RUN_DATE -1 day" +%Y%m%d)

L. Bower's avatar
L. Bower committed
      python3 full_test_survey.py
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/survey_config_EastAfrica_fc_live.json
      --outdir ${TEST_WORKSPACE_DIR}/integration/full/
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $SURVEY_RUN_DATE
      --custom_dir_prefix temp_advisory_$RUN_TIME

      python3 full_test_deposition.py
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/depo_config_EastAfrica_fc_live.json
      --outdir ${TEST_WORKSPACE_DIR}/integration/full/
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $CUSTOM_RUN_DATE
      --custom_dir_prefix temp_advisory_$RUN_TIME
L. Bower's avatar
L. Bower committed

      python3 full_test_env_suit.py 
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/env_suit_config_EastAfrica_fc_live.json
      --outdir ${TEST_WORKSPACE_DIR}/integration/full/
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
L. Bower's avatar
L. Bower committed
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $CUSTOM_RUN_DATE
L. Bower's avatar
L. Bower committed
      --custom_dir_prefix temp_advisory_$RUN_TIME
      python3 full_test_advisory.py 
L. Bower's avatar
L. Bower committed
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/advisory_config_EastAfrica_fc_live.json
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
L. Bower's avatar
L. Bower committed
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $CUSTOM_RUN_DATE
L. Bower's avatar
L. Bower committed
      --custom_dir_prefix temp_advisory_$RUN_TIME
L. Bower's avatar
L. Bower committed
  artifacts:
L. Bower's avatar
L. Bower committed
    when: always
L. Bower's avatar
L. Bower committed
    paths:
      - $CI_PROJECT_DIR/test_reports
    expire_in: 10 days
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - when: manual
      allow_failure: true
  stage: full-fat
  extends: .before_script
  tags: ["ewas-production"]
  script:
    - >
      cd $CI_PROJECT_DIR/tests/integration/full/

      python3 full_test_deposition.py 
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/depo_config_EastAfrica_fc_live.json
      --outdir ${TEST_WORKSPACE_DIR}/integration/full/
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $CUSTOM_RUN_DATE
L. Bower's avatar
L. Bower committed
      --custom_dir_prefix temp_epi_$RUN_TIME

      python3 full_test_env_suit.py 
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/env_suit_config_EastAfrica_fc_live.json
      --outdir ${TEST_WORKSPACE_DIR}/integration/full/
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
L. Bower's avatar
L. Bower committed
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $CUSTOM_RUN_DATE
L. Bower's avatar
L. Bower committed
      --custom_dir_prefix temp_epi_$RUN_TIME
      python3 full_test_epi.py 
L. Bower's avatar
L. Bower committed
      --sys_config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/sys_config_EastAfrica_fc_live.json
      --config /storage/app/EWS_prod/regions/EastAfrica/resources/configs/coordinator/fc/epi_config_EastAfrica_fc_live.json
      --email_cred /storage/app/EWS_prod/envs/credentials/Cred_gmail.json
L. Bower's avatar
L. Bower committed
      --test_report_dir $CI_PROJECT_DIR/test_reports
      --custom_run_date $CUSTOM_RUN_DATE
L. Bower's avatar
L. Bower committed
      --custom_dir_prefix temp_epi_$RUN_TIME
L. Bower's avatar
L. Bower committed
  artifacts:
L. Bower's avatar
L. Bower committed
    when: always
L. Bower's avatar
L. Bower committed
    paths:
      - $CI_PROJECT_DIR/test_reports
    expire_in: 10 days
L. Bower's avatar
L. Bower committed
pages:
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
    - when: manual
      allow_failure: true
L. Bower's avatar
L. Bower committed
  stage: docs
  extends: .before_script
L. Bower's avatar
L. Bower committed
  script:
    - export PATH=$PATH:/home/ewsmanager/.local/bin
    - echo "Pages accessible through ${CI_PAGES_URL} / ${PAGES_PREFIX}"
    - pip install sphinx
    - pip install sphinx_rtd_theme
    - pip install sphinx_autodoc_typehints
    - pip install IPython
    - cd $CI_PROJECT_DIR/docs
    - mkdir $CI_PROJECT_DIR/something
    - mv -v $CI_PROJECT_DIR/docs/_build/html/* $CI_PROJECT_DIR/something/
    - ls $CI_PROJECT_DIR/something/
L. Bower's avatar
L. Bower committed
  artifacts:
    paths: