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