개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← YouTube Shorts 자동화

CI 알림 — Slack Block Kit 도입과 path filter 정리

2026년 7월 26일
CI/CDSlackGitHub Actions

배포 결과를 Slack으로 받고 있었는데 그냥 텍스트 한 줄이었다. ✅ Deploy API \success`` 이런 식. 카드 형태로 바꾸기로 했다.

deploy-*.yml — Block Kit 카드로 개선

컬러바, 필드, 링크 버튼이 있는 카드 포맷으로 갈아엎었다.

PAYLOAD=$(jq -n \
  --arg color  "$COLOR" \
  --arg title  "$STATUS Deploy API — $LABEL" \
  --arg branch "$REF" \
  --arg sha    "$SHORT_SHA" \
  --arg actor  "$ACTOR" \
  --arg msg    "${FIRST_LINE:-커밋 메시지 없음}" \
  --arg run    "$RUN_URL" \
  --arg commit "$COMMIT_URL" \
  '{attachments:[{color:$color,blocks:[
    {type:"section",text:{type:"mrkdwn",text:$title}},
    {type:"section",fields:[
      {type:"mrkdwn",text:("*브랜치*\n`"+$branch+"`")},
      {type:"mrkdwn",text:("*커밋*\n`"+$sha+"`")},
      {type:"mrkdwn",text:("*작성자*\n"+$actor)},
      {type:"mrkdwn",text:("*변경사항*\n"+$msg)}
    ]},
    {type:"actions",elements:[
      {type:"button",text:{type:"plain_text",text:"Actions 보기 →"},url:$run},
      {type:"button",text:{type:"plain_text",text:"커밋 보기 →"},url:$commit}
    ]}
  ]}]}')

deploy-api, deploy-web, deploy-workers 세 워크플로우에 똑같이 붙였다. 성공은 초록(#2eb886), 실패는 빨강(#e01e5a) 컬러바.

붙이고 나니 자잘한 게 계속 터졌다.

첫 번째는 한글 잘림. 커밋 메시지를 cut -c1-60으로 잘랐더니 멀티바이트 문자 중간이 깨졌다.

# 이전 — 바이트 단위로 잘라서 한글 중간이 깨짐
FIRST_LINE=$(echo "$COMMIT_MSG" | head -1 | cut -c1-60)

# 수정 — python3 유니코드 슬라이싱
FIRST_LINE=$(echo "$COMMIT_MSG" | head -1 | python3 -c "import sys; s=sys.stdin.read().strip(); print(s[:60]+'…' if len(s)>60 else s)")

두 번째는 레이아웃. 변경사항 필드가 2열 grid 안에 들어가 있어서 커밋 메시지가 조금만 길어도 줄바꿈이 지저분하게 됐다. 필드에서 빼서 전체 너비 section으로 분리했다.

 {type:"section",fields:[
   {type:"mrkdwn",text:("*브랜치*\n`"+$branch+"`")},
   {type:"mrkdwn",text:("*커밋*\n`"+$sha+"`")},
-  {type:"mrkdwn",text:("*작성자*\n"+$actor)},
-  {type:"mrkdwn",text:("*변경사항*\n"+$msg)}
+  {type:"mrkdwn",text:("*작성자*\n"+$actor)}
 ]},
+{type:"section",text:{type:"mrkdwn",text:("*변경사항* "+$msg)}},

세 번째는 작성자 표기. github.actor는 로그인 아이디라 name+email 조합으로 바꿨다.

path filter — 불필요한 배포 차단

md 파일만 바꿔도 배포가 트리거되는 게 거슬렸다. apps/api/** 이렇게 통으로 걸어놨더니 문서 수정까지 다 걸린 거다.

 paths:
-  - apps/api/**
-  - packages/shared/**
+  - apps/api/src/**
+  - apps/api/serverless.yml
+  - apps/api/package.json
+  - packages/shared/src/**
+  - packages/shared/prisma/**
   - .github/workflows/deploy-api.yml

이렇게 세분화하고 나니 이번엔 다른 문제가 보였다. workflow 파일 자기 자신을 path filter에 넣어놨으니, CI 알림 포맷 하나 고칠 때마다 그게 또 배포를 트리거했다. 지금 하고 있는 이 작업 자체가 계속 배포를 부르는 상황. 자기 참조를 뺐다.

 paths:
   - apps/api/src/**
   - apps/api/serverless.yml
   - apps/api/package.json
   - packages/shared/src/**
   - packages/shared/prisma/**
-  - .github/workflows/deploy-api.yml

dlq-notifier용 CLAUDE.md도 이 김에 새로 써서 CI/CD 알림 규칙을 문서화해뒀다.

← 이전 글스크립트 품질 — 종결어 중복 방지와 TTS 롤백
다음 글 →대시보드 UX — 업로드 한도 상향과 썸네일 플레이스홀더