Git

[Git] CI/CD

Castle Bird 2026. 2. 15. 21:20

1. GitHub Actions 워크플로우란?

GitHub Actions 워크플로우(Workflow)는 하나 이상의 작업을 실행하는 자동화된 절차를 의미합니다.

리포지토리의 .github/workflows 디렉토리에 YAML 파일로 정의되며, 코드 빌드, 테스트, 패키징, 릴리즈, 배포 등 소프트웨어 개발 생명주기(SDLC)의 다양한 단계를 자동화하는 데 사용됩니다.

 

name: Simple-Triggers

on:
  # 1. 특정 브랜치에 코드가 푸시되었을 때
  push:
    branches: [ "main", "dev" ]

  # 2. 메인 브랜치로 Pull Request가 생성되거나 업데이트될 때
  pull_request:
    branches: [ "main" ]

  # 3. 매일 정해진 시간(예: 새벽 3시)에 실행 (Cron 설정)
  schedule:
    - cron: '0 18 * * *' # UTC 기준 (한국 시간 +9시간)

  # 4. GitHub 웹사이트에서 'Run workflow' 버튼으로 직접 실행할 때
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo "트리거에 의해 실행되었습니다."

2. Trigger란?

트리거(Trigger)는 워크플로우를 실행하게 만드는 '이벤트'를 의미합니다.

특정 조건이 충족되면 GitHub Actions 엔진이 이를 감지하여 정의된 워크플로우를 수행합니다.

 

트리거 유형 목록

  • Webhook Events: 코드 푸시, PR 생성, 이슈 생성 등 GitHub 내 발생하는 활동에 반응합니다. (push, pull_request, issues 등)
  • Scheduled Events: 설정한 시간에 따라 주기적으로 실행됩니다. (schedule)
  • Manual Events: 관리자가 직접 버튼을 눌러 실행합니다. (workflow_dispatch)
  • External Events: 외부 API 호출을 통해 실행됩니다. (repository_dispatch)
  • Workflow Events: 다른 워크플로우의 상태(성공/실패)에 따라 연쇄적으로 실행됩니다. (workflow_run)
on:
  # 1. Webhook Events: 코드 푸시나 PR이 발생했을 때
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  issues:
    types: [opened, edited]

  # 2. Scheduled Events: 정해진 시간에 주기적으로 (매일 자정 UTC)
  schedule:
    - cron: '0 0 * * *'

  # 3. Manual Events: GitHub 상에서 사용자가 버튼을 눌러 수동 실행
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'
        required: true
        default: 'warning'

  # 4. External Events: 외부 API(Webhooks) 호출을 통해 실행
  repository_dispatch:
    types: [custom-event-type]

  # 5. Workflow Events: 'CI'라는 이름의 워크플로우가 완료되었을 때 실행
  workflow_run:
    workflows: ["CI"]
    types:
      - completed

3. Trigger별 적합한 CI/CD 시나리오

각 트리거는 파이프라인의 목적에 따라 전략적으로 선택해야 합니다.

트리거 유형 적합한 CI/CD 시나리오 설명
pull_request 코드 품질 검증 (CI) 메인 브랜치에 합쳐지기 전, 테스트를 통과하는지 확인하여 결함 유입을 방지합니다.
push 지속적 통합 및 배포 특정 브랜치(예: main, develop)에 코드가 합쳐지면 즉시 빌드하여 테스트 서버에 반영합니다.
schedule 정기 점검 및 백업 매일 새벽(반복) 보안 취약점을 스캔하거나, 데이터베이스 백업, Nightly 빌드 등을 수행할 때 적합합니다.
workflow_dispatch 수동 운영 배포 (CD) 운영 서버 배포와 같이 사람의 최종 승인이 필요하거나, 일회성 마이그레이션이 필요할 때 사용합니다.
create 릴리즈 및 패키징 새 버전 태그(v1.0.0 등)를 생성했을 때 자동으로 Docker 이미지를 빌드하고 릴리즈 노트를 생성합니다.
workflow_run 연쇄 작업 관리 빌드 워크플로우가 성공한 뒤에만 알림을 보내거나 문서 업데이트를 실행하는 등 작업 간 의존성이 있을 때 유용합니다.

'Git' 카테고리의 다른 글

[Git] Fetch와 Pull의 차이점  (2) 2025.11.25
[Git] Rebase와 Merge의 차이점  (0) 2025.11.17
[Git] Git Basic  (0) 2025.11.15