@@ -22,26 +22,30 @@ jobs:
22
22
23
23
- name : Setup spack updates
24
24
id : spack
25
- # TODO: Since we can't format this json as an input for this job (see the earlier workflow) we need to do it here
25
+ # TODO: Since we can't format any of this later json as an input for this job (see the earlier workflow) we need to do it here
26
26
run : |
27
27
updates=$(jq --compact-output --raw-output \
28
28
--arg env "${{ inputs.deployment-environment }}" \
29
29
--arg type "${{ inputs.spack-type }}" \
30
- '.deployment[$env][$type]. spack' \
30
+ '.deployment[$env][$type] | to_entries[] | "\(.key) \(.value. spack)" ' \
31
31
${{ env.CONFIG_SETTINGS_PATH }}
32
32
)
33
- versions=$(jq --compact-output --raw-output \
33
+
34
+ echo "$updates"
35
+ echo "updates=$updates" >> $GITHUB_OUTPUT
36
+
37
+ - name : Setup spack-config updates
38
+ id : spack-config
39
+ run : |
40
+ updates=$(jq --compact-output --raw-output \
34
41
--arg env "${{ inputs.deployment-environment }}" \
35
42
--arg type "${{ inputs.spack-type }}" \
36
- '.deployment[$env][$type].spack | keys | @sh ' \
43
+ '.deployment[$env][$type] | to_entries[] | "\(.key) \(.value.spack-config" ' \
37
44
${{ env.CONFIG_SETTINGS_PATH }}
38
45
)
39
46
40
47
echo "$updates"
41
- echo "$versions"
42
-
43
48
echo "updates=$updates" >> $GITHUB_OUTPUT
44
- echo "versions=$versions" >> $GITHUB_OUTPUT
45
49
46
50
- name : Setup SSH
47
51
id : ssh
@@ -50,20 +54,16 @@ jobs:
50
54
hosts : ${{ secrets.HOST }}
51
55
private-key : ${{ secrets.SSH_KEY }}
52
56
53
- - name : Update
57
+ - name : Update Spack
54
58
continue-on-error : true
55
59
run : |
56
60
ssh ${{ secrets.USER}}@${{ secrets.HOST }} -i ${{ steps.ssh.outputs.private-key-path }} /bin/bash <<'EOT'
57
61
set +e
58
- for version in ${{ steps.spack.outputs.versions }}; do
59
- new_commit=$(jq --compact-output --raw-output \
60
- --arg v "$version" \
61
- --arg env "${{ inputs.deployment-environment }}" \
62
- --arg type "${{ inputs.spack-type }}" \
63
- '.deployment[$env][$type].spack[$v]' \
64
- ${{ env.CONFIG_SETTINGS_PATH }}
65
- )
62
+ while read -ra update; do
63
+ version=${update[0]}
64
+ new_commit=${update[1]}
66
65
current_head_commit=$(git -C ${{ secrets.SPACK_INSTALLS_ROOT_LOCATION }}/$version/spack rev-parse HEAD)
66
+
67
67
if [ $? -eq 128 ]; then
68
68
# FIXME: Deploy spack instances in this job too.
69
69
echo "::error::Error: ${{ inputs.deployment-environment }} ${{ inputs.spack-type }} $version spack does not exist. Deploy it via build-cds Create Deployment Spack workflow first."
82
82
else
83
83
echo "::notice::Unchanged: ${{ inputs.deployment-environment }} ${{ inputs.spack-type }} $version spack left at $current_head_commit"
84
84
fi
85
- done
85
+ done <<< "${{ steps.spack.outputs.updates }}"
86
+ EOT
87
+
88
+ - name : Update spack-config
89
+ continue-on-error : true
90
+ run : |
91
+ ssh ${{ secrets.USER}}@${{ secrets.HOST }} -i ${{ steps.ssh.outputs.private-key-path }} /bin/bash <<'EOT'
92
+ set +e
93
+ while read -ra update; do
94
+ version=${update[0]}
95
+ new_commit=${update[1]}
96
+ current_head_commit=$(git -C ${{ secrets.SPACK_INSTALLS_ROOT_LOCATION }}/$version/spack-config rev-parse HEAD)
97
+
98
+ if [ $? -eq 128 ]; then
99
+ echo "::error::Error: ${{ inputs.deployment-environment }} ${{ inputs.spack-type }} $version spack-config does not exist."
100
+ continue
101
+ fi
102
+
103
+ git -C ${{ secrets.SPACK_INSTALLS_ROOT_LOCATION }}/$version/spack-config fetch
104
+
105
+ if [[ "$current_head_commit" != "$new_commit" ]]; then
106
+ git -C ${{ secrets.SPACK_INSTALLS_ROOT_LOCATION }}/$version/spack-config checkout $new_commit
107
+ if [ $? -ne 0 ]; then
108
+ echo "::error::Error: ${{ inputs.deployment-environment }} ${{ inputs.spack-type }} $version spack-config failed checkout from $current_head_commit to $new_commit"
109
+ else
110
+ echo "::notice::Changed: ${{ inputs.deployment-environment }} ${{ inputs.spack-type }} $version spack-config changed from $current_head_commit to $new_commit"
111
+ fi
112
+ else
113
+ echo "::notice::Unchanged: ${{ inputs.deployment-environment }} ${{ inputs.spack-type }} $version spack-config left at $current_head_commit"
114
+ fi
115
+ done <<< "${{ steps.spack-config.outputs.updates }}"
86
116
EOT
0 commit comments