3636 use_oauth : true
3737 claude_access_token : ${{ secrets.CLAUDE_ACCESS_TOKEN }}
3838 claude_refresh_token : ${{ secrets.CLAUDE_REFRESH_TOKEN }}
39- claude_expires_at : ${{ secrets.CLAUDE_EXPIRES_AT }}
39+ claude_expires_at : ${{ secrets.CLAUDE_EXPIRES_AT }}
40+
41+ post-review-comment :
42+ needs : claude
43+ if : success() && needs.claude.result == 'success'
44+ runs-on : ubuntu-latest
45+ permissions :
46+ contents : read
47+ pull-requests : write
48+ issues : write
49+ steps :
50+ - name : Check for existing review comment
51+ id : check-comment
52+ uses : actions/github-script@v7
53+ with :
54+ github-token : ${{ secrets.GH_TOKEN }}
55+ script : |
56+ const reviewText = '@claude review if the changes made are as per the requirements';
57+ let comments = [];
58+ let issueNumber;
59+
60+ try {
61+ // Determine issue/PR number based on event type
62+ if (context.eventName === 'pull_request_review_comment' || context.eventName === 'pull_request_review') {
63+ issueNumber = context.payload.pull_request?.number || context.issue.number;
64+ } else if (context.eventName === 'issue_comment' && context.payload.issue.pull_request) {
65+ // This is a comment on a PR (not an issue)
66+ issueNumber = context.payload.issue.number;
67+ } else {
68+ // This is a regular issue
69+ issueNumber = context.issue.number;
70+ }
71+
72+ comments = await github.rest.issues.listComments({
73+ owner: context.repo.owner,
74+ repo: context.repo.repo,
75+ issue_number: issueNumber
76+ });
77+
78+ const existingComment = comments.data.find(comment =>
79+ comment.body.includes(reviewText)
80+ );
81+
82+ const shouldPost = !existingComment;
83+ core.setOutput('should-post', shouldPost);
84+ console.log(`Should post comment: ${shouldPost}`);
85+
86+ } catch (error) {
87+ console.log('Error checking comments:', error);
88+ core.setOutput('should-post', true); // If we can't check, proceed with posting
89+ }
90+
91+ - name : Post review comment
92+ if : steps.check-comment.outputs.should-post == 'true'
93+ uses : actions/github-script@v7
94+ with :
95+ github-token : ${{ secrets.GH_TOKEN }}
96+ script : |
97+ let issueNumber;
98+
99+ // Determine issue/PR number based on event type
100+ if (context.eventName === 'pull_request_review_comment' || context.eventName === 'pull_request_review') {
101+ issueNumber = context.payload.pull_request?.number || context.issue.number;
102+ } else if (context.eventName === 'issue_comment' && context.payload.issue.pull_request) {
103+ // This is a comment on a PR (not an issue)
104+ issueNumber = context.payload.issue.number;
105+ } else {
106+ // This is a regular issue
107+ issueNumber = context.issue.number;
108+ }
109+
110+ console.log(`Posting review comment on issue/PR #${issueNumber}`);
111+
112+ await github.rest.issues.createComment({
113+ issue_number: issueNumber,
114+ owner: context.repo.owner,
115+ repo: context.repo.repo,
116+ body: '@claude review if the changes made are as per the requirements'
117+ });
0 commit comments