SIMID-SMC 2024_2025_1_COVID #188
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Validate Submissions | |
# Activate the validation process on pull-requests for model-output data submissions or on meta-data changes | |
on: | |
pull_request_target: | |
branches: | |
- main | |
paths: | |
- 'model-output/**' | |
- 'model-metadata/*' | |
- '!**README**' | |
- '!**.md' | |
- '!**.MD' | |
jobs: | |
validate-submission_job: | |
runs-on: ubuntu-latest | |
outputs: | |
changed_files: ${{ steps.get_changed_files.outputs.all_changed_files }} | |
env: | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
PR_NUMBER: ${{ github.event.pull_request.number }} | |
steps: | |
# Setup R env | |
# --------------------------------- | |
- uses: r-lib/actions/setup-r@v2 | |
with: | |
install-r: false | |
use-public-rspm: true | |
# Install hubValidations package from HubVerse | |
# ---------------------------------------------- | |
- uses: r-lib/actions/setup-r-dependencies@v2 | |
with: | |
packages: hubverse-org/hubValidations, any::sessioninfo | |
# Install System dependencies | |
# --------------------------------- | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install libcurl4-openssl-dev libv8-dev | |
# Install Pyton env and lib | |
# --------------------------- | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- run: pip install pandas pyarrow | |
# checkout the repository with reference to the SHA of the HEAD | |
# commit of the branch that is being merged into the Base | |
# ------------------------------------------------------------------ | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
fetch-depth: 1 | |
# Get changes from pull request for later use | |
# -------------------------------------------- | |
- name: Get changes | |
id: get_changed_files | |
uses: tj-actions/changed-files@v41 | |
# Checkout the python tools repo | |
# ------------------------------------------- | |
- name: checkout python tools repo | |
uses: actions/checkout@v3 | |
with: | |
repository: 'european-modelling-hubs/hub-tools' | |
ref: 'main' | |
path: './tools/' | |
# Trace changes | |
# --------------------------------- | |
- name: List all changed files | |
run: | | |
for file in ${{ steps.get_changed_files.outputs.all_changed_files }}; do | |
echo "$file was changed" | |
done | |
# Validate data submission | |
# --------------------------------- | |
- name: Run validations | |
env: | |
files: ${{ steps.get_changed_files.outputs.all_changed_files }} | |
PR_NUMBER: ${{ github.event.number }} | |
run: | | |
library("hubValidations") | |
v <- hubValidations::validate_pr( | |
gh_repo = Sys.getenv("GITHUB_REPOSITORY"), | |
pr_number = Sys.getenv("PR_NUMBER"), | |
skip_submit_window_check = FALSE, | |
derived_task_ids = c("target_end_date", "pop_group") | |
) | |
hubValidations::check_for_errors(v, verbose = TRUE) | |
shell: Rscript {0} | |
# Validate derived_task_ids since their validation | |
# is currently skipped in the validate_pr | |
- name: Validate derived task ids | |
env: | |
input_list: ${{ steps.get_changed_files.outputs.all_changed_files }} | |
run: | | |
python ./tools/code/validate_derived_task_ids.py | |
# Eventually comment on it | |
# --------------------------- | |
- name: Comment PR | |
uses: thollander/actions-comment-pull-request@v2 | |
with: | |
message: | | |
All validation checks completed successfully. | |
pr_number: ${{ github.event.pull_request.number }} | |
# Approve the pull request | |
# --------------------------- | |
- name: Approve Pull Request | |
uses: juliangruber/[email protected] | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
number: ${{ github.event.pull_request.number }} | |
# And then finally do the merge | |
# ------------------------------- | |
- name: Merge the pull request | |
id: merge_pr | |
run: | | |
echo ">>> Merging PR URL: ${{ github.event.pull_request.html_url }}" | |
gh pr merge --auto --squash $PR_URL | |
env: | |
PR_URL: ${{ github.event.pull_request.html_url }} | |
GH_TOKEN: ${{ github.token }} | |
# As a last step, call a job that persists changes from the pull-request | |
# to a json db for further upload to the web-server platform | |
call-persisting-wf_job: | |
needs: validate-submission_job | |
uses: european-modelling-hubs/RespiCompass/.github/workflows/persist_changes.yml@main | |
with: | |
changes-list: ${{ needs.validate-submission_job.outputs.changed_files }} | |
secrets: | |
envPAT: ${{ secrets.GITHUB_TOKEN }} |