Check Positive Reaction on PR Approval #2
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: Check Positive Reaction on PR Approval | |
on: | |
pull_request_review: | |
types: [submitted] | |
jobs: | |
check-reaction: | |
name: Check for positive reaction on bot's latest validation comment | |
if: startsWith(github.event.pull_request.base.ref, 'dev-v') || startsWith(github.event.pull_request.base.ref, 'release-v') | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check for positive reaction on bot's latest validation comment | |
uses: actions/github-script@v4 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
// Get comments on the PR | |
const comments = await github.issues.listComments({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo | |
}); | |
// Sort comments based on their creation datetime in descending order | |
const sortedComments = comments.data.sort((a, b) => new Date(b.created_at) - new Date(a.created_at)); | |
// Find the latest validation comment by github-actions[bot] | |
const latestValidationComment = sortedComments.find(comment => comment.user.login === 'github-actions[bot]' && comment.body.startsWith("## Validation steps")); | |
if (latestValidationComment) { | |
const reactions = await github.reactions.listForIssueComment({ | |
comment_id: latestValidationComment.id, | |
owner: context.repo.owner, | |
repo: context.repo.repo | |
}); | |
// If the latest bot's validation comment doesn't have a thumbs-up reaction, log its creation datetime and fail the check | |
if (!reactions.data.some(reaction => reaction.content === '+1')) { | |
console.error("Failed Check - Comment Created At:", latestValidationComment.created_at); | |
core.setFailed("The latest validation comment by github-actions[bot] does not have the required thumbs-up reaction!"); | |
} else { | |
console.log("The latest validation comment by github-actions[bot] has the required thumbs-up reaction."); | |
} | |
} else { | |
console.warn("No validation comments by github-actions[bot] found."); | |
} |