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

이벤트 (실행 조건)

~12 min · events, triggers, on

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

'on' 블록이 스케줄러야

모든 워크플로는 on: 아래에 실행 조건을 선언해. 자주 쓰는 실행 조건들을 대략 쓰는 순서대로 나열해볼게:

  • push — 푸시할 때마다 실행돼. 브랜치, 태그, 경로로 필터링할 수 있어.
  • pull_request — PR을 열거나, 새 커밋을 올리거나, 다시 열 때 실행돼. 브랜치, 경로, 타입으로 필터링할 수 있어.
  • schedule — cron 형식이고 UTC 기준이야. '0 6 * * *'는 매일 06:00 UTC를 뜻해.
  • workflow_dispatch — UI, API, CLI에서 수동으로 실행해. 입력값을 기본적으로 지원해.
  • release — 릴리스 이벤트(생성, 게시, 편집)가 일어날 때 실행돼.
  • workflow_call — 다른 워크플로에서 호출할 수 있게 해줘(재사용 가능한 워크플로).
  • repository_dispatch — 외부 시스템에서 POST 요청으로 실행해.
  • merge_group — 병합 큐 안에서 실행돼.

필터로 실행 조건을 좁혀

그냥 on: push만 쓰는 건 거의 없어. 보통 main 브랜치로 푸시할 때소스 파일이 변경된 푸시만 잡고 싶잖아. 각 이벤트 아래에 필터를 둬:

  • branches / branches-ignore
  • tags / tags-ignore
  • paths / paths-ignore — 변경된 파일에 매칭되는 glob 패턴이야.
  • types — 하위 타입이 있는 이벤트(PR 열기/동기화/다시 열기)에 써.

Code

필터가 있는 혼합 실행 조건·yaml
name: ci
on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]
    paths:
      - 'src/**'
      - 'tests/**'
      - '.github/workflows/ci.yml'
  push:
    branches: [main]
    tags: ['v*.*.*']
  schedule:
    - cron: '0 6 * * *'   # 06:00 UTC daily
  workflow_dispatch:
    inputs:
      reason:
        description: 'Why are you running this?'
        required: true

External links

Exercise

연습용 저장소에서 세 가지 다른 이벤트에 실행되는 워크플로 하나 짜봐: main 브랜치 푸시, pull_request, 입력값 한 개 있는 workflow_dispatch. 어떤 실행 조건이 작동했는지 알 수 있게 각각 다른 메시지를 출력해.

Progress

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

댓글 0

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

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