Move spack-config
into config/settings.json
#15
Workflow file for this run
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: Config Settings Update | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- config/settings.* | |
pull_request: | |
branches: | |
- main | |
paths: | |
- config/settings.* | |
env: | |
CONFIG_SETTINGS_PATH: ./config/settings.json | |
CONFIG_SETTINGS_SCHEMA_PATH: ./config/settings.schema.json | |
jobs: | |
settings-validation: | |
name: Validate Deployment Settings | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout settings.json | |
uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ vars.PYTHON_VERSION }} | |
- name: Validate settings.json against Schema | |
run: jsonschema --instance ${{ env.CONFIG_SETTINGS_PATH }} ${{ env.CONFIG_SETTINGS_SCHEMA_PATH }} | |
- name: Validate Deployment Settings | |
id: validate | |
uses: access-nri/build-cd/.github/actions/validate-deployment-settings@main | |
with: | |
settings-path: ${{ env.CONFIG_SETTINGS_PATH }} | |
# TODO: Turn this into a matrix job of targets | |
target: Gadi | |
- name: Comment Validation Issues | |
if: steps.validate.outputs.failures != '' && github.event_name == 'pull_request' | |
uses: access-nri/actions/.github/actions/pr-comment@main | |
with: | |
comment: | | |
:warning: `${{ env.CONFIG_SETTINGS_PATH }}`: Inconsistencies detected with the configuration. See below. :warning: | |
${{ steps.validate.outputs.failures }} | |
setup-settings-update: | |
name: Setup Update of Deployment Settings | |
if: github.event_name == 'push' | |
needs: | |
- settings-validation | |
runs-on: ubuntu-latest | |
outputs: | |
updates: ${{ steps.info.outputs.updates }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Collect Deployment Information | |
id: info | |
# Essentially, we are getting the config/settings.json into a form | |
# that can be understood by the later matrix job. | |
# A matrix job will need something of the form (but in yaml): | |
# { | |
# "deployment-environment": "Gadi", | |
# "type": "Release" | |
# } | |
# TODO: Add back in the ...spack json object as an input to the next job | |
run: | | |
update=$(jq --raw-output --compact-output \ | |
'[.deployment | to_entries[] | .key as $d | .value | keys[] | { | |
"deployment-environment": $d, | |
"type": .key | |
}]' ${{ env.CONFIG_SETTINGS_PATH }} | |
) | |
echo "updates=$update" >> $GITHUB_OUTPUT | |
settings-update: | |
name: Update | |
if: github.event_name == 'push' | |
needs: | |
- setup-settings-update | |
strategy: | |
fail-fast: false | |
matrix: | |
update: ${{ fromJson(needs.setup-settings-update.outputs.updates) }} | |
# Example of this matrix: | |
# update: | |
# - deployment-environment: Gadi | |
# type: Release | |
# - deployment-environment: Gadi | |
# type: Prerelease | |
# etc ... | |
uses: access-nri/build-cd/.github/workflows/settings-2-deploy.yml@main | |
with: | |
deployment-environment: ${{ matrix.update.deployment-environment }} | |
spack-type: ${{ matrix.update.type }} | |
secrets: inherit |