Skip to content

PR 봇 find_meta 가 리뷰 코멘트를 metadata 로 오인하던 버그 수정 - #674

Merged
sevineleven merged 1 commit into
devfrom
fix/discord-pr-bot-find-meta-marker
Jul 5, 2026
Merged

PR 봇 find_meta 가 리뷰 코멘트를 metadata 로 오인하던 버그 수정#674
sevineleven merged 1 commit into
devfrom
fix/discord-pr-bot-find-meta-marker

Conversation

@sevineleven

@sevineleven sevineleven commented Jul 5, 2026

Copy link
Copy Markdown
Collaborator

Situation

Task

  • 왜 봇이 metadata 를 못 읽었는지 원인을 찾고, 재발 없이 고친다.

Action

원인

find_meta 는 PR 코멘트에서 숨겨진 metadata 주석(<!-- discord-pr-bot: {...} -->)을 찾아 message_id·thread_id 를 읽는다. 그 select 조건이 느슨했다.

코멘트 작성자 contains("discord-pr-bot") JSON 있음
metadata 주석 github-actions[bot] 잡힘 있음
리뷰 코멘트 (discord-pr-bot.yml 파일명 언급) 리뷰 봇 잡힘 없음
  • 리뷰 코멘트가 metadata 주석보다 나중에 달렸고, tail -n 1 이 그 리뷰 코멘트를 집었다.
  • 그 코멘트엔 JSON 이 없어 message_id 가 빈값이 됐고, 이후 모든 스텝의 if: message_id != '' 가 거짓이 돼 skip 됐다.
  • 하필 discord-pr-bot.yml 파일 자체를 수정하는 PR(PR 봇 Discord 편의 기능 (리액션·스레드 정리·고정) + 헬퍼 공유화 #673)이라, 리뷰가 그 파일명을 언급하며 이번에 처음 드러난 잠복 버그다. 이 파일을 건드리는 PR마다, 또는 누구든 코멘트에 그 문자열을 쓰면 재발한다.

수정

  • select 를 contains("discord-pr-bot") 에서 test("discord-pr-bot:\s*\{") 로 좁혔다. JSON 시작 마커(discord-pr-bot: {)가 있는 metadata 주석만 매칭하고, 파일명만 언급한 리뷰 코멘트(discord-pr-bot.yml)는 제외된다.

Result


연관 이슈

Summary by CodeRabbit

  • Bug Fixes
    • PR 댓글에서 Discord 메타데이터를 찾는 기준을 더 엄격하게 개선해, 잘못된 댓글 본문이 선택될 가능성을 줄였습니다.
    • 메타데이터를 찾는 안내 문구를 실제 동작에 맞게 정리했습니다.

느슨한 contains("discord-pr-bot") 는 discord-pr-bot.yml 파일명을 언급한
리뷰 코멘트까지 잡았다. tail -n 1 이 나중에 달린 리뷰 코멘트를 집으면
JSON 이 없어 message_id 를 못 읽고, 리액션·스레드 정리·고정 스텝이 전부
skip 됐다 (#673 머지 시 머지완료 리액션 누락으로 발견).

select 를 test("discord-pr-bot:\\s*\\{") 로 좁혀 JSON 시작 마커가 있는
metadata 코멘트만 매칭한다. #673 코멘트로 실측: OLD 2건 매칭 → NEW 1건.
@sevineleven sevineleven added the infra 운영 환경 (IaC·클라우드 리소스·secret·배포 workflow) label Jul 5, 2026
@sevineleven sevineleven self-assigned this Jul 5, 2026
@github-actions

github-actions Bot commented Jul 5, 2026

Copy link
Copy Markdown

Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다.

@coderabbitai

coderabbitai Bot commented Jul 5, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: 2392fc38-81a1-49b0-95e1-a3010ebd4fb1

📥 Commits

Reviewing files that changed from the base of the PR and between 24380f7 and 9215681.

📒 Files selected for processing (1)
  • .github/workflows/discord-pr-bot.yml

Walkthrough

GitHub Actions 워크플로우 파일에서 Discord PR 봇의 메타데이터 댓글 탐지 방식이 변경되었습니다. 기존 문자열 포함(contains) 검사 대신 discord-pr-bot: { 형태의 정규식 매칭을 사용하도록 jq 필터가 수정되었고, 관련 안내 주석 문구도 이에 맞춰 업데이트되었습니다.

Changes

Discord PR 봇 메타 주석 매칭

Layer / File(s) Summary
메타데이터 마커 매칭 방식 변경
.github/workflows/discord-pr-bot.yml
find_meta 단계의 jq 필터가 discord-pr-bot 문자열 포함 검사에서 discord-pr-bot:\s*\{ 정규식 매칭으로 바뀌었고, 관련 설명 주석 두 곳도 이 동작 변경을 반영하도록 문구가 정리됨.

Estimated code review effort: 1 (Trivial) | ~3 minutes


한 줄 리뷰: contains로 뭉뚱그려 잡던 걸 discord-pr-bot:\s*\{ 정규식으로 콕 집어 찾게 바꾼 센스, 좋습니다 👍 다만 정규식 특수문자({)가 jq의 test() 안에서 이스케이프 없이도 의도대로 동작하는지 한 번만 로컬에서 실제 댓글 샘플로 테스트해보시길 추천드려요. jq 정규식 관련 문서는 https://jqlang.github.io/jq/manual/#test-testval-testflags 참고하시면 좋아요. 워크플로우 파일 특성상 CI에서 실패하면 디버깅 사이클이 길어지니, 가능하면 act 같은 로컬 GitHub Actions 실행기로 미리 검증해보는 것도 좋은 습관입니다.

🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/discord-pr-bot-find-meta-marker

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sevineleven
sevineleven merged commit f66f7d2 into dev Jul 5, 2026
9 checks passed
@sevineleven
sevineleven deleted the fix/discord-pr-bot-find-meta-marker branch July 5, 2026 15:07
sevineleven added a commit that referenced this pull request Jul 5, 2026
Manage status reaction 은 매 이벤트에 이전 상태 3개 DELETE + 현재 1개 PUT 을
연속 호출하는데, Discord reaction API 는 rate limit 이 빡빡해 마지막 PUT 이
429 로 튕겨 리액션이 안 달렸다 (로그: "리액션 실패 HTTP 429").

reaction_api 가 429 를 받으면 응답 body 의 retry_after(초)만큼 쉬고 재시도한다
(최대 5회). 정상 코드는 즉시 반환. #674(find_meta skip) 를 고치니 그 다음
관문인 rate limit 이 드러났다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infra 운영 환경 (IaC·클라우드 리소스·secret·배포 workflow)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant