Skip to content

[Feat] TimeTagSpinner Compose ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ #7

[Feat] TimeTagSpinner Compose ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

[Feat] TimeTagSpinner Compose ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ #7

name: Slack Notification (Review Requested)
on:
pull_request:
types: [review_requested]
permissions:
contents: read
pull-requests: read
concurrency:
group: pr-${{ github.event.pull_request.number }}-slack-review-requested
cancel-in-progress: true
# ์žฌ๋ฆฌ๋ทฐ ์š”์ฒญ ์•Œ๋ฆผ
jobs:
notify:
runs-on: ubuntu-latest
steps:
# JSON ํŒŒ์‹ฑ ๋„๊ตฌ
- name: Install jq
run: sudo apt-get update && sudo apt-get install -y jq
- name: Notify Re-review Requested
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
GITHUB_TOKEN: ${{ github.token }}
PR_TITLE: ${{ github.event.pull_request.title }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_URL: ${{ github.event.pull_request.html_url }}
PR_AUTHOR: ${{ github.event.pull_request.user.login }}
PR_REVIEWER: ${{ github.event.requested_reviewer.login }}
REPOSITORY: ${{ github.repository }}
run: |
declare -A GITHUB_TO_SLACK
GITHUB_TO_SLACK["soeun2537"]="U09A0LM0CRW"
GITHUB_TO_SLACK["taek2222"]="U099ARRH3D3"
GITHUB_TO_SLACK["changuii"]="U099BR9RNE6"
GITHUB_TO_SLACK["eoehd1ek"]="U0995NANDML"
GITHUB_TO_SLACK["oungsi2000"]="U098U2R57NK"
GITHUB_TO_SLACK["parkjiminnnn"]="U098U8SLXHD"
GITHUB_TO_SLACK["etama123"]="U0995MPSZ62"
if [[ "$PR_REVIEWER" == *"[bot]" ]]; then
echo "Bot ๊ณ„์ • ๋ฆฌ๋ทฐ ์š”์ฒญ์€ ์•Œ๋ฆผ ์ƒ๋žต"
exit 0
fi
REVIEW_API_URL="https://api.github.com/repos/$REPOSITORY/pulls/$PR_NUMBER/reviews"
REVIEW_COUNT=$(curl -s -H "Authorization: Bearer $GITHUB_TOKEN" "$REVIEW_API_URL" \
| jq -r --arg reviewer "$PR_REVIEWER" '[.[] | select(.user.login == $reviewer)] | length')
if [ "$REVIEW_COUNT" -eq 0 ]; then
echo "์ตœ์ดˆ ๋ฆฌ๋ทฐ ์š”์ฒญ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด ์•Œ๋ฆผ ์ƒ๋žต"
exit 0
fi
slack_id=${GITHUB_TO_SLACK[$PR_REVIEWER]}
if [[ -z "$slack_id" ]]; then
echo "๋งคํ•‘ ์—†๋Š” ์‚ฌ์šฉ์ž(${PR_REVIEWER})๋Š” ์ƒ๋žต"
exit 0
fi
if [[ -n "${GITHUB_TO_SLACK[$PR_AUTHOR]}" ]]; then
SLACK_AUTHOR_MENTION="<@${GITHUB_TO_SLACK[$PR_AUTHOR]}>"
else
SLACK_AUTHOR_MENTION="@${PR_AUTHOR}" # ํ‰๋ฌธ
fi
SLACK_REVIEWER_MENTION="<@$slack_id>"
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\": \"๐Ÿธ *์žฌ๋ฆฌ๋ทฐ ์š”์ฒญ ์•Œ๋ฆผ*\n*PR ์ œ๋ชฉ:* ${PR_TITLE} (#${PR_NUMBER})\n*์ž‘์„ฑ์ž:* ${SLACK_AUTHOR_MENTION}\n*๋ฆฌ๋ทฐ์–ด:* ${SLACK_REVIEWER_MENTION}\n*๋งํฌ:* ${PR_URL}\"}" \
$SLACK_WEBHOOK_URL