Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 41 additions & 39 deletions entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 <<EOF >>"$GITHUB_OUTPUT"
if [ "$state" = "READY" ]; then
deployment_ready=true
cat <<EOF >>"$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
Expand Down
Loading