GitHub Actions에서 Trigger는 "언제 워크 플로우를 실행할 것인가"를 결정하는 조건입니다.
워크플로우 파일에서는 on 키워드로 정의합니다.
name: CI
on:
push:
branches: [main]
main 브랜치에 push 할때 워크 플로우를 실행하고싶을때는 위와같이 나타냅니다.

GitHub 공식 문서 기준으로 워크플로우는 GitHub 이벤트, 예약시간, 수동 실행등에 의해 실행될 수 있고 다양한 이벤트 기반 트리거를 제공합니다.
1. push: 코드가 브랜치나 태그에 push 될때 실행됩니다.
on:
push:
branches:
- main
- develop
- develop 브랜치에 push 되면 테스트 실행
- main 브랜치에 merge되면 빌드 후 배포
- v1.0.0 같은 태그가 push 되면 릴리즈 배포
예를 들어 백엔드 프로젝트에서 main 브랜치에 push 될때 Docker 이미지를 빌드하고, ECS나 EC2에 배포하는 흐름에 자주 사용합니다.
2. pull_request: PR이 생성되거나, 커밋이 추가되거나, 다시 열릴때 실행
on:
pull_request:
branches:
- develop
- main
- PR 생성시 테스트 실행
- 빌드 가능 여부 확인
- 리뷰전에 깨진 코드가 들어오는것을 방지
실무에서는 pull_request를 CI 검증용으로 많이 사용한다고 합니다. 배포보다는 이 코드가 merge되어도 안전한가를 확인하는 용도로 많이 사용한다고 합니다.
3. workflow_dispatch: GitHub Actions 화면에서 사람이 직접 실행할 수 있는 수동 트리거
on:
workflow_dispatch:
inputs:
environment:
description: '배포 환경'
required: true
default: 'dev'
- 입력값도 받을 수 있다.
- 운영 배포를 수동 승인 후 실행
- 특정 브랜치를 원하는 시점에 배포
- 장애 대응용 재배포
즉, 자동화는 하되 실행 타이밍은 사람이 통제하고 싶을때 사용한다.
GitHub Actions 탭에 [Run workflow] 버튼이 생기고, 사용자는 dev, prod, stage와 같은 값을 입력하고 실행하게 된다.
운영 배포는 위험하기 때문에 이러한 과정을 통해서 배포에서 실수를 최소화한다고 합니다.
4. schedule: cron 표현식으로 정해진 시간에 워크 플로우를 실행
on:
schedule:
- cron: '0 0 * * *'
- 매일 새벽 테스트 실행
- 매주 보안 점검
- 정기 배치 작업
- 오래된 artifact 정리
- 주기적인 헬스 체크
cron은 기본적으로 UTC 기준이라서 매일 새벽 3시마다 API 테스트를 돌리고 싶다면 한국 시간 기준으로 UTC 변환을 고려해야한다.
5. release: Github Release가 생성, 수정, 게시될때 실행
on:
release:
types: [published]
- 릴리즈가 발행되면 운영 배포
- 릴리즈 노트 생성
- 배포 파일 업로드
- Docker 이미지에 버전 태그 부여
push의 tag 기반 배포와 비슷하지만, release는 GitHub Release라는 명확한 릴리즈 행위를 기준으로 동작합니다.
6. workflow_run: 다른 워크플로우가 완료된 후 실행
on:
workflow_run:
workflows: ["CI"]
types:
- completed
- CI가 성공하면 CD 실행
- 테스트 워크플로우 완료 후 배포 워크플로우 실행
- 빌드와 배포 워크플로우 분리
예를 들어 CI 워크플로우에서 테스트와 빌드를 수행하고, 성공한 경우에만 Deploy 워크플로우가 실행되도록 구성할 수 있습니다.
CI와 CD의 책임을 분리할 수 있다는 장점이 있다.
'위클리페이퍼' 카테고리의 다른 글
| AWS RDS를 활용하는 이점과 EC2에 직접 DB 설치 비교 (0) | 2026.05.12 |
|---|---|
| Spring MVC에서 클라이언트의 요청 처리 흐름.(@Controller/@RestController) (0) | 2026.02.23 |
| Spring boot에서 사용되는 다양한 Bean 등록 방법들 (0) | 2026.02.06 |
| 웹 서버와 WAS(Web Application Server)의 차이 (0) | 2026.02.02 |
| 프레임워크와 라이브러리의 차이점? (0) | 2026.01.27 |