Skip to content

[DO NOT MERGE][Internal testing] - Test 9/28/2023 / 4 #328

[DO NOT MERGE][Internal testing] - Test 9/28/2023 / 4

[DO NOT MERGE][Internal testing] - Test 9/28/2023 / 4 #328

Workflow file for this run

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 }}