Skip to content
Open
Changes from 1 commit
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
c4089ff
chore: build break test with 31st June
pranav-new-relic Nov 7, 2025
325c207
chore: AI experiment to revamp netlify build comment workflow
pranav-new-relic Nov 7, 2025
bd5807a
chore: try making the workflow more resilient?
pranav-new-relic Nov 7, 2025
7067c95
chore: breaking the infinite loop of build, by splitting build and de…
pranav-new-relic Nov 7, 2025
14f3427
chore: test PR v2, build break test with 31st June: DO NOT MERGE
pranav-new-relic Nov 7, 2025
e8b32c1
chore: optimize workflow?
pranav-new-relic Nov 7, 2025
45f85f9
chore: fix forked member check part of the workflow?
pranav-new-relic Nov 7, 2025
0c499f0
chore: working so good so far, optimize timestamp diff logic
pranav-new-relic Nov 7, 2025
6608308
chore: works as expected, some cosmetic changes
pranav-new-relic Nov 7, 2025
a2f5c11
chore: works as expected, some cosmetic changes, probably final?
pranav-new-relic Nov 7, 2025
e30124a
chore: merge branch 'develop' into np-test-v2
pranav-new-relic Nov 8, 2025
b13e0f1
chore: remove the build failure inducer to test success flow
pranav-new-relic Nov 8, 2025
b804bdf
chore: more cosmetics, timezone changes, informative PR comments
pranav-new-relic Nov 8, 2025
0c3b9ad
chore: tiny fixes
pranav-new-relic Nov 8, 2025
a349995
chore: tiny fixes
pranav-new-relic Nov 8, 2025
178dac1
chore: hopefully cosmetic changes should work now?
pranav-new-relic Nov 8, 2025
48e9c34
chore: hopefully cosmetic changes should work now?
pranav-new-relic Nov 8, 2025
2af0fc9
chore: hopefully cosmetic changes should work now?
pranav-new-relic Nov 8, 2025
c8b24e1
chore: more cosmetic changes
pranav-new-relic Nov 9, 2025
3aa8f44
chore: more cosmetic changes
pranav-new-relic Nov 9, 2025
4e8055f
chore: probably the final set of cosmetic changes to logs
pranav-new-relic Nov 9, 2025
b471f8f
chore: introduce immediate change to test parallel build that will break
pranav-new-relic Nov 9, 2025
00ea5c5
chore: workflow concurrency test 1
pranav-new-relic Nov 9, 2025
a3d6027
chore: workflow concurrency test 1, change to trigger concurrency
pranav-new-relic Nov 9, 2025
21ca8d0
chore: revert concurrency logic, revisit tomorrow
pranav-new-relic Nov 9, 2025
516e1a6
chore: revert concurrency logic, revisit tomorrow
pranav-new-relic Nov 9, 2025
62c2af4
chore: concurrency test v2
pranav-new-relic Nov 9, 2025
4695fab
chore: concurrency test v2, trigger concurrency now
pranav-new-relic Nov 9, 2025
f57bf80
chore: revert concurrency strategy v2
pranav-new-relic Nov 9, 2025
a507627
chore: revert concurrency strategy v2
pranav-new-relic Nov 9, 2025
8eb5dbf
chore: revisit running deploy block mechanism
pranav-new-relic Nov 25, 2025
b96d052
chore: merge branch 'develop' into np-test-v2
pranav-new-relic Nov 25, 2025
924ea45
chore: revert failure case
pranav-new-relic Nov 25, 2025
50fa9d3
chore: small scale cosmetic fixes to dates
pranav-new-relic Nov 25, 2025
e611b72
chore: small scale cosmetic fixes
pranav-new-relic Nov 25, 2025
af94944
chore: empty commit test #1
pranav-new-relic Nov 25, 2025
37e0d09
chore: empty commit test, expect no new deployment
pranav-new-relic Nov 25, 2025
e8fb944
chore: test commit to tigger deployment
pranav-new-relic Nov 25, 2025
50a51e8
chore: empty commit to induce ongoing deploy comment
pranav-new-relic Nov 25, 2025
c901d11
chore: changes to try validating the comment again
pranav-new-relic Nov 25, 2025
e5d6296
chore: commit to trigger deploy
pranav-new-relic Nov 25, 2025
ecac756
chore: empty commit to induce ongoing deploy comment
pranav-new-relic Nov 25, 2025
bffdc3b
chore: empty commit to induce ongoing deploy comment
pranav-new-relic Nov 25, 2025
ec0f92e
chore: final set of changes to validate tokens when they expire
pranav-new-relic Nov 25, 2025
2c8bb45
chore: remove experimental triggers, revert to comment based
pranav-new-relic Nov 26, 2025
c82a8cc
chore: merge branch 'develop' into np-test-v2
pranav-new-relic Nov 26, 2025
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
Prev Previous commit
Next Next commit
chore: more cosmetics, timezone changes, informative PR comments
  • Loading branch information
