@@ -34,20 +34,24 @@ jobs:
3434 name : ${{ steps.config.outputs.name }}
3535 clients : ${{ steps.config.outputs.clients }}
3636 kurtosis : ${{ steps.config.outputs.kurtosis }}
37+ kurtosis_version : ${{ steps.config.outputs.kurtosis_version }}
3738 kurtosis_branch : ${{ steps.config.outputs.kurtosis_branch }}
3839 worker : ${{ steps.config.outputs.worker }}
3940 backend : ${{ steps.config.outputs.backend }}
41+ send_notification : ${{ steps.config.outputs.send_notification }}
4042 pairs : ${{ steps.config.outputs.pairs }}
4143 pairsidx : ${{ steps.config.outputs.pairsidx }}
4244 assertoor_tests : ${{ steps.config.outputs.assertoor_tests }}
4345 kubernetes_cluster : ${{ steps.config.outputs.kubernetes_cluster }}
4446 kubernetes_storageclass : ${{ steps.config.outputs.kubernetes_storageclass }}
4547 kubeconfig : ${{ steps.kubeconfig.outputs.kubeconfig }}
48+ summary_script : ${{ steps.config.outputs.summary_script }}
4649 steps :
4750 - name : " Parse test configuration"
4851 id : config
4952 shell : bash
5053 run : |
54+ send_notification="${{ inputs.send_notification }}"
5155 testcfg=$(
5256 cat <<"EOF"
5357 ${{ inputs.config }}
@@ -62,10 +66,12 @@ jobs:
6266 kurtosis_branch="$(echo "$testcfg" | jq -r '.kurtosis_branch // ""')"
6367 worker="$(echo "$testcfg" | jq -c .worker)"
6468 backend="$(echo "$testcfg" | jq -r .backend)"
69+ skip_notifications="$(echo "$testcfg" | jq -r .skip_notifications)"
6570 kubernetes_cluster="$(echo "$testcfg" | jq -r .kubernetes.cluster)"
6671 kubernetes_storageclass="$(echo "$testcfg" | jq -r .kubernetes.storageClass)"
6772 pairs="$(echo "$testcfg" | jq -c .clientPairs)"
6873 assertoor_tests="$(echo "$testcfg" | jq -c .assertoorTests)"
74+ summary_script="$(echo "$testcfg" | jq -c .summaryScript)"
6975
7076 echo "ID: $id"
7177 echo "id=$(echo "$id")" >> $GITHUB_OUTPUT
@@ -92,13 +98,22 @@ jobs:
9298 echo "kubernetes_cluster=" >> $GITHUB_OUTPUT
9399 echo "kubernetes_storageclass=" >> $GITHUB_OUTPUT
94100 fi
101+ if [ "$skip_notifications" == "true" ]; then
102+ echo "Notifications: false"
103+ echo "send_notification=false" >> $GITHUB_OUTPUT
104+ else
105+ echo "Notifications: $send_notification"
106+ echo "send_notification=$send_notification" >> $GITHUB_OUTPUT
107+ fi
95108 echo "Client Pairs:"
96109 echo "$pairs" | yq -P
97110 echo "pairs=$(echo "$pairs" | jq -c 'to_entries | map({pairs:.value, index:.key})')" >> $GITHUB_OUTPUT
98111 echo "pairsidx=$(echo "$pairs" | jq -c 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
99112 echo "Assertoor Tests:"
100113 echo "$assertoor_tests" | yq -P
101114 echo "assertoor_tests=$(echo "$assertoor_tests")" >> $GITHUB_OUTPUT
115+ echo "Summary Script: $summary_script"
116+ echo "summary_script=$(echo "$summary_script")" >> $GITHUB_OUTPUT
102117
103118 # Generate kubeconfig for kubernetes backend
104119 - name : " Install rancher CLI"
@@ -147,10 +162,48 @@ jobs:
147162 kubeStorageClass : ${{ needs.get_test.outputs.kubernetes_storageclass }}
148163 clients : ${{ needs.get_test.outputs.clients }}
149164 assertoor_tests : ${{ needs.get_test.outputs.assertoor_tests }}
150- send_notification : ${{ inputs .send_notification }}
165+ send_notification : ${{ needs.get_test.outputs .send_notification }}
151166 use_chatgpt : ${{ inputs.use_chatgpt }}
152167 secrets :
153168 KUBECONFIG : ${{ needs.get_test.outputs.kubeconfig }}
154169 DISCORD_HOOK : ${{ secrets.DISCORD_HOOK }}
155170 CHATGPT_KEY : ${{ secrets.CHATGPT_KEY }}
156171
172+ generate_summary :
173+ name : " Generate Summary"
174+ if : ${{ always() && needs.get_test.outputs.summary_script != '' }}
175+ runs-on : ubuntu-latest
176+ needs : [get_test, run_test]
177+ steps :
178+ - name : Checkout Repository
179+ uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
180+ - name : Get summary artifacts
181+ id : " summary_ids"
182+ run : |
183+ artifacts=$(gh api /repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/artifacts --jq '[.artifacts[] | {id, name}]')
184+ summary_artifacts=$(echo "$artifacts" | jq -c --arg id "${{ needs.get_test.outputs.id }}" '[.[] | select(.name | test("^summary-" + $id + "-")) | .id]' | tr -d "[]")
185+ echo "artifact_ids=$summary_artifacts" >> $GITHUB_OUTPUT
186+ mkdir ./summaries
187+ env :
188+ GH_TOKEN : ${{ github.token }}
189+ - name : Download summary artifacts
190+ uses : actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
191+ with :
192+ artifact-ids : ${{ steps.summary_ids.outputs.artifact_ids }}
193+ path : " ./summaries"
194+ - name : " Parse test configuration"
195+ id : config
196+ shell : bash
197+ run : |
198+ summary_script="${{ needs.get_test.outputs.summary_script }}"
199+ pairs=$(
200+ cat <<"EOF"
201+ ${{ needs.get_test.outputs.pairs }}
202+ EOF
203+ )
204+
205+ if [ -f "$summary_script" ]; then
206+ source $summary_script
207+ generate_summary
208+ fi
209+
0 commit comments