본문 바로가기
C.W.K.
Stream
Lesson 10 of 13 · published

CI 모니터링

~10 min · monitoring, metrics, observability

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

뭘 볼까

CI도 소프트웨어야. 서비스처럼 다뤄야 해. 상태를 모니터링하고, 성능이 떨어지면 바로 대응하는 거지. 핵심 지표는 이거야:

  • Main pass rate — main에서 성공하는 실행 비율이야. 95% 이상을 목표로 해. 90% 아래로 떨어지면 위기 상황이야.
  • p50 / p95 소요 시간 — 피드백 지연 시간이야.
  • Flake rate — 재시도하면 통과하는 실패한 실행의 비율이야. 2% 넘으면 고쳐야 할 불안정한 테스트가 있다는 뜻이야.
  • 큐 시간 — 실행이 시작되기 전에 얼마나 대기하는지 봐. 늘어나면 자체 호스팅한 러너 풀이 너무 작은 거야.
  • 비용 — 저장소별, 워크플로별, 운영체제별 사용량을 확인해.

데이터는 어디에 둘까

  1. 내장 기능 — Insights 탭이나 Actions 사용 리포트를 써. 첫 단계로는 좋은데, 세부적으로 파고들기엔 한계가 있어.
  2. Datadog / Honeycomb / Grafanaworkflow_run webhook으로 관측 도구 스택에 Actions 이벤트를 보내.
  3. 직접 구축 — GitHub API를 호출해서 지표를 계산하고 Slack, 대시보드, 데이터베이스에 게시하는 예약 작업을 만들어.

알림

Main pass rate가 임계값 아래로 떨어지면 바로 알림을 보내. Flake rate가 급등하면 Slack으로 알려. 개별 실패에 알림 보내지 마. 그건 그냥 정상적인 노이즈야.

Code

CI 주간 요약 게시 예약 작업·yaml
name: ci-digest
on:
  schedule: [{ cron: '0 9 * * 1' }]   # Monday 09:00 UTC
  workflow_dispatch: {}

permissions:
  actions: read
  contents: read

jobs:
  digest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Compute and post digest
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          SLACK_WEBHOOK: ${{ secrets.SLACK_DEPLOY_WEBHOOK }}
        run: ./scripts/ci-digest.sh

External links

Exercise

저장소의 지난 30일 동안 main 브랜치 pass rate를 계산해 봐(수동이나 스크립트로). 95% 미만이면 주요 원인 3개를 나열해. 하나를 골라서 이번 스프린트에 직접 고치는 걸 맡아봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.