pranav-new-relic committed Nov 8, 2025
commit b804bdf325984c918e6abd3812410b1243ccaea3
103 changes: 79 additions & 24 deletions .github/workflows/final-manual-deploy-comment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -183,15 +183,18 @@ jobs:
BRANCH_NAME="${{ steps.netlify_build.outputs.branch_name }}"
TRIGGER_TIME="${{ steps.netlify_build.outputs.trigger_time }}"
SHA="${{ steps.netlify_build.outputs.sha }}"
PR_NUMBER="${{ steps.netlify_build.outputs.pr_number }}"
MAX_WAIT_TIME=1800 # 30 minutes
POLL_INTERVAL=90 # 90 seconds for deployment status checks
DEPLOY_ID=""
DEPLOY_FOUND_VIA=""

echo "🔍 Starting deployment tracking..."
echo "📌 Branch: $BRANCH_NAME"
echo "📌 Commit SHA: $SHA"
echo "⏰ Trigger time: $TRIGGER_TIME"

echo "⏰ Trigger time (UTC): $TRIGGER_TIME"
echo "⏰ Trigger time (IST): $(TZ=Asia/Kolkata date -d @$TRIGGER_TIME)"

# Wait 30 seconds for Netlify to create the deployment
echo "⏳ Waiting 30 seconds for Netlify to register the deployment..."
sleep 30
Expand All @@ -200,7 +203,7 @@ jobs:
echo "🔎 Looking for the deployment triggered by this workflow run..."
echo "----------------------------------------"
for i in {1..10}; do
echo "🔄 Attempt $i/10 to find deployment..."
echo "🔄 Attempt $i/10 to find deployment at $(TZ=Asia/Kolkata date)"

DEPLOYS=$(curl -s -H "Authorization: Bearer $NETLIFY_TOKEN" \
"https://api.netlify.com/api/v1/sites/$NETLIFY_SITE_ID/deploys")
Expand All @@ -226,8 +229,10 @@ jobs:
echo "✅ Found target deployment!"
echo "🆔 Deploy ID: $DEPLOY_ID"
echo "🔗 Netlify Build URL: $BUILD_URL"
echo "📅 Created at: $CREATED_AT"
echo "📅 Created at (UTC): $CREATED_AT"
echo "📅 Created at (IST): $(TZ=Asia/Kolkata date -d @$CREATED_TIMESTAMP)"
echo "----------------------------------------"
DEPLOY_FOUND_VIA="commit"
break
else
echo "⚠️ Found deployment but it's too old (created ${TIME_DIFF}s before trigger)"
Expand All @@ -245,22 +250,75 @@ jobs:
echo "❌ Could not find deployment after 10 attempts"
echo "🔄 Falling back to branch-based tracking..."
# Fallback: track by branch name only
USE_FALLBACK=true
else
echo "🎯 Locked onto deployment ID: $DEPLOY_ID"
USE_FALLBACK=false
DEPLOY=$(echo "$DEPLOYS" | jq -r --arg branch "$BRANCH_NAME" \
'[.[] | select(.branch == $branch)] | sort_by(.created_at) | reverse | .[0]')

if [ "$DEPLOY" != "null" ] && [ -n "$DEPLOY" ]; then
DEPLOY_ID=$(echo "$DEPLOY" | jq -r '.id')
CREATED_AT=$(echo "$DEPLOY" | jq -r '.created_at')
CREATED_TIMESTAMP=$(date -d "$CREATED_AT" +%s 2>/dev/null || date -j -f "%Y-%m-%dT%H:%M:%S" "$CREATED_AT" +%s 2>/dev/null || echo "$TRIGGER_TIME")
BUILD_URL="https://app.netlify.com/sites/${{ secrets.NETLIFY_SITE_ID }}/deploys/$DEPLOY_ID"
echo "✅ Found deployment via branch-based validation!"
echo "🆔 Deploy ID: $DEPLOY_ID"
echo "🔗 Netlify Build URL: $BUILD_URL"
echo "📅 Created at (UTC): $CREATED_AT"
echo "📅 Created at (IST): $(TZ=Asia/Kolkata date -d @$CREATED_TIMESTAMP)"
echo "----------------------------------------"
DEPLOY_FOUND_VIA="branch"
else
echo "❌ No deployment found for branch-based validation either."
exit 1
fi
fi

# Now poll the specific deployment until completion
echo ""
echo "📊 Starting status monitoring..."

# Update the PR comment with deployment details
echo "🔄 Updating PR comment with deployment details..."
if [ "$DEPLOY_FOUND_VIA" = "commit" ]; then
COMMENT_MESSAGE="### 🚀 Netlify Deployment In Progress\n\n"
COMMENT_MESSAGE+="The deployment was found via **commit-based validation**.\n\n"
COMMENT_MESSAGE+="- **Commit SHA:** \`$SHA\`\n"
COMMENT_MESSAGE+="- **Netlify Build URL:** [View Deployment]($BUILD_URL)\n"
COMMENT_MESSAGE+="- **Deployment Created At (IST):** $(TZ=Asia/Kolkata date -d @$CREATED_TIMESTAMP)\n"
elif [ "$DEPLOY_FOUND_VIA" = "branch" ]; then
COMMENT_MESSAGE="### 🚀 Netlify Deployment In Progress\n\n"
COMMENT_MESSAGE+="The deployment was found via **branch-based validation**.\n\n"
COMMENT_MESSAGE+="- **Branch Name:** \`$BRANCH_NAME\`\n"
COMMENT_MESSAGE+="- **Netlify Build URL:** [View Deployment]($BUILD_URL)\n"
COMMENT_MESSAGE+="- **Deployment Created At (IST):** $(TZ=Asia/Kolkata date -d @$CREATED_TIMESTAMP)\n"
fi

