From 2b2d99a6348264ed4a0ef7f08adc4090f353da41 Mon Sep 17 00:00:00 2001 From: aken-you Date: Wed, 9 Jul 2025 08:58:11 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20Slack=20=EB=A9=94=EC=8B=9C=EC=A7=80?= =?UTF-8?q?=20=EC=A0=84=EC=86=A1=20=EC=8B=9C=20JSON=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=ED=8F=AC=EB=A7=B7=ED=8C=85=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/notify-pr-author-on-review.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/notify-pr-author-on-review.yml b/.github/workflows/notify-pr-author-on-review.yml index d0efcbfb..0f389cec 100644 --- a/.github/workflows/notify-pr-author-on-review.yml +++ b/.github/workflows/notify-pr-author-on-review.yml @@ -54,17 +54,23 @@ jobs: AUTHOR_SLACK_ID: ${{ steps.extract_info.outputs.author_slack_id }} TEXT: ${{ steps.extract_info.outputs.text }} run: | + JSON_DATA=$(jq -n \ + --arg channel "$AUTHOR_SLACK_ID" \ + --arg text "$TEXT" \ + '{ + "channel": $channel, + "text": $text + }') + RESPONSE=$(curl -s -X POST https://slack.com/api/chat.postMessage \ -H "Authorization: Bearer $SLACK_BOT_TOKEN" \ -H "Content-Type: application/json" \ - -d '{ - "channel": "'"$AUTHOR_SLACK_ID"'", - "text": "'"$TEXT"'" - }') + -d "$JSON_DATA") echo "Slack DM 전송 응답: $RESPONSE" if ! echo "$RESPONSE" | jq -e '.ok' | grep -q true; then echo "❌ Slack 메시지 전송 실패" + echo "에러 상세: $(echo "$RESPONSE" | jq -r '.error // "unknown error"')" exit 1 fi From 2802f438fb64e9e924ae8cdae2f021828159ac48 Mon Sep 17 00:00:00 2001 From: aken-you Date: Sat, 12 Jul 2025 00:37:47 +0900 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20im=20=EC=B1=84=EB=84=90=20id=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=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 - slack bot이 사용자에게 DM을 보내기 전에, 사용자와의 DM 채널 id가 필요하여 조회 --- .github/workflows/notify-pr-author-on-review.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/notify-pr-author-on-review.yml b/.github/workflows/notify-pr-author-on-review.yml index 0f389cec..9a0aae16 100644 --- a/.github/workflows/notify-pr-author-on-review.yml +++ b/.github/workflows/notify-pr-author-on-review.yml @@ -54,8 +54,16 @@ jobs: AUTHOR_SLACK_ID: ${{ steps.extract_info.outputs.author_slack_id }} TEXT: ${{ steps.extract_info.outputs.text }} run: | + # slack bot과 PR 작성자와의 채널 조회 (DM을 보내기 위해, 반드시 slack bot과의 채널 id가 필요함) + JSON_IM_CHANNEL=$(curl -s -X POST https://slack.com/api/conversations.open \ + -H "Authorization: Bearer $SLACK_BOT_TOKEN" \ + -H "Content-Type: application/json" \ + -d "{\"users\":\"$AUTHOR_SLACK_ID\"}") + # slack bot과의 채널 id 저장 + IM_CHANNEL_ID=$(echo "$JSON_IM_CHANNEL" | jq -r '.channel.id') + JSON_DATA=$(jq -n \ - --arg channel "$AUTHOR_SLACK_ID" \ + --arg channel "$IM_CHANNEL_ID" \ --arg text "$TEXT" \ '{ "channel": $channel, From a43551e319bc796cf18a5cceed799bdd011e45d2 Mon Sep 17 00:00:00 2001 From: aken-you Date: Sun, 13 Jul 2025 17:37:22 +0900 Subject: [PATCH 3/3] =?UTF-8?q?refactor:=20slackapi/slack-github-action=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflows/notify-pr-author-on-review.yml | 40 ++++--------------- 1 file changed, 7 insertions(+), 33 deletions(-) diff --git a/.github/workflows/notify-pr-author-on-review.yml b/.github/workflows/notify-pr-author-on-review.yml index 9a0aae16..9f60a07c 100644 --- a/.github/workflows/notify-pr-author-on-review.yml +++ b/.github/workflows/notify-pr-author-on-review.yml @@ -49,36 +49,10 @@ jobs: - name: Send Slack DM to PR Author if: steps.extract_info.outputs.skip != 'true' - env: - SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} - AUTHOR_SLACK_ID: ${{ steps.extract_info.outputs.author_slack_id }} - TEXT: ${{ steps.extract_info.outputs.text }} - run: | - # slack bot과 PR 작성자와의 채널 조회 (DM을 보내기 위해, 반드시 slack bot과의 채널 id가 필요함) - JSON_IM_CHANNEL=$(curl -s -X POST https://slack.com/api/conversations.open \ - -H "Authorization: Bearer $SLACK_BOT_TOKEN" \ - -H "Content-Type: application/json" \ - -d "{\"users\":\"$AUTHOR_SLACK_ID\"}") - # slack bot과의 채널 id 저장 - IM_CHANNEL_ID=$(echo "$JSON_IM_CHANNEL" | jq -r '.channel.id') - - JSON_DATA=$(jq -n \ - --arg channel "$IM_CHANNEL_ID" \ - --arg text "$TEXT" \ - '{ - "channel": $channel, - "text": $text - }') - - RESPONSE=$(curl -s -X POST https://slack.com/api/chat.postMessage \ - -H "Authorization: Bearer $SLACK_BOT_TOKEN" \ - -H "Content-Type: application/json" \ - -d "$JSON_DATA") - - echo "Slack DM 전송 응답: $RESPONSE" - - if ! echo "$RESPONSE" | jq -e '.ok' | grep -q true; then - echo "❌ Slack 메시지 전송 실패" - echo "에러 상세: $(echo "$RESPONSE" | jq -r '.error // "unknown error"')" - exit 1 - fi + uses: slackapi/slack-github-action@v2.1.0 + with: + method: chat.postMessage + token: ${{ secrets.SLACK_BOT_TOKEN }} + payload: | + channel: ${{ steps.extract_info.outputs.author_slack_id }} + text: ${{ steps.extract_info.outputs.text }}