From c3bcc3749eb0ae426e3ce57bf8c0cbe08976d8eb Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:03:24 +0900 Subject: [PATCH 1/9] 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/9] =?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/9] =?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" From 7a9fa7e25fd524982d04533a2e3af6db8dbbc30f Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:12:26 +0900 Subject: [PATCH 4/9] =?UTF-8?q?=F0=9F=90=9B=20gh=20pr=20list=20jq=20?= =?UTF-8?q?=EC=98=B5=EC=85=98=20=EC=82=AC=EC=9A=A9=EB=B2=95=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/weekly-pr-summary.yml | 14 ++++++++------ .github/workflows/weekly-pr-test.yml | 14 ++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/workflows/weekly-pr-summary.yml b/.github/workflows/weekly-pr-summary.yml index 34b441f6..e29e14b3 100644 --- a/.github/workflows/weekly-pr-summary.yml +++ b/.github/workflows/weekly-pr-summary.yml @@ -28,12 +28,14 @@ jobs: --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 + --json number,title,author,labels,mergedAt,url > all_prs.json + + # 날짜 필터링 + jq --arg since "$SINCE_DATE" ' + map(select(.mergedAt >= $since)) | + sort_by(.mergedAt) | + reverse + ' all_prs.json > prs.json # PR 개수 확인 PR_COUNT=$(jq 'length' prs.json) diff --git a/.github/workflows/weekly-pr-test.yml b/.github/workflows/weekly-pr-test.yml index f2bb69a2..f1c6a7cc 100644 --- a/.github/workflows/weekly-pr-test.yml +++ b/.github/workflows/weekly-pr-test.yml @@ -27,12 +27,14 @@ jobs: --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 + --json number,title,author,labels,mergedAt,url > all_prs.json + + # 날짜 필터링 + jq --arg since "$SINCE_DATE" ' + map(select(.mergedAt >= $since)) | + sort_by(.mergedAt) | + reverse + ' all_prs.json > prs.json # PR 개수 확인 PR_COUNT=$(jq 'length' prs.json) From fd38792706c940c212b74a9e0fbcf69d50c2e14a Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:16:22 +0900 Subject: [PATCH 5/9] test: trigger workflow --- test-trigger.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test-trigger.txt diff --git a/test-trigger.txt b/test-trigger.txt new file mode 100644 index 00000000..5c33b151 --- /dev/null +++ b/test-trigger.txt @@ -0,0 +1 @@ +trigger From ad29158d4656e66fb0563c81530d789b60562e13 Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:17:17 +0900 Subject: [PATCH 6/9] =?UTF-8?q?=E2=9C=A8=20synchronize=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80=20(PR=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EC=8B=9C=EC=97=90=EB=8F=84=20?= =?UTF-8?q?=ED=8A=B8=EB=A6=AC=EA=B1=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/weekly-pr-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/weekly-pr-test.yml b/.github/workflows/weekly-pr-test.yml index f1c6a7cc..dd76d5c5 100644 --- a/.github/workflows/weekly-pr-test.yml +++ b/.github/workflows/weekly-pr-test.yml @@ -2,7 +2,7 @@ name: Weekly PR Test on: pull_request: - types: [opened] + types: [opened, synchronize] workflow_dispatch: jobs: From 5ac72fdcfe145846af5e37c748cf72a1eecd4221 Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:19:22 +0900 Subject: [PATCH 7/9] =?UTF-8?q?=F0=9F=97=91=EF=B8=8F=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=A0=9C=EA=B1=B0=20-=20=EC=A0=95=EC=8B=9D=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=EB=A7=8C=20=EC=9C=A0=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/weekly-pr-test.yml | 102 --------------------------- 1 file changed, 102 deletions(-) delete mode 100644 .github/workflows/weekly-pr-test.yml diff --git a/.github/workflows/weekly-pr-test.yml b/.github/workflows/weekly-pr-test.yml deleted file mode 100644 index dd76d5c5..00000000 --- a/.github/workflows/weekly-pr-test.yml +++ /dev/null @@ -1,102 +0,0 @@ -name: Weekly PR Test - -on: - pull_request: - types: [opened, synchronize] - 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 > all_prs.json - - # 날짜 필터링 - jq --arg since "$SINCE_DATE" ' - map(select(.mergedAt >= $since)) | - sort_by(.mergedAt) | - reverse - ' all_prs.json > 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" From 18695db03d8a3ed997e99408800bb2d4729cd527 Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:20:09 +0900 Subject: [PATCH 8/9] =?UTF-8?q?=F0=9F=8E=A8=20cron=20=ED=91=9C=ED=98=84?= =?UTF-8?q?=EC=8B=9D=20=ED=8F=AC=EB=A7=B7=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/weekly-pr-summary.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/weekly-pr-summary.yml b/.github/workflows/weekly-pr-summary.yml index e29e14b3..fd80fa32 100644 --- a/.github/workflows/weekly-pr-summary.yml +++ b/.github/workflows/weekly-pr-summary.yml @@ -3,7 +3,7 @@ name: Weekly PR Summary on: schedule: # 매주 금요일 13:00 UTC (22:00 KST) - - cron: '0 13 * * 5' + - cron: "0 13 * * 5" workflow_dispatch: jobs: From bc09df7a8f925e971ede69828a3096a030567a54 Mon Sep 17 00:00:00 2001 From: manNomi Date: Tue, 6 Jan 2026 02:22:14 +0900 Subject: [PATCH 9/9] =?UTF-8?q?=F0=9F=94=A7=20PR=20URL=EC=9D=84=20<>=20?= =?UTF-8?q?=EB=A1=9C=20=EA=B0=90=EC=8B=B8=EC=84=9C=20Discord=20embed=20?= =?UTF-8?q?=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/weekly-pr-summary.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/weekly-pr-summary.yml b/.github/workflows/weekly-pr-summary.yml index fd80fa32..cb42033d 100644 --- a/.github/workflows/weekly-pr-summary.yml +++ b/.github/workflows/weekly-pr-summary.yml @@ -62,7 +62,7 @@ jobs: "" end ) + - "\n 🔗 " + .url + "\n 🔗 <" + .url + ">" ) | join("\n\n") ' prs.json)