diff --git a/.github/workflows/core-feature-alert.yml b/.github/workflows/core-feature-alert.yml index fbc27ab1f8..c89c7c3272 100644 --- a/.github/workflows/core-feature-alert.yml +++ b/.github/workflows/core-feature-alert.yml @@ -2,38 +2,80 @@ name: Core Feature Alert on: pull_request: + types: + - opened + - synchronize paths: - src/lib/features/client-feature-toggles/* - src/lib/features/frontend-api/* jobs: - notify-core-changes: + check-core-feature: runs-on: ubuntu-latest steps: - - name: Fetch PR Creator's Username - id: pr-creator - run: echo "PR_CREATOR=${{ github.event.pull_request.user.login }}" >> $GITHUB_ENV + - name: Checkout the repository + uses: actions/checkout@v3 - - name: Post a notification about core feature changes + - 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 prCreator = process.env.PR_CREATOR; - github.rest.issues.createComment({ + 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: context.payload.pull_request.number, - body: `@${prCreator}, core features have been modified in this pull request. Please review!` - }) - - name: Add reviewers to the PR + 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; + + return { hasComment, 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 reviewers = ['FredrikOseberg']; - github.rest.pulls.requestReviewers({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.payload.pull_request.number, - reviewers: reviewers, - }); \ No newline at end of file + const prNumber = context.payload.pull_request.number; + const prCreator = context.payload.pull_request.user.login; + + // Add a comment if not already present + if (!inputs.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.`, + }); + } + + // Add reviewers if not already present + if (!inputs.hasReviewers) { + await github.rest.pulls.requestReviewers({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: prNumber, + reviewers: ['FredrikOseberg'], // Add your reviewers here + }); + } \ No newline at end of file