Skip to content

Commit 3ac74f6

Browse files
authored
Adds robust LAVA job monitoring in CI (#280)
This change updates the workflow to: - Check LAVA job status using lavacli inside the Docker container - Handle additional states such as Cancelled, Incomplete, or timeout (>2 hours) - Wait until the job reaches Finished before proceeding - Fetch test results on completion and set pass/fail summary in GitHub Actions - Update the step summary with job ID, URL, and final status This improves reliability of LAVA-triggered test pipelines and prevents workflows from hanging or reporting incorrect results.
2 parents ed0dbf0 + b0b38f7 commit 3ac74f6

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

.github/workflows/test.yml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,19 +78,36 @@ jobs:
7878
id: check_job
7979
run: |
8080
STATE=""
81+
START_TIME=$(date +%s)
8182
while [ "$STATE" != "Finished" ]; do
8283
state=$(docker run -i --rm --workdir="$PWD" -v "$(dirname $PWD)":"$(dirname $PWD)" ${{ inputs.docker_image }} sh -c "lavacli identities add --token ${{ secrets.LAVA_OSS_TOKEN }} --uri https://lava-oss.qualcomm.com/RPC2 --username ${{ secrets.LAVA_OSS_USER }} production && lavacli -i production jobs show $JOB_ID" | grep state)
8384
STATE=$(echo "$state" | cut -d':' -f2 | sed 's/^ *//;s/ *$//')
8485
echo "Current status: $STATE"
86+
CURRENT_TIME=$(date +%s)
87+
ELAPSED_TIME=$(((CURRENT_TIME - START_TIME)/3600))
88+
if [ $ELAPSED_TIME -ge 2 ]; then
89+
echo "Timeout: 2 hours exceeded."
90+
summary=":x: Lava job exceeded time limit."
91+
echo "summary=$summary" >> $GITHUB_OUTPUT
92+
exit 1
93+
fi
8594
sleep 30
8695
done
8796
health=$(docker run -i --rm --workdir="$PWD" -v "$(dirname $PWD)":"$(dirname $PWD)" ${{ inputs.docker_image }} sh -c "lavacli identities add --token ${{ secrets.LAVA_OSS_TOKEN }} --uri https://lava-oss.qualcomm.com/RPC2 --username ${{ secrets.LAVA_OSS_USER }} production && lavacli -i production jobs show $JOB_ID" | grep Health)
8897
HEALTH=$(echo "$health" | cut -d':' -f2 | sed 's/^ *//;s/ *$//')
8998
if [[ "$HEALTH" == "Complete" ]]; then
90-
echo "Lava job passed."
91-
summary=":heavy_check_mark: Lava job passed."
92-
echo "summary=$summary" >> $GITHUB_OUTPUT
93-
exit 0
99+
TEST_RESULTS=$(docker run -i --rm --workdir="$PWD" -v "$(dirname $PWD)":"$(dirname $PWD)" ${{ inputs.docker_image }} sh -c "lavacli identities add --token ${{ secrets.LAVA_OSS_TOKEN }} --uri https://lava-oss.qualcomm.com/RPC2 --username ${{ secrets.LAVA_OSS_USER }} production && lavacli -i production results $JOB_ID" | grep fail || echo "Pass")
100+
if [[ "$TEST_RESULTS" == "Pass" ]]; then
101+
echo "Lava job passed."
102+
summary=":heavy_check_mark: Lava job passed."
103+
echo "summary=$summary" >> $GITHUB_OUTPUT
104+
exit 0
105+
else
106+
echo "Lava job failed."
107+
summary=":x: Lava job failed."
108+
echo "summary=$summary" >> $GITHUB_OUTPUT
109+
exit 1
110+
fi
94111
else
95112
echo "Lava job failed."
96113
summary=":x: Lava job failed."

0 commit comments

Comments
 (0)