ACCESS-NRI maintenance workflows for testing COSIMA Recipes on NCI Gadi.
A GitHub Pages static dashboard is available at:
The dashboard is built from the COSIMA all-recipes manifest and, when available,
all-recipes workflow summary JSON. It shows per-recipe status, inferred recipe
style/category, an analysis3 environment selector, and switchable overview,
cards, table, and run-detail views.
The dashboard deployment workflow attempts to download the latest successful
all-recipes-summary artifact from the all-recipes workflow and uses that
summary.json to initialize dashboard/dashboard-data.json.
.github/workflows/cosima-recipe.yml is manually dispatched and runs one manifest-listed notebook on Gadi via PBS:
02-Easy-Recipes/Barotropic_Streamfunction.ipynb
The workflow:
- Reads
.github/configs/cosima-smoke.jsonand validates the requested notebook path. - SSHes to Gadi using repository secrets.
- Creates a predictable run directory under
${GADI_SCRIPTS_DIR}/cosima-recipes-ci/runs/<github-run>-<attempt>-<notebook>/unlessgadi_work_diris supplied at dispatch time. - Clones/fetches
COSIMA/cosima-recipes, checks out the requested ref, and validates that the notebook exists. - Writes and submits a non-blocking PBS script using the configured
conda_moduleandmodule_base_path. - Polls for a result JSON file and writes the pass/fail outcome to the GitHub Actions summary.
.github/workflows/cosima-all-recipes.yml is manually dispatched and runs every notebook found under the COSIMA Recipes recipe roots configured in .github/configs/cosima-all-recipes.json:
01-Cooking-Tutorials02-Easy-Recipes03-Advanced-Recipes04-Regional-Specialties
The workflow:
- Plans and validates the Gadi/PBS settings from
.github/configs/cosima-all-recipes.jsonand workflow inputs. - SSHes to Gadi using repository secrets.
- Creates a run directory under
${GADI_SCRIPTS_DIR}/cosima-recipes-ci/runs/<github-run>-<attempt>-all-recipes/unlessgadi_work_diris supplied at dispatch time. - Clones/fetches
COSIMA/cosima-recipesand checks out the requested ref. - Discovers all
.ipynbfiles under the configured recipe roots and writes a tab-separated notebook manifest. - Submits one PBS job per notebook. Each job runs
jupyter nbconvert --execute, writes a per-notebook log, executed notebook, and result JSON. - Polls until every notebook has a result JSON, then writes an aggregate summary JSON and fails the GitHub Actions job if any notebook failed, timed out, or did not produce a result.
Useful workflow inputs:
recipes_ref: COSIMA Recipes branch, tag, or SHA to test.resource_profile: one ofMedium,Large,XLarge,XXLarge, orXXLargeMem.- all profiles run on
normalbwwith fixed CPU/memory presets:Medium(4 CPUs, 18GB),Large(7 CPUs, 32GB),XLarge(14 CPUs, 63GB),XXLarge(28 CPUs, 126GB),XXLargeMem(28 CPUs, 252GB). - default profile is
XLarge. poll_timeout_minutes: how long GitHub Actions should wait for all submitted PBS jobs.execute_timeout_seconds: per-notebooknbconverttimeout.gadi_work_dir: optional override for the Gadi base run directory.
The dashboard Run Detail view includes the resource profile, queue, CPU count, memory, and walltime used by each imported all-recipes run summary.
GADI_USERGADI_KEYGADI_KEY_PASSPHRASEif the key is encryptedGADI_SCRIPTS_DIRunlessgadi_work_diris supplied manually