Skip to content

Commit 002ab15

Browse files
committed
ci: add Slack commit notification workflow
1 parent 00e9a88 commit 002ab15

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Slack Commit Notify
2+
3+
on:
4+
push:
5+
branches: ['*']
6+
7+
jobs:
8+
notify:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Post to Slack
12+
env:
13+
SLACK_WEBHOOK: ${{ secrets.SLACK_DAILY_WEBHOOK }}
14+
run: |
15+
# Get commit info
16+
REPO_NAME="${GITHUB_REPOSITORY#*/}"
17+
COMMIT_MSG=$(echo '${{ github.event.head_commit.message }}' | head -1)
18+
COMMIT_HASH="${GITHUB_SHA:0:7}"
19+
BRANCH="${GITHUB_REF#refs/heads/}"
20+
AUTHOR="${{ github.event.head_commit.author.name }}"
21+
22+
# Determine emoji based on commit type
23+
EMOJI="💻"
24+
if echo "$COMMIT_MSG" | grep -qiE "^feat"; then EMOJI="✨"; fi
25+
if echo "$COMMIT_MSG" | grep -qiE "^fix"; then EMOJI="🐛"; fi
26+
if echo "$COMMIT_MSG" | grep -qiE "^docs"; then EMOJI="📝"; fi
27+
if echo "$COMMIT_MSG" | grep -qiE "^refactor"; then EMOJI="♻️"; fi
28+
if echo "$COMMIT_MSG" | grep -qiE "^test"; then EMOJI="🧪"; fi
29+
if echo "$COMMIT_MSG" | grep -qiE "^perf"; then EMOJI="⚡"; fi
30+
if echo "$COMMIT_MSG" | grep -qiE "^chore"; then EMOJI="🔧"; fi
31+
if echo "$COMMIT_MSG" | grep -qiE "release|bump.*version|v[0-9]"; then EMOJI="🚀"; fi
32+
33+
# Clean commit message
34+
CLEAN_MSG=$(echo "$COMMIT_MSG" | sed 's/^[a-z]*[^:]*: //')
35+
36+
# Escape for JSON
37+
CLEAN_MSG=$(echo "$CLEAN_MSG" | sed 's/"/\\"/g' | head -c 100)
38+
39+
# Build and send message
40+
curl -s -X POST -H 'Content-type: application/json' \
41+
--data "{\"blocks\":[{\"type\":\"section\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"${EMOJI} *${CLEAN_MSG}*\n\\\`${REPO_NAME}\\\` on \\\`${BRANCH}\\\` • ${COMMIT_HASH} • by ${AUTHOR}\"}}]}" \
42+
"$SLACK_WEBHOOK"

0 commit comments

Comments
 (0)