트리거
Workflow 실행 조건 — push, change_request, schedule, workflow_dispatch
triggers는 Workflow가 언제 실행될지를 정의합니다.
Supported Events
| Event | Description |
|---|---|
push | 브랜치에 코드가 push될 때 |
change_request | Change Request가 생성/업데이트될 때 |
schedule | 크론 스케줄에 따라 주기적으로 실행 |
workflow_dispatch | 수동으로 실행할 때 |
push
브랜치에 코드가 push될 때 Workflow를 실행합니다.
triggers:
push:
# main 또는 develop 브랜치, feature/ 로 시작하는 모든 브랜치
branches: [main, develop, "feature/*"]
# v로 시작하는 태그가 push될 때 (예: v1.0.0, v2.1.3)
tags: ["v*"]
# src/ 또는 tests/ 하위 파일이 변경된 경우에만 실행
paths: [src/**, tests/**]push 필드
| Field | Type | Description |
|---|---|---|
branches | list[string] | 대상 브랜치 패턴 목록. 글로브 패턴(*, **) 지원 |
branches-ignore | list[string] | 제외할 브랜치 패턴 목록. branches와 동시 사용 불가 |
tags | list[string] | 대상 태그 패턴 목록. 글로브 패턴 지원 |
tags-ignore | list[string] | 제외할 태그 패턴 목록. tags와 동시 사용 불가 |
paths | list[string] | 변경된 파일 경로 패턴. ** 재귀 패턴, ! 부정 패턴 지원 |
paths-ignore | list[string] | 무시할 파일 경로 패턴. paths와 동시 사용 불가 |
브랜치 패턴 예시
triggers:
push:
branches:
- main # 정확히 main 브랜치
- "feature/*" # feature/login, feature/signup 등
- "release/**" # release/v1, release/v1/hotfix 등 (재귀)경로 필터 예시
# src/ 하위 파일이 변경될 때만 실행
triggers:
push:
branches: [main]
paths:
- src/**
- package.json
# docs/ 변경은 무시 (나머지 파일 변경 시 실행)
triggers:
push:
branches: [main]
paths-ignore:
- docs/**
- "*.md"브랜치/태그 제외 예시
# temp/, wip/ 로 시작하는 브랜치는 제외
triggers:
push:
branches-ignore:
- "temp/*"
- "wip/*"
# v-beta로 시작하는 태그는 제외, 그 외 모든 태그에서 실행
triggers:
push:
tags-ignore:
- "v-beta*"다음 필드 쌍은 동시에 사용할 수 없습니다:
branches와branches-ignoretags와tags-ignorepaths와paths-ignore
change_request
Change Request가 생성되거나 업데이트될 때 Workflow를 실행합니다.
triggers:
change_request:
# main 브랜치를 대상으로 하는 CR만 실행
branches: [main]
# docs/ 변경은 무시
paths-ignore: [docs/**]change_request 필드
| Field | Type | Description |
|---|---|---|
branches | list[string] | 대상(base) 브랜치 패턴 목록 |
branches-ignore | list[string] | 제외할 브랜치 패턴 목록. branches와 동시 사용 불가 |
paths | list[string] | 변경된 파일 경로 패턴 |
paths-ignore | list[string] | 무시할 파일 경로 패턴. paths와 동시 사용 불가 |
tags와 tags-ignore는 change_request에서 지원하지 않습니다. 태그 기반 트리거는 push를 사용하세요.
schedule
크론 스케줄에 따라 Workflow를 주기적으로 실행합니다.
triggers:
schedule:
# 실행 대상 브랜치 (필수)
branch: main
# 크론 표현식 (UTC 기준)
cron:
- "0 0 * * *" # 매일 자정 (UTC) = 한국시간 오전 9시
- "0 12 * * 1-5" # 평일 정오 (UTC) = 한국시간 오후 9시schedule 필드
| Field | Required | Type | Description |
|---|---|---|---|
branch | YES | string | 실행 대상 브랜치. 단일 브랜치만 지정 가능 |
cron | YES | list[string] | 크론 표현식 목록 (최소 1개, UTC 기준) |
크론 표현식 참고
┌───────────── 분 (0-59)
│ ┌───────────── 시 (0-23)
│ │ ┌───────────── 일 (1-31)
│ │ │ ┌───────────── 월 (1-12)
│ │ │ │ ┌───────────── 요일 (0-6, 일=0)
│ │ │ │ │
* * * * *| 표현식 | 설명 |
|---|---|
0 0 * * * | 매일 자정 (UTC) |
0 */6 * * * | 6시간마다 |
30 9 * * 1-5 | 평일 오전 9:30 (UTC) |
0 0 1 * * | 매월 1일 자정 |
workflow_dispatch
수동으로 Workflow를 실행합니다. UI 또는 API에서 트리거할 수 있습니다.
triggers:
# 수동 실행 — 키만 선언
workflow_dispatch:브랜치 필터를 적용할 수도 있습니다:
triggers:
# 수동 실행 시 브랜치 필터
workflow_dispatch:
branches: [main, develop]workflow_dispatch 필드
| Field | Type | Description |
|---|---|---|
branches | list[string] | 수동 실행을 허용할 브랜치 패턴 목록. 글로브 패턴 지원 |
workflow_dispatch는 경로 필터(paths, paths-ignore)를 지원하지 않습니다.
여러 트리거 조합
하나의 Workflow에 여러 트리거를 동시에 설정할 수 있습니다. 어느 하나라도 충족되면 실행됩니다.
triggers:
# 1. main/develop push 시 실행
push:
branches: [main, develop]
paths: [src/**, package.json]
# 2. main 대상 CR 시 실행
change_request:
branches: [main]
# 3. 매일 자정 스케줄 실행
schedule:
branch: main
cron: ["0 0 * * *"]
# 4. 수동 실행 가능
workflow_dispatch:Rules
다음 필드 쌍은 동시에 사용할 수 없습니다:
branches / branches-ignore
tags / tags-ignore
paths / paths-ignore
schedule.cron은 최소 1개 이상 필요합니다.
schedule.branch는 필수이며, 단일 브랜치만 지정 가능합니다.
workflow_dispatch는 경로 필터를 지원하지 않습니다.
change_request는 tags / tags-ignore를 지원하지 않습니다.
triggers에는 최소 1개의 이벤트가 포함되어야 합니다.