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

이상적 CI 설정

~14 min · ideal, checklist, synthesis

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

만약 피파를 오늘 처음부터 만든다면

2026년 프로젝트를 위한 이상적인 CI/CD 설정이야. 소규모 팀, 실사용자, 적당한 규모를 가정했어. 하나씩 조립해 나가고, 한 번에 다 만들려고 하지 마.

저장소 수준 기본 설정

  • 메인 브랜치 보호: CI 통과 필수, 엄격한 상태 확인, 병합 큐 사용, 강제 푸시 금지, 가능하면 서명된 커밋 사용.
  • 비밀값 스캐닝과 푸시 보호 활성화.
  • Dependabot 알림과 패치는 자동 병합되는 버전 업데이트로 설정.
  • CodeQL은 주간 일정으로 실행.

워크플로 라이브러리

  • ci.yml — 포맷팅 → 린트 → 타입 검사 → 유닛 테스트 → 통합 테스트. 모든 PR에 적용. permissions: read 설정, 진행 중인 작업 취소(concurrency cancel-in-progress), 문서 경로 무시(docs 경로-ignore).
  • release.yml — 태그 푸시 시 빌드, 서명, 게시, GitHub 릴리스 생성.
  • deploy-staging.yml — 메인 브랜치 병합 시 스테이징 환경에 배포, 스모크 테스트 진행.
  • deploy-prod.yml — 버전 입력값을 받는 workflow_dispatch 실행 조건, 필수 리뷰어와 브랜치 정책을 가진 운영 환경.
  • nightly.yml — 전체 테스트 매트릭스, 의존성 감사, 베이스 이미지 리빌드. workflow_dispatch와 연동.
  • codeql.yml + dependabot-auto-merge.yml — 보안 인프라.

인증과 비밀값

  • 클라우드 인증은 OIDC. 장기 키는 없음.
  • 조직 수준 GITHUB_TOKEN 기본값 = 제한됨(restricted).
  • 워크플로마다 명시적인 permissions: 설정.
  • 서드파티 액션은 커밋 SHA 고정.
  • 비밀값 교체 런북과 분기별 훈련.

관측 가능성

  • 핵심 지표를 담은 단계 요약(단계 summary).
  • 배포 시 슬랙 알림 (성공 + 실패).
  • CI 건강 상태(통과율, p95 소요 시간, 플레이크율)를 게시하는 주간 요약 작업.

AI/ML 서비스라면 추가로

  • 릴리스 자산으로 베이스라인을 관리하는 평가 게이트(eval gate) 워크플로.
  • 무거운 연산(MLX용 Apple Silicon, 학습용 GPU 박스)을 위한 셀프 호스티드 러너.
  • 학습 파이프라인이 푸시하는 모델 레지스트리.
  • API 계약 테스트(모킹된 브레인)와 평가 테스트(실제 브레인)를 별도 작업으로 분리.

진짜 가치

이 설정들 중 특별한 건 없어. 각 요소는 이미 어느 퀘스트에든 들어있거든. 규율은 첫 사건을 겪고 나서야 땜질하는 게 아니라, 새 프로젝트를 첫날부터 모두 갖추는 것이야.

Code

첫날 워크플로 세트 — 정리·bash
# What ships in .github/workflows/ on day 1 of a new project
ls .github/workflows/
# ci.yml
# release.yml
# deploy-staging.yml
# deploy-prod.yml
# nightly.yml
# codeql.yml
# dependabot-auto-merge.yml

# What's in repo Settings the same day:
# - Branch protection on main
# - Secret scanning + push protection
# - Dependabot alerts + updates
# - GITHUB_TOKEN org default: restricted

External links

Exercise

다음에 시작할 프로젝트의 첫날 CI/CD 설정을 작성해 봐. 아직 실제로 뭘 만들지는 마. 워크플로, 설정, 비밀값, 환경, 알림 목록만 정리해. 목표는 필요해지기 전에 청사진을 알아두는 거야.

Progress

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

댓글 0

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

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