echo "$COMMENT_MESSAGE" > comment_body.txt

gh pr comment $PR_NUMBER --body-file comment_body.txt

# This step checks the status of the deployment and reports back to the PR
- name: Check deployment status and report
id: check_status
env:
NETLIFY_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
run: |
DEPLOY_ID="${{ steps.poll_netlify.outputs.deploy_id }}"
BRANCH_NAME="${{ steps.netlify_build.outputs.branch_name }}"
SHA="${{ steps.netlify_build.outputs.sha }}"
PR_NUMBER="${{ steps.netlify_build.outputs.pr_number }}"
MAX_WAIT_TIME=1800 # 30 minutes
POLL_INTERVAL=90 # 90 seconds for deployment status checks
ELAPSED_TIME=0
USE_FALLBACK=false

echo "📊 Starting deployment status check..."
echo "🆔 Deploy ID: $DEPLOY_ID"
echo "📌 Branch: $BRANCH_NAME"
echo "📅 Triggered at (IST): $(TZ=Asia/Kolkata date -d @${{ steps.netlify_build.outputs.trigger_time }})"

# If no deploy ID found, fallback to branch name
if [ -z "$DEPLOY_ID" ] || [ "$DEPLOY_ID" = "null" ]; then
echo "⚠️ No Deploy ID found. Falling back to branch-based tracking..."
USE_FALLBACK=true
fi

while [ $ELAPSED_TIME -lt $MAX_WAIT_TIME ]; do
MINUTES_ELAPSED=$(awk "BEGIN {print $ELAPSED_TIME/60}")
echo "🔄 Checking deployment status... (⏱️ elapsed: ${MINUTES_ELAPSED}/30 minutes)"
echo "----------------------------------------"

if [ "$USE_FALLBACK" = "true" ]; then
# Fallback: Get latest deployment for branch
DEPLOYS=$(curl -s -H "Authorization: Bearer $NETLIFY_TOKEN" \
Expand All @@ -280,9 +338,6 @@ jobs:
DEPLOY_URL=$(echo "$DEPLOY" | jq -r '.deploy_ssl_url // .ssl_url // .url')
ERROR_MESSAGE=$(echo "$DEPLOY" | jq -r '.error_message // ""')

# Construct the Netlify Build URL
BUILD_URL="https://app.netlify.com/sites/${{ secrets.NETLIFY_SITE_ID }}/deploys/$DEPLOY_ID"

# Update DEPLOY_ID if we were using fallback
if [ "$USE_FALLBACK" = "true" ] && [ -z "$DEPLOY_ID" ]; then
DEPLOY_ID=$CURRENT_DEPLOY_ID
Expand All @@ -293,22 +348,22 @@ jobs:

if [ "$STATE" = "ready" ]; then
echo "✅ Deployment successful!"
echo "🔗 Netlify Build URL: $BUILD_URL"
echo "🔗 Netlify Build URL: $DEPLOY_URL"
echo "status=success" >> $GITHUB_OUTPUT
echo "deploy_url=$BUILD_URL" >> $GITHUB_OUTPUT
echo "deploy_url=$DEPLOY_URL" >> $GITHUB_OUTPUT
echo "deploy_id=$DEPLOY_ID" >> $GITHUB_OUTPUT
exit 0
elif [ "$STATE" = "error" ]; then
echo "❌ Deployment failed!"
echo "🔗 Netlify Build URL: $BUILD_URL"
echo "🔗 Netlify Build URL: $DEPLOY_URL"
echo "💥 Error: $ERROR_MESSAGE"
echo "status=failure" >> $GITHUB_OUTPUT
echo "error_message=$ERROR_MESSAGE" >> $GITHUB_OUTPUT
echo "deploy_id=$DEPLOY_ID" >> $GITHUB_OUTPUT
exit 0
elif [ "$STATE" = "building" ] || [ "$STATE" = "enqueued" ] || [ "$STATE" = "processing" ]; then
echo "⏳ Deployment in progress (state: $STATE)..."
echo "🔗 Netlify Build URL: $BUILD_URL"
echo "🔗 Netlify Build URL: $DEPLOY_URL"
else
echo "⚠️ Unknown state: $STATE"
fi
Expand All @@ -322,7 +377,7 @@ jobs:

echo "⏱️ Timeout reached after ${MAX_WAIT_TIME}s"
echo "⚠️ Build is still running or Netlify is experiencing delays"
echo "🔗 Netlify Build URL: $BUILD_URL"
echo "🔗 Netlify Build URL: $DEPLOY_URL"
echo "status=timeout" >> $GITHUB_OUTPUT

# Post success comment
Expand Down
Loading