@@ -121,20 +121,20 @@ jobs:
121121 return;
122122 }
123123
124- // Check for /test -e2e-full comment trigger
124+ // Check for /trigger -e2e-full comment trigger
125125 if (context.eventName === 'issue_comment') {
126126 const comment = context.payload.comment.body.trim();
127127 const issue = context.payload.issue;
128128
129- // Only process /test -e2e-full comments on PRs
129+ // Only process /trigger -e2e-full comments on PRs
130130 if (!issue.pull_request) {
131131 console.log('Comment is not on a PR, skipping');
132132 core.setOutput('run_full', 'false');
133133 return;
134134 }
135135
136136 // Check for valid command
137- const validCommands = ['/test -e2e-full'];
137+ const validCommands = ['/trigger -e2e-full'];
138138 if (!validCommands.includes(comment)) {
139139 console.log(`Comment "${comment}" is not a valid trigger command, skipping`);
140140 core.setOutput('run_full', 'false');
@@ -233,8 +233,28 @@ jobs:
233233 echo "Building local image: $FULL_IMAGE"
234234 echo "Image will be loaded into Kind cluster (no push needed)"
235235
236- # Build image locally (no push needed for Kind)
237- make docker-build IMG="$FULL_IMAGE"
236+ # Build image locally with retry logic for transient registry errors (e.g., quay.io 500 errors)
237+ MAX_ATTEMPTS=3
238+ ATTEMPT=1
239+ WAIT_TIME=5
240+
241+ while [ $ATTEMPT -le $MAX_ATTEMPTS ]; do
242+ echo "Build attempt $ATTEMPT of $MAX_ATTEMPTS..."
243+ if make docker-build IMG="$FULL_IMAGE"; then
244+ echo "Image built successfully on attempt $ATTEMPT"
245+ break
246+ fi
247+
248+ if [ $ATTEMPT -lt $MAX_ATTEMPTS ]; then
249+ echo "Build failed (possibly transient registry error). Retrying in ${WAIT_TIME}s..."
250+ sleep $WAIT_TIME
251+ WAIT_TIME=$((WAIT_TIME * 2)) # Exponential backoff
252+ else
253+ echo "Build failed after $MAX_ATTEMPTS attempts"
254+ exit 1
255+ fi
256+ ATTEMPT=$((ATTEMPT + 1))
257+ done
238258
239259 echo "image=$FULL_IMAGE" >> $GITHUB_OUTPUT
240260 echo "image_tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT
0 commit comments