Bump pydantic from 1.9.0 to 1.10.13 in /build/win #44
Workflow file for this run
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: Second Reviewer Assignment | |
on: | |
pull_request_target: | |
types: [ labeled ] | |
permissions: | |
pull-requests: write | |
jobs: | |
assign-reviewer: | |
if: ${{ contains(github.event.pull_request.labels.*.name, format('PR{0} second reviewer', ':')) }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Get team members | |
id: get-team-members | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{secrets.PAT_TOKEN_FOR_SECOND_REVIEWER_UNTIL_JAN_2025}} | |
script: | | |
/* | |
* Using PAT_TOKEN_FOR_SECOND_REVIEWER_UNTIL_JAN_2025 because the current workflow | |
* lacks sufficient permissions to view members of the Tribler organization. | |
* This token is valid until January 2025. It's issued for a maximum of one year, | |
* so in January 2025, it will expire and need to be replaced with a new token. | |
*/ | |
const teamResponse = await github.rest.teams.listMembersInOrg({ | |
org: 'Tribler', | |
team_slug: 'reviewers' | |
}); | |
const allReviewers = teamResponse.data.map(member => member.login); | |
return allReviewers; | |
- name: Add second reviewer | |
uses: actions/github-script@v7 | |
env: | |
ALL_REVIEWERS: ${{ steps.get-team-members.outputs.result }} | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const pullRequest = context.payload.pull_request; | |
const author = pullRequest.user.login; | |
console.log("Author:", author); | |
const currentReviewers = pullRequest.requested_reviewers.map(reviewer => reviewer.login); | |
console.log("Current Reviewers:", currentReviewers); | |
// Get the list of potential reviewers from the previous step | |
const allReviewers = JSON.parse(process.env.ALL_REVIEWERS) | |
console.log("Potential Reviewers:", allReviewers); | |
// Filter out the PR author and current reviewers | |
const eligibleReviewers = allReviewers.filter(reviewer => reviewer !== author && !currentReviewers.includes(reviewer)); | |
console.log("Eligible Reviewers:", eligibleReviewers); | |
// Randomly select a reviewer | |
if (eligibleReviewers.length > 0) { | |
const randomReviewer = eligibleReviewers[Math.floor(Math.random() * eligibleReviewers.length)]; | |
console.log("Selected Reviewer:", randomReviewer); | |
// Assign the selected reviewer | |
await github.rest.pulls.requestReviewers({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
pull_number: pullRequest.number, | |
reviewers: [randomReviewer] | |
}); | |
// Add a comment explaining the selection | |
const comment = `A 'second reviewer' has been requested for this pull request. @${randomReviewer} has been randomly selected as the second opinion reviewer. This action is part of the Tie Breaker mechanism designed to resolve conflicts. The decision of the 'second reviewer' is considered final in the dispute.`; | |
await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: pullRequest.number, | |
body: comment | |
}); | |
} else { | |
// Add a comment indicating no eligible reviewers are left | |
const noReviewerComment = `All eligible reviewers have already been added to this pull request.`; | |
await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: pullRequest.number, | |
body: noReviewerComment | |
}); | |
console.log("No eligible reviewers left to add."); | |
} | |
// Remove the 'PR: second reviewer' label | |
await github.rest.issues.removeLabel({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: pullRequest.number, | |
name: 'PR: second reviewer' | |
}); | |
console.log("Label 'PR: second reviewer' removed successfully."); |