From 313f3297306ace9fc0c96d3e1b0b23873ed0afba Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Tue, 4 Mar 2025 09:22:29 +0000 Subject: [PATCH] Fixed early exit when the deployment isn't found --- entrypoint.sh | 80 ++++++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 1a516f8..b1c2ab8 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -3,76 +3,78 @@ set -euo pipefail start_time=$(date +%s) - deployment_ready=false - -request_url="https://api.vercel.com/v6/deployments?projectId=$INPUT_PROJECT_ID&limit=100" +base_request_url="https://api.vercel.com/v6/deployments?projectId=$INPUT_PROJECT_ID&limit=100" if [[ -n "$INPUT_TEAM_ID" ]]; then - request_url="$request_url&teamId=$INPUT_TEAM_ID" + base_request_url="$base_request_url&teamId=$INPUT_TEAM_ID" fi -echo "::debug::Retrieving Deployments from: $request_url" +echo "::debug::Base request URL: $base_request_url" while [ "$deployment_ready" = false ] && [ "$(($(date +%s) - start_time))" -lt "$INPUT_TIMEOUT" ]; do + # Reset to base URL each time we poll + request_url="$base_request_url" echo "::debug::Requesting deployments from: $request_url" + response=$(curl -s "$request_url" -H "Authorization: Bearer $INPUT_TOKEN") && exit_status=$? || exit_status=$? if [[ $exit_status -ne 0 ]]; then echo "::warning::Failed to get deployment from: $request_url" - break + sleep 5 # Add a delay before retrying + continue fi - error_code=$(echo "$response" | jq -r '.error.code') + error_code=$(echo "$response" | jq -r '.error.code // "none"') - if [ "$error_code" = "forbidden" ]; then - error_message=$(echo "$response" | jq -r '.error.message') - invalid_token=$(echo "$response" | jq -r '.error.invalidToken') - - combined_message="$error_message" - - if [ "$invalid_token" = true ]; then - combined_message+=" (Invalid token detected.)" + if [ "$error_code" != "none" ] && [ "$error_code" != "null" ]; then + if [ "$error_code" = "forbidden" ]; then + error_message=$(echo "$response" | jq -r '.error.message') + invalid_token=$(echo "$response" | jq -r '.error.invalidToken') + + combined_message="$error_message" + + if [ "$invalid_token" = true ]; then + combined_message+=" (Invalid token detected.)" + fi + + echo "::error::$combined_message" + exit 1 + else + echo "::warning::API returned error: $error_code" fi - - echo "::error::$combined_message" - exit 1 fi echo "::debug::Parsing the response from: $request_url" deployment=$(echo "$response" | jq -r --arg INPUT_SHA "$INPUT_SHA" '.deployments[] | select(.meta.githubCommitSha==$INPUT_SHA)') - id=$(echo "$deployment" | jq -r '.uid') - url=$(echo "$deployment" | jq -r '.url') - state=$(echo "$deployment" | jq -r '.state') - alias_error=$(echo "$deployment" | jq -r '.aliasError') + echo "::debug::Found deployment data: $(echo "$deployment" | head -c 100)..." + + if [ -n "$deployment" ]; then + id=$(echo "$deployment" | jq -r '.uid') + url=$(echo "$deployment" | jq -r '.url') + state=$(echo "$deployment" | jq -r '.state') + alias_error=$(echo "$deployment" | jq -r '.aliasError') + + echo "::debug::Deployment state: $state" - if [ "$state" = "READY" ]; then - deployment_ready=true - cat <>"$GITHUB_OUTPUT" + if [ "$state" = "READY" ]; then + deployment_ready=true + cat <>"$GITHUB_OUTPUT" id=$id url=$url state=$state alias_error=$alias_error EOF - break - fi - - next=$(echo "$response" | jq -r '.pagination.next') - - if [ "$next" != "null" ]; then - if [[ $request_url == *"&until="* ]]; then - # If "until" parameter already exists, replace it - # shellcheck disable=SC2001 - request_url=$(echo "$request_url" | sed "s/until=[0-9]*/until=$next/") - else - # If "until" parameter does not exist, add it - request_url="$request_url&until=$next" + break fi else - break + echo "::debug::No deployment found with SHA: $INPUT_SHA, waiting..." fi + + # If we didn't find the deployment or it's not ready yet, wait before checking again + sleep 5 done if [ "$deployment_ready" = false ]; then