-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multi-HPC Workflows #218
Multi-HPC Workflows #218
Conversation
) * settings-1-update.yml: Validate settings in parallel based on target * deploy-2-start.yml: Output modules and spack location from workflow * deploy-2-start.yml: Capitalize inputs.type values to keep in line with callers * deploy-1-setup.yml: Update inputs/outputs to be suitable for a matrix job. This matrix job must have the required I/O to do pre-deploy checks, as well as a deployment. * Move check-spack-yaml and check-config jobs from ci.yml to deploy-1-setup.yml * deploy-1-setup.yml: Use new inputs as inputs to deploy-2-start.yml * deploy-1-start.yml: Upload 'outputs' of workflow as an artifact. This is due to dynamic matrix job outputs not being collected appropriately. See https://github.com/orgs/community/discussions/17245 * cd.yml: Run checks of target config in parallel * ci.yml: Dynamically generate deployment comment, start matrix of deployment jobs, misc changes * cd.yml: Update deployment matrix jq * ci.yml: Add newline to deployment comment to fix formatting * Update job names to include deploy target
…general metadata artifact glob
…loy-2-start.yml` invocation
Multi-Target GitHub Releases
Co-authoured-by: Tom McAdam <[email protected]>
Jinja Templating for Complex Text
Replace `env.SPACK_YAML_MODEL_YQ` to accomodate for multi-target-format `spack.yaml`
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The vibe seems good. I have some questions, but am happy to merge if you think it appropriate.
This is because all environment are now of the form SUPERCOMPUTER TYPE
Update Acceptable Environments to the form `SUPERCOMPUTER TYPE`
The merged pull request should satisfy all your vibe-based review comments, @aidanheerdegen! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Happy to hit the big green button. Great work, thanks.
Thanks to @aidanheerdegen, @jo-basevi and @tmcadam for helping review the various PRs within this super-PR 🥳 |
Closes #121 super-issue
Close #213
Close #196
Important
This is a major update to build infrastructure. Therefore, there are changes required to Model Deployment Repositories before the
v4
branch can be used. These are noted in the 'Major Model Deployment Repository Changes' sectionBackground
This super Pull Request contains a rework of
build-cd
infrastructure to support deployment to multiple HPCs at once. The major changes are noted below:spack.yaml
Updates:spack.yaml
file now allows for variations in compiler/target/variants based on HPC target via mutually-exclusivespack.definitions[].when
clauses, example here. Schema defined in1-0-4.json
, implementation done in Support Multi-targetspack.yaml
#208 and discussed in Investigation: Multi-target Manifest Files model-deployment-template#15Model Deployment Repository Choice In Deployment Targets: Since not all model deployment repositories may want to deploy to all valid deployment targets (namely, all the things defined in
config/settings.json
), model deployment repositories can set the repo-levelvars.[PRE]RELEASE_DEPLOYMENT_TARGETS
to choose Prerelease/Release targets. This is most useful for future Releases where we don't want to yet deploy officially to other HPC targets. Done in Support Deployment Target Choice For Deployment Repositories #211Release Notes and Deployment Comment Updates: Examples of the former and latter, the final update from Jinja Templating for Complex Text #207
Releases: A notable decision: a single deployment version encompasses multiple deployment targets, see Make
release
Job Take Inputs From Multi-Target Deployments #200 (comment)Model DB: Notably, the model DB has been left unchanged, only adding
Gadi
-specific information. This was because it'd be a fairly large piece of work in itself, and we probably won't be deploying official Releases to other targets for a while. The interim solution was done in Interimmodel-db
Update: Only IngestGadi
Metadata #214 and the decision to wait on the larger update: Consider Multi-Target Paths For Model DB #201Updated workflow matrix structure: See the chicken-scratching picture regarding deployment workflow here Move jobs around so they can be part of a single parallel workflow #203, and release/release provenance workflow here Multi-Target GitHub Releases #205
Pull Requests Incorporated
This PR incorporates the following merged pull requests from
build-cd
:env.SPACK_YAML_MODEL_YQ
to accomodate for multi-target-formatspack.yaml
#210model-db
Update: Only IngestGadi
Metadata #214SUPERCOMPUTER TYPE
#221And the following into other related repositories:
spack.yaml
schema#41spack.yaml
model-deployment-template#18SUPERCOMPUTER Release
Environments model-deployment-template#22And the changes made solely in this PR (consolidated here):
deploy-2-start.yml
deployment-environment
input intodeployment-target
anddeployment-type
in beee2cfbuild-cd
references to latest (future) default branch (v4
) in 6299c48Major Model Deployment Repository Changes
Since this is a major
build-cd
bump (due to changed entrypoint workflows, new vars and the overall size of the update), we need to do updates to all Model Deployment Repositories before we can use the newv4
branch. Namely:vars.RELEASE_DEPLOYMENT_TARGETS
,vars.PRERELEASE_DEPLOYMENT_TARGETS
for model-deployment-repository-level choice on deployment targets.vars.SPACK_YAML_SCHEMA_VERSION
to1-0-4
ci.yml
spr-closed
job inputs fromname
toroot-sbd
, due to 4d8a7c8, and give thecd
jobpermissions.pull-requests:write
due to fa11ad3v3
workflows tov4
SUPERCOMPUTER
withSUPERCOMPUTER Release
Testing
E2E Testing was done primarily on
ACCESS-NRI/ACCESS_TEST
, (Prerelease-related stuff in ACCESS-NRI/ACCESS-TEST#16, and Release-related stuff in ACCESS-NRI/ACCESS-TEST#20).We used a branch (
dev-121-multi-target-workflows_TEST
, may be deleted now) off this one in which we add config for an additionalGadiTest
environment, and call workflows from this branch. See branch comparison here.Testing Prereleases
✔️ With traditional, single-target
spack.yaml
Works.
✔️ With multi-target
spack.yaml
Works! See this commit, run and result.
✔️ Using
!bump
Still works, see:
✔️ Using
!redeploy
Works: See invocation, run and result.
Closing PRs
Works! See run.
Testing Releases
✔️ Deployment
Succeeds, see run, and (ephemeral, may be gone later) deployment accessible via:
✔️ Release Artifact
Works, see run and (Un)official Realease.
✔️ Model DB Upload (stub)
Data for this side of the old DB API looks correct, see run.