Update Prerelease 0.22 spack-config
to 2024.11.11
#27
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": . | |
}]' ${{ env.CONFIG_SETTINGS_PATH }} | |
) | |
echo "updates=$update" >> $GITHUB_OUTPUT | |
settings-link-run: | |
name: Link Workflow Run To PR | |
if: github.event_name == 'push' | |
needs: | |
- setup-settings-update | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: write | |
env: | |
GH_TOKEN: ${{ github.token }} | |
steps: | |
- name: Get merged PR number | |
id: pr | |
# Get the most-recently merged PR and comment the workflow run link | |
run: | | |
last_merged_pr_number=$(gh pr list \ | |
--state merged \ | |
--json 'number,mergedAt' \ | |
--jq 'sort_by(.mergedAt) | last | .number' | |
) | |
gh pr view $last_merged_pr_number | |
echo "number=$last_merged_pr_number" >> $GITHUB_OUTPUT | |
- name: Comment on PR ${{ steps.pr.outputs.number }} | |
env: | |
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
uses: access-nri/actions/.github/actions/pr-comment@main | |
with: | |
pr: ${{ steps.pr.outputs.number }} | |
comment: |- | |
:information_source: The deployment of the merged settings update can be found here: ${{ env.RUN_URL }} :information_source: | |
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 |