feat: add core feature alert #7
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: Core Feature Alert | ||
on: | ||
pull_request: | ||
types: | ||
- opened | ||
- synchronize | ||
paths: | ||
- src/lib/features/client-feature-toggles/* | ||
- src/lib/features/frontend-api/* | ||
jobs: | ||
check-core-feature: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout the repository | ||
uses: actions/checkout@v3 | ||
- name: Fetch PR details | ||
id: pr-details | ||
run: | | ||
echo "PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV | ||
echo "PR_CREATOR=${{ github.event.pull_request.user.login }}" >> $GITHUB_ENV | ||
- name: Check if reviewers or comment already exist | ||
id: check-comment | ||
uses: actions/github-script@v6 | ||
with: | ||
script: | | ||
const prNumber = context.payload.pull_request.number; | ||
// Check if a comment already exists | ||
const comments = await github.rest.issues.listComments({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
issue_number: prNumber, | ||
}); | ||
const hasComment = comments.data.some(comment => | ||
comment.body.includes("Core features have been modified") | ||
); | ||
// Check if reviewers are already assigned | ||
const reviewers = await github.rest.pulls.listRequestedReviewers({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
pull_number: prNumber, | ||
}); | ||
const hasReviewers = reviewers.data.users.length > 0; | ||
core.setOutput('hasComment', hasComment); | ||
core.setOutput('hasReviewers', hasReviewers); | ||
outputs: | ||
hasComment: ${{ steps.check-comment.outputs.hasComment }} | ||
hasReviewers: ${{ steps.check-comment.outputs.hasReviewers }} | ||
- name: Add reviewers and comment if necessary | ||
if: steps.check-comment.outputs.hasComment == 'false' || steps.check-comment.outputs.hasReviewers == 'false' | ||
uses: actions/github-script@v6 | ||
with: | ||
script: | | ||
const prNumber = context.payload.pull_request.number; | ||
const prCreator = context.payload.pull_request.user.login; | ||
if (!${{ steps.check-comment.outputs.hasComment }}) { | ||
await github.rest.issues.createComment({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
issue_number: prNumber, | ||
body: `@${prCreator}, core features have been modified in this pull request. Reviewers have been added.`, | ||
}); | ||
} | ||
if (!${{ steps.check-comment.outputs.hasReviewers }}) { | ||
await github.rest.pulls.requestReviewers({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
pull_number: prNumber, | ||
reviewers: ['FredrikOseberg'], // Do not include @ in reviewer names | ||
}); | ||
} |