From c3bcc3749eb0ae426e3ce57bf8c0cbe08976d8eb Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:03:24 +0900 Subject: [PATCH 1/3] test: trigger weekly summary workflow --- test-weekly-trigger.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 test-weekly-trigger.md diff --git a/test-weekly-trigger.md b/test-weekly-trigger.md new file mode 100644 index 00000000..c50fd849 --- /dev/null +++ b/test-weekly-trigger.md @@ -0,0 +1 @@ +# Weekly summary workflow test From f03511f0175684d3bfd6b007479b37f9304e94b1 Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:07:27 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=94=A7=20=EC=A3=BC=EA=B0=84=20PR=20?= =?UTF-8?q?=EC=9A=94=EC=95=BD=20=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C?= =?UTF-8?q?=EC=9A=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pull_request_target 트리거 제거 (권한 문제) - schedule(금요일 22시 KST)과 workflow_dispatch만 사용 - heredoc 문제 해결 (GITHUB_ENV 사용) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .github/workflows/weekly-pr-summary.yml | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/.github/workflows/weekly-pr-summary.yml b/.github/workflows/weekly-pr-summary.yml index 45fd5985..34b441f6 100644 --- a/.github/workflows/weekly-pr-summary.yml +++ b/.github/workflows/weekly-pr-summary.yml @@ -1,8 +1,6 @@ name: Weekly PR Summary on: - pull_request_target: - types: [opened] schedule: # 매주 금요일 13:00 UTC (22:00 KST) - cron: '0 13 * * 5' @@ -71,15 +69,15 @@ jobs: PR_LIST="이번 주에 머지된 PR이 없습니다." fi - # 메시지 생성 - cat > message.txt <> $GITHUB_ENV + echo "**📊 이번 주 작업 요약**" >> $GITHUB_ENV + echo "" >> $GITHUB_ENV + echo "**기간:** $START_DATE ~ $END_DATE" >> $GITHUB_ENV + echo "**총 머지된 PR:** $PR_COUNT개" >> $GITHUB_ENV + echo "" >> $GITHUB_ENV + echo "$PR_LIST" >> $GITHUB_ENV + echo "EOFMSG" >> $GITHUB_ENV echo "Generated summary message" @@ -87,9 +85,6 @@ EOF env: DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} run: | - # 메시지 읽기 - MESSAGE=$(cat message.txt) - # Discord로 전송 jq -n \ --arg username "주간 PR 요약봇" \ From 74c12e64a0cd6e190a88915a96468f86ff383f93 Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:08:37 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E2=9C=A8=20PR=20=EC=83=9D=EC=84=B1=20?= =?UTF-8?q?=EC=8B=9C=20=ED=8A=B8=EB=A6=AC=EA=B1=B0=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EC=A3=BC=EA=B0=84=20=EC=9A=94=EC=95=BD=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/weekly-pr-test.yml | 100 +++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 .github/workflows/weekly-pr-test.yml diff --git a/.github/workflows/weekly-pr-test.yml b/.github/workflows/weekly-pr-test.yml new file mode 100644 index 00000000..f2bb69a2 --- /dev/null +++ b/.github/workflows/weekly-pr-test.yml @@ -0,0 +1,100 @@ +name: Weekly PR Test + +on: + pull_request: + types: [opened] + workflow_dispatch: + +jobs: + summary: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Collect merged PRs from last 7 days + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + run: | + # 7일 전 날짜 계산 + SINCE_DATE=$(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ) + + echo "Fetching PRs merged since: $SINCE_DATE" + + # 최근 7일간 머지된 PR 목록 가져오기 + gh pr list \ + --repo "$REPO" \ + --state merged \ + --limit 100 \ + --json number,title,author,labels,mergedAt,url \ + --jq --arg since "$SINCE_DATE" ' + map(select(.mergedAt >= $since)) | + sort_by(.mergedAt) | + reverse + ' > prs.json + + # PR 개수 확인 + PR_COUNT=$(jq 'length' prs.json) + echo "Found $PR_COUNT merged PRs" + + # 결과 저장 + echo "PR_COUNT=$PR_COUNT" >> $GITHUB_ENV + + - name: Generate summary message + run: | + # 날짜 계산 + END_DATE=$(date -u +%Y-%m-%d) + START_DATE=$(date -u -d '7 days ago' +%Y-%m-%d) + + # PR 목록 생성 + PR_LIST=$(jq -r ' + map( + "- " + .title + + " (#" + (.number | tostring) + ") — " + .author.login + + ( + if (.labels | length) > 0 then + "\n 🏷 " + ([.labels[].name] | join(", ")) + else + "" + end + ) + + "\n 🔗 " + .url + ) | join("\n\n") + ' prs.json) + + # 메시지가 비어있을 경우 처리 + if [ "$PR_COUNT" -eq 0 ]; then + PR_LIST="이번 주에 머지된 PR이 없습니다." + fi + + # 메시지 생성 (환경 변수로 저장) + echo "MESSAGE<> $GITHUB_ENV + echo "**📊 [테스트] 이번 주 작업 요약**" >> $GITHUB_ENV + echo "" >> $GITHUB_ENV + echo "**기간:** $START_DATE ~ $END_DATE" >> $GITHUB_ENV + echo "**총 머지된 PR:** $PR_COUNT개" >> $GITHUB_ENV + echo "" >> $GITHUB_ENV + echo "$PR_LIST" >> $GITHUB_ENV + echo "EOFMSG" >> $GITHUB_ENV + + echo "Generated summary message" + + - name: Send to Discord + env: + DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} + run: | + # Discord로 전송 + jq -n \ + --arg username "주간 PR 요약봇 (테스트)" \ + --arg avatar_url "https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" \ + --arg content "$MESSAGE" \ + '{ + username: $username, + avatar_url: $avatar_url, + content: $content + }' | curl -X POST "$DISCORD_WEBHOOK_URL" \ + -H "Content-Type: application/json" \ + -d @- + + echo "✅ Weekly summary sent to Discord"