Infra Update v7: !update-configs Comment Command
#153
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
References issue ACCESS-NRI/build-cd#320, rollout issue ACCESS-NRI/build-cd#322, and PR ACCESS-NRI/build-cd#231
Important
This PR is a major update to the deployment infrastructure. See below for the prerequisites for this repository to be able to merge this PR.
Background
It has been a bit of pain for users to have to open up model configs PRs to test out a given Prerelease build. This PR adds a feature which links Model Deployment Repositories (MDRs) to their associated Configs repositories, allowing users to update configurations with prerelease builds automatically via a
!update-configscommand. Configuration of this new command is done in aconfig/auto-configs-pr.jsonconfiguration file.Features
The main new features include:
New
!update-configsComment Command: A command that can open PRs to different configuration branches in a given configs repository, based on a profile (a group of config names) - and can test reproducibility automatically. Syntax is!update-configs [profile=PROFILE]. Profiles are defined in theconfig/auto-configs-pr.jsonfile, explained in this section.Reorganisation of Workflow Files: Moved all comment command workflows into a
ci-command.ymlfile.Prerequisites for Merging
build-cdentrypoints tov7(this PR!)secrets.CONFIGS_REPO_TOKENthat hascontents:write,pull-requests:writefor all configs repositories you are looking to open PRs into.config/auto-configs-pr.jsonfile specific to this MDR (see below for examples)The
config/auto-configs-pr.jsonFileThis file is split into multiple profiles. A profile can be thought of as a configs repository, multiple config branches to open PRs into, and what checks to run for each of those config branches. Users specify a particular profile through
!update-configs profile=PROFILE(eg.!update-configs profile=qa-only). If no profile is specified (eg.!update-configs) the requireddefaultprofile is used.An example
config/auto-configs-pr.jsonfile looks like this:{ "$schema": "https://raw.githubusercontent.com/ACCESS-NRI/schema/main/au.org.access-nri/model/deployment/config/auto-configs-pr/1-0-0.json", "profiles": { "default": { "configs_repo": "ACCESS-NRI/access-test-configs", "configs": { "dev-01deg_jra55_iaf": { "checks": { "repro": true } } } }, "qa-only": { "configs_repo": "ACCESS-NRI/access-test-configs", "configs": { "dev-01deg_jra55_iaf": { "checks": { "repro": false } }, "dev-01deg_jra55_ryf": { "checks": { "repro": false } } } } } }This means that
!update-configsinvoked on a Prerelease PR for the HEAD prerelease build (for example,access-test/pr100-2), will automatically create one PR inACCESS-NRI/access-test-configs, in a feature branch off thedev-01deg_jra55_iafbranch, with all changes required to use the prerelease module. Furthermore, it will run!test reproon that PR.Similarly,
!update-configs profile=qa-onlywill open two PRs inACCESS-NRI/access-test-configs, in feature branches off thedev-01deg_jra55_iafanddev-01deg_jra55_ryfbranches respectively. Repro checks will not be run, but QA checks will run as normal.