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

파이프라인 해부도

~14 min · anatomy, stages, gates

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

단계, 게이트, 환경

파이프라인은 단순히 '푸시할 때 실행되는 스크립트'가 아니야. 단계들로 이루어진 방향 그래프라고 보면 돼. 각 단계는 게이트로 분리되고, 최종적으로 하나 이상의 환경에서 마무리돼.

대표적인 구조는 이렇게 생겼어:

  • 소스 — 체크아웃. 처리할 정확한 커밋을 가져오는 과정이야.
  • 빌드 — 컴파일, 번들링, 컨테이너화를 수행해. 결과물은 아티팩트로 나오는데, 결정론적이고 이름이 붙여져 있으며 변경 불가능한 형태여야 해.
  • 테스트 — 유닛, 통합, 인수 테스트를 돌려. 보통 병렬로 처리해.
  • 정적 분석 — 린트, 타입 검사, 보안 스캔, 라이선스 스캔을 포함해.
  • 패키지 — 배포용 아티팩트를 조립해 (Docker 이미지, npm tarball, wheel 등).
  • 배포 → 스테이징 — 보통 자동으로 진행돼.
  • 인수 / 스모크 테스트 — 스테이징 환경을 대상으로 실행해.
  • 배포 → 프로덕션 — 지속적 전달의 경우 승인 게이트가 있고, 지속적 배포는 자동으로 넘어가.
  • 배포 후 검증 — 프로덕션 스모크 테스트와 관측 가능성 점검을 해.

모든 프로젝트가 이 모든 단계를 다 쓸 필요는 없어. 정적 사이트라면 빌드, 패키지, 배포를 하나로 합칠 수도 있어. 반대로 규제를 받는 은행 앱은 5개를 더 추가할 수도 있지 (컴플라이언스 스캔, 변경 자문 위원회 승인, 감사 로그 생성 등). 어떤 형태가 되든 아티팩트를 중심에 둔 게이트 그래프라는 점은 변하지 않아.

Code

두 환경 파이프라인 (스테이징 → 프로덕션)·yaml
name: pipeline
on: { push: { branches: [main] } }
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./build.sh
      - uses: actions/upload-artifact@v4
        with: { name: dist, path: dist/ }

  test:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: ./test.sh

  deploy-staging:
    needs: [build, test]
    runs-on: ubuntu-latest
    environment: staging
    steps:
      - uses: actions/download-artifact@v4
        with: { name: dist }
      - run: ./deploy.sh staging

  deploy-prod:
    needs: deploy-staging
    runs-on: ubuntu-latest
    environment: production    # gated
    steps:
      - uses: actions/download-artifact@v4
        with: { name: dist }
      - run: ./deploy.sh prod

External links

Exercise

현재 프로젝트의 파이프라인을 그래프로 스케치해 봐. 각 단계, 각 게이트(수동 또는 자동), 각 환경을 표시해. 스테이징과 프로덕션이 아티팩트를 따로 다시 빌드한다면 '한 번 빌드하기' 위반으로 표시하고 뭘 바꿔야 할지 적어 봐.

Progress

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

댓글 0

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

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