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 |