Skip to content

Commit 1837160

Browse files
authored
fix: prevent duplicate runs for CodeRabbit plan trigger (hiero-ledger#1427) (hiero-ledger#1464)
Signed-off-by: cheese-cakee <farzanaman99@gmail.com>
1 parent 83e2442 commit 1837160

File tree

3 files changed

+30
-14
lines changed

3 files changed

+30
-14
lines changed

.github/scripts/coderabbit_plan_trigger.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@
22

33
const CODERABBIT_MARKER = '<!-- CodeRabbit Plan Trigger -->';
44

5-
async function triggerCodeRabbitPlan(github, owner, repo, issue, marker = CODERABBIT_MARKER) {
5+
async function triggerCodeRabbitPlan(github, owner, repo, issue, marker = CODERABBIT_MARKER, isDryRun = false) {
66
const comment = `${marker} @coderabbitai plan`;
77

8+
if (isDryRun) {
9+
console.log(`[DRY RUN] Would trigger CodeRabbit plan for issue #${issue.number}`);
10+
return true;
11+
}
12+
813
try {
914
await github.rest.issues.createComment({
1015
owner,
@@ -100,8 +105,11 @@ async function main({ github, context }) {
100105
return console.log(`CodeRabbit plan already triggered for #${issue.number}`);
101106
}
102107

108+
// Check for dry run (default to true if not specified, for safety)
109+
const isDryRun = (process.env.DRY_RUN || 'true').toLowerCase() === 'true';
110+
103111
// Post CodeRabbit plan trigger
104-
await triggerCodeRabbitPlan(github, owner, repo, issue, CODERABBIT_MARKER);
112+
await triggerCodeRabbitPlan(github, owner, repo, issue, CODERABBIT_MARKER, isDryRun);
105113

106114
logSummary(owner, repo, issue);
107115
} catch (err) {

.github/workflows/bot-coderabbit-plan-trigger.yml

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
# This workflow automatically triggers CodeRabbit's plan feature for intermediate and advanced issues.
2+
# Fix for #1427: Only triggers when a beginner/intermediate/advanced label is specifically added,
3+
# preventing duplicate runs when other labels are added to the same issue.
24
name: CodeRabbit Plan Trigger
35
on:
46
issues:
5-
types: [opened, labeled]
7+
types: [labeled]
8+
workflow_dispatch:
9+
inputs:
10+
dry_run:
11+
description: "Run without posting comments"
12+
required: false
13+
default: "true"
14+
type: choice
15+
options:
16+
- "true"
17+
- "false"
618

719
permissions:
820
issues: write
@@ -14,17 +26,11 @@ jobs:
1426
concurrency:
1527
group: coderabbit-plan-${{ github.event.issue.number }}
1628
cancel-in-progress: false
17-
# Only run for issues labeled with 'beginner', 'intermediate' or 'advanced' (case-insensitive)
29+
# Only run when the newly added label is beginner, intermediate, or advanced (case-insensitive)
1830
if: >
19-
(github.event_name == 'issues' && (
20-
contains(github.event.issue.labels.*.name, 'intermediate') ||
21-
contains(github.event.issue.labels.*.name, 'beginner') ||
22-
contains(github.event.issue.labels.*.name, 'advanced') ||
23-
contains(github.event.issue.labels.*.name, 'Intermediate') ||
24-
contains(github.event.issue.labels.*.name, 'Beginner') ||
25-
contains(github.event.issue.labels.*.name, 'Advanced') ||
26-
(github.event.label && (github.event.label.name == 'intermediate' || github.event.label.name == 'advanced' || github.event.label.name == 'Intermediate' || github.event.label.name == 'Advanced' || github.event.label.name == 'beginner'|| github.event.label.name == 'Beginner'))
27-
))
31+
github.event_name == 'workflow_dispatch' ||
32+
(github.event.action == 'labeled' &&
33+
contains(fromJson('["beginner","intermediate","advanced","Beginner","Intermediate","Advanced"]'), github.event.label.name))
2834
2935
steps:
3036
- name: Harden the runner
@@ -36,8 +42,9 @@ jobs:
3642
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 #v6.0.1
3743

3844
- name: Trigger CodeRabbit Plan
39-
env:
45+
env:
4046
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47+
DRY_RUN: ${{ github.event_name == 'workflow_dispatch' && inputs.dry_run || 'false' }}
4148
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd #v8.0.0
4249
with:
4350
script: |

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ This changelog is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.
179179
- Enhance TopicInfo `__str__` method and tests with additional coverage, and update the format_key function in `key_format.py` to handle objects with a _to_proto method.
180180

181181
### Fixed
182+
- Fixed CodeRabbit plan trigger workflow running multiple times when issues are created with multiple labels by switching to labeled event trigger only. (#1427)
182183
- Prevent LinkBot from posting duplicate “missing linked issue” comments on pull requests. (#1475)
183184
- Refined intermediate assignment guard to validate Beginner issue completion with improved logging and GraphQL-based counting. (#1424)
184185
- Improved filename-related error handling with clearer and more descriptive error messages.(#1413)

0 commit comments

Comments
 (0)