
GitHub Actions는 GitHub 저장소를 중심으로 다양한 자동화 작업을 수행할 수 있도록 제공되는 워크플로우 자동화 기능이다.
가장 대표적으로는 다음 작업에 사용됨.
즉, GitHub Actions는 GitHub 이벤트를 기준으로 동작하는 자동화 플랫폼.
과거에는 GitHub 저장소를 사용하더라도 CI/CD는 별도의 외부 도구로 연결하는 경우가 많았음.
예:
이 구조는 가능은 하지만 연결 지점이 많아짐.
GitHub Actions는 이 문제를 줄이기 위해 GitHub 안에서 바로 자동화 워크플로우를 정의하고 실행할 수 있게 한 구조다.
즉, 코드 저장소와 자동화 실행 기반을 하나의 플랫폼으로 만듬.
GitHub Actions는 GitHub 안에서 다양한 자동화를 수행할 수 있지만, DevOps와 CI/CD 맥락에서는 주로 다음 역할로 설명할 수 있음.
개발자가 GitHub 저장소에 코드를 push하면 다음이 가능함.
즉, GitHub Actions는 GitHub 기반 CI 도구로 바로 사용할 수 있음.
GitHub Actions는 빌드까지만이 아니라 CD 단계로도 확장 가능함.
예:
즉, 조직 정책에 따라 GitHub Actions를 CI 전용으로 쓸 수도 있고, CI/CD 전체에 활용할 수도 있음.
GitHub Actions의 가장 큰 특징 중 하나는 GitHub 이벤트를 자연스럽게 자동화 트리거로 삼는다는 점이다.
대표 이벤트 예시는 다음과 같음.
pushpull_requestworkflow_dispatchreleasescheduleissuetagrepository_dispatch즉, GitHub Actions는 GitHub 내부 이벤트를 기준으로 작동하는 자동화 엔진이다.
GitHub Actions의 핵심 구성요소.
Workflow는 자동화 절차 전체를 정의하는 단위다.
보통 하나의 YAML 파일로 작성하며, 저장소 내 .github/workflows 디렉터리에 위치함.
예:
my-repo/
└─ .github/
└─ workflows/
├─ ci.yml
├─ deploy.yml
└─ release.yml
즉, Workflow는 Jenkins의 Pipeline과 비슷한 개념으로 볼 수 있음.
하나의 목적을 가진 자동화 흐름을 정의하는 파일 단위다.
Job은 Workflow 안에서 실행되는 작업 단위다.
하나의 Workflow 안에 여러 Job이 들어갈 수 있음.
예:
Job은 순차적으로도 실행할 수 있고, 독립적이면 병렬 실행도 가능함.
즉, Workflow가 큰 흐름이라면 Job은 그 안의 큰 작업 블록이다.
Step은 Job 안에서 수행되는 개별 실행 단위다.
보통 다음 중 하나 형태임.
예:
즉, Step은 Job 안에서 실제로 수행되는 가장 작은 실행 단위에 가깝다.
Runner는 GitHub Actions Workflow를 실제로 실행하는 환경이다.
즉, Job과 Step은 Runner 위에서 돌아감.
Runner는 크게 두 가지로 나뉨.
이 구분은 GitHub Actions를 이해할 때 매우 중요함.
GitHub-hosted Runner는 GitHub가 제공하는 실행 환경이다.
사용자는 별도 서버를 직접 운영하지 않고도 Workflow를 실행할 수 있음.
대표 특징은 다음과 같음.
즉, GitHub-hosted Runner는 GitHub Actions가 빠르게 확산된 가장 큰 이유 중 하나다.
Self-hosted Runner는 사용자가 직접 운영하는 서버나 환경에 Runner를 설치해서 사용하는 방식이다.
예:
즉, GitHub Actions도 Jenkins처럼 완전히 SaaS에만 묶인 것이 아니라, 필요하면 자체 실행 환경과 연결할 수 있음.
| 항목 | GitHub-hosted Runner | Self-hosted Runner |
|---|---|---|
| 운영 주체 | GitHub | 사용자 |
| 관리 부담 | 낮음 | 높음 |
| 시작 속도 | 빠름 | 환경에 따라 다름 |
| 커스터마이징 | 제한적 | 높음 |
| 사내망 접근 | 어려울 수 있음 | 가능 |
| 보안 통제 | GitHub 의존 | 직접 통제 가능 |
이 비교는 이후 Jenkins와 GitHub Actions를 비교할 때도 중요한 기준이 됨.
GitHub Actions의 핵심 특징은 이벤트 기반 자동화다.
이벤트는 GitHub 안에서 발생하는 특정 행동이나 상태 변화를 의미함.
예:
GitHub Actions는 이런 이벤트를 감지해서 Workflow를 실행함.
전통적인 CI 도구에서는 저장소 변경을 감지하기 위해 다음 방식이 필요했음.
반면 GitHub Actions는 GitHub 안에서 이벤트를 바로 인식하기 때문에 구조가 단순해짐.
즉, GitHub Actions는
저장소와 자동화 시스템이 같은 플랫폼 안에 있기 때문에 트리거 구조가 자연스럽고 간단함.
GitHub Actions가 널리 쓰이는 이유는 구조적 장점이 분명하기 때문임.
GitHub Actions는 저장소, 브랜치, Pull Request, Release, Secret, Environment와 자연스럽게 연결됨.
즉, 별도 도구를 붙이는 느낌보다 GitHub 안에서 바로 자동화가 이어짐.
예:
이 통합성은 실무 효율에 큰 영향을 줌.
Jenkins처럼 서버 설치, Java 설정, 플러그인 구성부터 시작할 필요가 없음.
YAML 파일 하나로 빠르게 시작 가능함.
즉, 소규모 팀이나 GitHub 중심 조직에서는 CI/CD 도입 속도가 매우 빠름.
GitHub Actions Workflow도 YAML 파일이므로 Git으로 버전 관리 가능함.
장점은 다음과 같음.
즉, Jenkinsfile과 유사하게 Workflow as Code 구조를 가짐.
GitHub Actions는 Marketplace를 통해 다양한 Action을 재사용할 수 있음.
예:
즉, 자주 쓰는 작업을 처음부터 다 작성하지 않고 재사용 가능한 컴포넌트처럼 활용할 수 있음.
GitHub Actions는 다음 흐름과 특히 잘 맞음.
즉, GitHub를 개발 협업의 중심 플랫폼으로 쓰는 조직에서는 매우 자연스러운 선택지가 됨.
GitHub Actions도 환경에 따라 제약이 있음.
GitHub Actions는 GitHub와 깊게 통합되는 대신, 구조적으로 GitHub 의존성이 강함.
즉:
사내망, 폐쇄망, 복잡한 레거시 툴체인, 특수한 네트워크 연결 구조에서는 GitHub-hosted Runner만으로 부족할 수 있음.
이 경우 Self-hosted Runner를 써야 할 수 있는데, 그러면 운영 부담이 늘어남.
즉, GitHub Actions도 규모가 커질수록 단순 SaaS 사용만으로는 부족해질 수 있음.
관리형 Runner는 매우 편하지만, 사용량이 늘어나면 실행 시간, 동시성, 비용, 제한 정책을 고려해야 함.
즉, 작은 프로젝트에서는 매우 편하지만 대규모 사용 시에는 운영 정책과 비용 관리도 함께 봐야 함.
처음에는 단순한 YAML이지만, 점점 조건 분기와 배포 로직, 스크립트가 늘어나면 관리가 어려워질 수 있음.
즉, GitHub Actions도 "간단해서 무조건 관리가 쉬움"이라고 단정할 수는 없음.
복잡해지면 공통 모듈화, 재사용 전략, Runner 정책이 필요함.
GitHub Actions를 제대로 이해하려면 Jenkins와의 차이를 함께 봐야 함.
즉, Jenkins는 "운영형 플랫폼", GitHub Actions는 "플랫폼 내 자동화 기능"이라는 출발점 차이가 있음.
둘 다 확장성은 있지만 구조가 다름.
개념상 비슷한 부분은 있지만, 운영 책임과 구조 복잡도는 Jenkins 쪽이 더 큼.
이 차이는 도구 선택에 큰 영향을 줌.
코드 저장소, PR, 리뷰, 릴리스가 모두 GitHub에서 이루어지는 조직에는 매우 잘 맞음.
별도 서버 설치 없이 YAML만으로 시작 가능하므로 초기 도입이 쉬움.
복잡한 사내 인프라 제약이 적다면 매우 효율적임.
컨테이너, 레지스트리, Kubernetes, GitOps와 연계하기 좋음.
외부 플랫폼 연동이 어렵거나 제한이 강하면 불편할 수 있음.
특수 SDK, 사내 전용 툴, 고정 실행 서버가 필요한 경우 Self-hosted Runner 운영 부담이 생김.
GitHub 중심으로 묶이는 것을 부담스러워하는 경우에는 대안 검토가 필요함.
GitHub Actions의 기본 구조를 단순화하면 다음과 같음.
Developer
↓
GitHub Repository
↓
GitHub Event 발생
↓
Workflow 실행
↓
Runner에서 Job / Step 수행
↓
Artifact / Image / Deploy 결과 생성
↓
GitHub UI에서 결과 확인
이 구조의 핵심은 다음임.
즉, GitHub Actions는 GitHub 중심 DevOps 흐름에 매우 잘 맞는 구조다.