Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
6d0aa10
deploy-2-start: Update access-spack-packages via `spack repo update` …
CodeGat Oct 29, 2025
9d4055f
deploy-1-setup: Validate all repos using get-git-ref-info action
CodeGat Oct 29, 2025
1ea56d4
Update PR comment and Release Notes
CodeGat Oct 29, 2025
f7dcad8
Update tests for PR Comment and Release Note Generation
CodeGat Oct 29, 2025
88b6d7c
Update `tracking_services_data.py` schema and generation to `2-0-0`, …
CodeGat Oct 29, 2025
f48a750
Delete unreferenced validate-repo-version
CodeGat Oct 29, 2025
7a25fb7
get-deploy-paths: Split inputs.deployment-environment into target and…
CodeGat Oct 30, 2025
13e4568
get-deploy-paths: Remove spack-package* outputs
CodeGat Oct 30, 2025
ffee517
Updated prerelease injection to git-based repos format, updated tests
CodeGat Oct 30, 2025
9ad074a
create-deployment-spack.yml: Remove spack-packages clone as it is man…
CodeGat Oct 30, 2025
aaffa86
Updated settings.schema.json to require `builtin-spack-packages` for …
CodeGat Oct 30, 2025
80b847d
settings-2-deploy.yml: Deployment works for spack>=1.0's builtin-spac…
CodeGat Oct 30, 2025
b72d6b0
Update all inter-workflow refs to v8
CodeGat Oct 30, 2025
f155ed9
Add updated deployment settings.json
CodeGat Nov 21, 2025
930d30d
fix: Change builtin to access-spack-packages-ref for getting SHA
CodeGat Nov 24, 2025
a685e21
Add access-spack-packages ref to final manifest rather than in the in…
CodeGat Dec 15, 2025
8c4701f
Use get-pr-deployments action
CodeGat Jan 12, 2026
2a73a8b
Add back scope cleanup
CodeGat Jan 12, 2026
c546895
Move repeated paths into env
CodeGat Jan 12, 2026
b0c0255
Change cd directory to build-cd, update module injection to use worki…
CodeGat Jan 12, 2026
b753216
Add back custom-projection logic to modules-injection step
CodeGat Jan 12, 2026
a83283f
Add back updated hash logic after erroneous rebase
CodeGat Jan 13, 2026
e51b275
Fix last working-directory path
CodeGat Jan 13, 2026
c80f3aa
Spack V1 Migration Feature: Reserved Spack Definitions (#332)
CodeGat Jan 16, 2026
acea28e
Spack V1 Migration Feature: `config/versions.json` `custom-scopes` Fi…
CodeGat Jan 20, 2026
b238033
Remove Entrypoint `inputs.root-sbd`, Add `inputs.spack-manifest-path`…
CodeGat Jan 21, 2026
e611208
hotfix: Fixed erroneous actions path
CodeGat Jan 21, 2026
61af36d
Update config/settings.json to proposed version
CodeGat Jan 22, 2026
fa6ccf5
hotfix: quote packages for the case where there are no packages for i…
CodeGat Jan 22, 2026
c6ac046
fix: Correct Custom Projections for SDRs
CodeGat Jan 23, 2026
dc8f08f
Update config/settings.json to reflect deployment state
CodeGat Jan 23, 2026
df2d875
Update spack-config to 2026.02.000 across 0.22, 1.1. Update spack to …
CodeGat Feb 6, 2026
5400827
Update v1.1 Pre/Rel to 2026.02.001
CodeGat Feb 6, 2026
4b5b715
Update ACLs for restricted directories to include df42
CodeGat Feb 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .github/actions/get-deploy-paths/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ This action constructs paths relevant to a deployment of `spack`.
| ---- | ---- | ----------- | -------- | ------- | ------- |
| `spack-installs-root-path` | `string` | Path to a directory within which all versions of spack are installed | `true` | N/A | `"/some/dir/apps/spack"` |
| `spack-version` | `string` | Version of spack deployed. Used to construct a specific spack installation path, in conjunction with `spack-installs-root-path`. | `true` | N/A | `"0.21"` |
| `deployment-environment` | `string` | Name of the GitHub deployment target environment | `true` | N/A | `"Gadi Prerelease"` |
| `deployment-target` | `string` | Name of the GitHub deployment target | `true` | N/A | `"Gadi"` |
| `deployment-type` | `string` | Type of the GitHub deployment target | `true` | N/A | `"Release"`, `"Prerelease"` |
| `spack-environment` | `string` | Spack environment name that is used for this deployment. Used to construct Prerelease spack-packages path, which is demarcated by the environment name | `true` | N/A | `"access-om2-pr12-12"` |

## Outputs
Expand All @@ -29,15 +30,16 @@ This action constructs paths relevant to a deployment of `spack`.
jobs:
get-paths:
runs-on: ubuntu-latest
environment: ${{ inputs.deployment-environment }}
environment: ${{ inputs.deployment-target }} ${{ inputs.deployment-type }}
steps:
- name: Get Deployment Paths
id: paths
uses: access-nri/build-cd/.github/actions/get-deploy-paths@vX
with:
spack-installs-root-path: ${{ vars.SPACK_INSTALLS_ROOT_PATH }}
spack-version: "0.21"
deployment-environment: ${{ inputs.deployment-environment }}
deployment-target: ${{ inputs.deployment-target }}
deployment-type: ${{ inputs.deployment-type }}
spack-environment: ${{ inputs.env-name }}

- run: echo 'Spack is installed in `${{ steps.paths.outputs.spack }}` and spack-packages is installed in `${{ steps.paths.outputs.spack-packages }}`'
Expand Down
48 changes: 19 additions & 29 deletions .github/actions/get-deploy-paths/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,40 +9,40 @@ inputs:
spack-version:
required: true
description: |
Version of spack deployed.
Major branch version of spack deployed, eg. 0.22, 1.0.
Used to construct a specific spack installation path, in conjunction with `spack-installs-root-path`.
deployment-environment:
deployment-target:
required: true
description: Name of the GitHub deployment target environment
description: |
Name of the GitHub deployment target. Combined with inputs.deployment-type to form the GitHub Environment name.
For example: Gadi, Setonix
deployment-type:
required: true
description: |
Type of the GitHub deployment target. Combined with inputs.deployment-target to form the GitHub Environment name.
For example: Prerelease, Release
spack-environment:
required: true
description: |
Spack environment name that is used for this deployment.
Used to construct Prerelease spack-packages path, which is demarcated by the environment name.
outputs:
root:
description: |
Path to the root of a specific deployment of `spack`.
This path contains `spack-{packages,config}` repositories as well.
This path contains `spack-config` and various `spack-packages` repositories in it's hierarchy as well.
value: ${{ steps.path.outputs.root }}
spack:
description: Path to a specific installation of `spack`.
value: ${{ steps.path.outputs.spack }}
spack-config:
description: Path to the ACCESS-NRI/spack-config repository associated with the install of spack.
value: ${{ steps.path.outputs.spack-config }}
spack-packages-root:
description: |
Path to the folder containing all ACCESS-NRI/spack-packages repositories used in the install of spack.
For Release inputs.deployment-environment, this is the repository itself.
For Prerelease inputs.deployment-environment, this is the folder containing multiple spack-packages repositories.
value: ${{ steps.path.outputs.spack-packages-root }}
spack-packages:
description: Path to the ACCESS-NRI/spack-packages repository associated with the environment created in the install of spack.
value: ${{ steps.path.outputs.spack-packages }}
spack-environment:
description: Path to the spack environment folder for the given inputs.spack-environment.
description: Path to the spack environment folder for the given inputs.spack-environment. Also contains the `spack-packages` repository for Prerelease deployments.
value: ${{ steps.path.outputs.spack-environment }}
# Regarding our other important repository path, spack-packages:
# Release instances of spack-packages are now managed by spack itself via `spack repo` commands, so deployment doesn't actually need to know where it is.
# Prerelease instances of spack-packages are located within the outputs.spack-environment folder, and are removed when that environment is removed, so there is no need to track them either.
runs:
using: composite
steps:
Expand All @@ -54,32 +54,22 @@ runs:
run: |
# Check that the inputs.spack-installs-root-path exists - it's usually a var
if [ -z '${{ inputs.spack-installs-root-path }}' ]; then
echo '::error::inputs.spack-installs-root-path does not exist in ${{ github.repository }}s ${{ inputs.deployment-environment }} environment. Check Environment vars.'
echo '::error::inputs.spack-installs-root-path does not exist in ${{ github.repository }}s ${{ inputs.deployment-target }} ${{ inputs.deployment-type }} environment. Check Environment vars.'
exit 1
fi

# We want the type of deployment environment, which is the last word in the string.
type=$(echo '${{ inputs.deployment-environment }}' | rev | cut -d ' ' -f 1 | rev)
if [[ ! '${{ env.ACCEPTABLE_DEPLOYMENT_ENVIRONMENT_TARGETS}}' =~ "$type" ]]; then
echo '::error::inputs.deployment-environment must be one of ${{ env.ACCEPTABLE_ENVIRONMENT_TARGETS }}.'
if [[ ! '${{ env.ACCEPTABLE_DEPLOYMENT_ENVIRONMENT_TARGETS}}' =~ "${{ inputs.deployment-type }}" ]]; then
echo '::error::inputs.deployment-type must be one of ${{ env.ACCEPTABLE_DEPLOYMENT_ENVIRONMENT_TARGETS }}.'
exit 1
fi
echo "type=$type" >> $GITHUB_OUTPUT

- name: Get ${{ inputs.deployment-environment }} Remote Paths
- name: Get ${{ inputs.deployment-target }} ${{ inputs.deployment-type }} Remote Paths
id: path
shell: bash
run: |
root=${{ inputs.spack-installs-root-path }}/${{ inputs.spack-version }}
echo "root=$root" >> $GITHUB_OUTPUT
echo "spack=$root/spack" >> $GITHUB_OUTPUT
echo "spack-config=$root/spack-config" >> $GITHUB_OUTPUT
echo "spack-packages-root=$root/spack-packages" >> $GITHUB_OUTPUT

if [[ '${{ steps.validate.outputs.type }}' == Release ]]; then
echo "spack-packages=$root/spack-packages" >> $GITHUB_OUTPUT
elif [[ '${{ steps.validate.outputs.type }}' == Prerelease ]]; then
echo "spack-packages=$root/spack-packages/${{ inputs.spack-environment }}/spack-packages" >> $GITHUB_OUTPUT
fi

echo "spack-environment=$root/environments/${{ inputs.spack-environment }}" >> $GITHUB_OUTPUT
38 changes: 38 additions & 0 deletions .github/actions/get-spack-manifest/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Get Spack Manifest Information

Action that returns information about a Spack manifest file.

## Inputs

> [!NOTE]
> Action assumes that an appropriate repository is checked out prior to invocation

| Name | Type | Description | Required | Default | Example |
| ---- | ---- | ----------- | -------- | ------- | ------- |
| `spack-manifest-path` | `string` | The path to the spack manifest file | `false` | `"spack.yaml"` | `"./some/other.spack.yaml"` |

## Outputs

| Name | Type | Description | Example |
| ---- | ---- | ----------- | ------- |
| `deployment-name` | `string` | The name of the deployment as specified in the reserved definition `_name` | `access-om2` |
| `deployment-version` | `string` | The version of the deployment as specified in the reserved definition `_version` | `2025.11.000` |

## Example

```yaml
# ...
jobs:
manifest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- id: spec
uses: access-nri/build-cd/.github/actions/get-spack-manifest@vX # for some version `vX`
with:
spack-manifest-path: spack.yaml

- run: |
echo "Deploying ${{ steps.spec.outputs.deployment-name }} at ${{ steps.spec.outputs.deployment-version }}"
```
52 changes: 52 additions & 0 deletions .github/actions/get-spack-manifest/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Get Spack Manifest Information
description: Action that returns information about a Spack manifest file
author: Tommy Gatti
inputs:
spack-manifest-path:
required: false
default: spack.yaml
description: The path to the spack manifest file
outputs:
deployment-name:
description: |
The name of the deployment as specified in the reserved definition _name, in the spack manifest file.
value: ${{ steps.defs.outputs.name }}
deployment-version:
description: |
The version of the deployment as specified in the reserved definition _version, in the spack manifest file.
value: ${{ steps.defs.outputs.version }}
runs:
using: composite
steps:
- name: Clone build-cd script location
uses: actions/checkout@v4
with:
repository: access-nri/build-cd
path: ${{ github.workspace }}/getter-script

- name: Get Current Directory
id: script
# We need to store the current working directory so we can re-construct the inputs.spack-manifest-path, as we run
# the script from the build-cd directory
shell: bash
run: |
pwd=$(pwd)
echo "Action PWD: $pwd"
echo "pwd=$pwd" >> $GITHUB_OUTPUT

- name: Get reserved definitions
id: defs
env:
PYTHONPATH: ${{ github.workspace }}/getter-script
shell: python
run: |
from scripts.spack_manifest.getter import ReservedDefinitions
import os

defs = ReservedDefinitions.from_file("${{ steps.script.outputs.pwd }}/${{ inputs.spack-manifest-path }}")
name = defs.get("name")
version = defs.get("version")

with open(os.environ['GITHUB_OUTPUT'], 'a') as o:
o.write(f"name={name}\n")
o.write(f"version={version}\n")
45 changes: 0 additions & 45 deletions .github/actions/get-spack-root-spec/README.md

This file was deleted.

92 changes: 0 additions & 92 deletions .github/actions/get-spack-root-spec/action.yml

This file was deleted.

33 changes: 0 additions & 33 deletions .github/actions/validate-repo-version/README.md

This file was deleted.

Loading