[DO NOT MERGE][Internal testing] - Test 9/28/2023 / 2 #320
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Comment Processor | |
on: | |
issue_comment: | |
types: [created] | |
permissions: {} | |
jobs: | |
comment-handler: | |
permissions: | |
pull-requests: write # to read pull requests and write comments | |
name: Handle ${{ github.event_name }} ${{ github.event.action }} event | |
runs-on: ubuntu-latest | |
steps: | |
- name: Process comment | |
shell: pwsh | |
run: | | |
$payload = Write-Output $env:PAYLOAD | ConvertFrom-Json -AsHashtable | |
if (!$payload.comment -or !$payload.comment.body) { | |
Write-Host "Skipping: empty comment." | |
return | |
} | |
$body = $payload.comment.body.Trim().ToLowerInvariant() | |
$expected = '/pr requestmerge' | |
if ($body -ne $expected) { | |
Write-Host "Skipping: comment did not equal '$expected'." | |
return | |
} | |
$label = 'MergeRequested' | |
$retryCount = 0 | |
$maxRetries = 5 | |
$retryDelay = 5 # Initial retry delay in seconds | |
while ($retryCount -lt $maxRetries) { | |
Write-Host "Attempt $($retryCount+1) out of $($maxRetries): gh pr edit $($payload.issue.number) --add-label `"$label`"" | |
gh pr edit $payload.issue.html_url --add-label "$label" | |
if ($LASTEXITCODE -eq 0) { | |
Write-Host "Label added successfully on attempt $($retryCount+1) out of $($maxRetries)." | |
break | |
} else { | |
Write-Warning "Failed to add label on attempt $($retryCount+1) out of $($maxRetries)." | |
$retryCount++ | |
if ($retryCount -lt $maxRetries) { | |
# $retryDelay = 5 exponential backoff in seconds: | |
# attempt 2: 5 = 1*5 | |
# attempt 3: 10 = 2*5 | |
# attempt 4: 20 = 4*5 | |
# attempt 5: 40 = 8*5 | |
Write-Host "Sleeping for $retryDelay seconds..." | |
Start-Sleep -Seconds $retryDelay | |
$retryDelay = $retryDelay * 2 | |
} | |
} | |
} | |
if ($retryCount -ge $maxRetries) { | |
Write-Error "Max retry attempts of $maxRetries exhausted. Exiting with error ('exit 1')." | |
exit 1 | |
} | |
env: | |
PAYLOAD: ${{ toJson(github.event) }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |