GitHub Actions 이해하기
GitHub Actions 이해하기
GitHub Actions의 핵심 개념과 필수 용어의 기초를 함께 알아볼게요.
본문
개요
GitHub Actions는 빌드, 테스트, 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 전달(CI/CD) 플랫폼이에요. 리포지토리의 모든 풀 리퀘스트를 빌드·테스트하는 워크플로를 만들거나, 병합된 풀 리퀘스트를 프로덕션에 배포하는 워크플로를 만들 수 있어요.
GitHub Actions는 DevOps를 넘어, 리포지토리에서 다른 이벤트가 발생할 때 워크플로를 실행할 수 있게 해줘요. 예를 들어 누군가 리포지토리에 새 이슈를 만들 때마다 적절한 라벨을 자동으로 추가하는 워크플로를 실행할 수 있어요.
GitHub은 워크플로를 실행할 Linux, Windows, macOS 가상 머신을 제공하고, 자체 데이터 센터나 클라우드 인프라에서 자체 호스팅 러너를 호스팅할 수도 있어요.
GitHub Actions의 구성 요소
리포지토리에서 풀 리퀘스트가 열리거나 이슈가 생성되는 것 같은 이벤트(event) 가 발생할 때 GitHub Actions 워크플로(workflow) 가 트리거되도록 구성할 수 있어요. 워크플로는 순차적으로 또는 병렬로 실행될 수 있는 하나 이상의 작업(job) 을 포함해요. 각 작업은 자체 가상 머신 러너(runner) 나 컨테이너 안에서 실행되며, 정의한 스크립트를 실행하거나 워크플로를 단순화할 수 있는 재사용 가능한 확장인 액션(action) 을 실행하는 하나 이상의 단계(step) 를 가져요.

워크플로
워크플로(workflow) 는 하나 이상의 작업을 실행하는 구성 가능한 자동화 프로세스예요. 워크플로는 리포지토리에 체크인된 YAML 파일로 정의되며, 리포지토리의 이벤트에 의해 트리거될 때 실행되거나 수동으로, 또는 정의된 일정에 따라 트리거될 수 있어요.
워크플로는 리포지토리의 .github/workflows 디렉토리에 정의돼요. 리포지토리는 여러 워크플로를 가질 수 있으며, 각 워크플로는 다음과 같은 서로 다른 작업 집합을 수행할 수 있어요:
- 풀 리퀘스트 빌드 및 테스트
- 릴리스가 생성될 때마다 애플리케이션 배포
- 새 이슈가 열릴 때마다 라벨 추가
다른 워크플로 안에서 워크플로를 참조할 수 있어요. 자세한 내용은 워크플로 재사용하기를 참고하세요.
자세한 내용은 워크플로 작성하기를 참고하세요.
이벤트
이벤트(event) 는 워크플로 실행을 트리거하는 리포지토리의 특정 활동이에요. 예를 들어 누군가 풀 리퀘스트를 만들거나, 이슈를 열거나, 리포지토리에 커밋을 푸시할 때 GitHub에서 활동이 시작될 수 있어요. 워크플로가 일정(schedule)에 따라 실행되도록 트리거하거나, REST API에 게시하거나, 수동으로 트리거할 수도 있어요.
워크플로를 트리거하는 데 사용할 수 있는 이벤트의 전체 목록은 워크플로를 트리거하는 이벤트를 참고하세요.
작업
작업(job) 은 같은 러너 에서 실행되는 워크플로의 단계 집합이에요. 각 단계는 실행될 셸 스크립트이거나 실행될 액션 이에요. 단계는 순서대로 실행되며 서로 의존적이에요. 각 단계가 같은 러너에서 실행되므로 한 단계에서 다른 단계로 데이터를 공유할 수 있어요. 예를 들어 애플리케이션을 빌드하는 단계 다음에 빌드된 애플리케이션을 테스트하는 단계를 둘 수 있어요.
단계는 기본적으로 순서대로 실행되지만, 워크플로가 병렬 실행의 이점을 얻을 때 선택된 단계를 동시에 실행할 수도 있어요. 예를 들어 이후 단계가 계속되는 동안 오래 실행되는 서비스를 시작하는 경우예요. 자세한 내용은 GitHub Actions 워크플로 문법을 참고하세요.
다른 작업과의 작업 의존성을 구성할 수 있어요. 기본적으로 작업은 의존성이 없고 병렬로 실행돼요. 작업이 다른 작업에 의존하면 의존하는 작업이 완료될 때까지 기다렸다가 실행돼요.
매트릭스(matrix) 를 사용해 같은 작업을 각각 다른 변수 조합(예: 운영 체제 또는 언어 버전)으로 여러 번 실행할 수도 있어요.
예를 들어 아키텍처마다 작업 의존성 없이 여러 빌드 작업을 구성하고, 그 빌드에 의존하는 패키징 작업을 둘 수 있어요. 빌드 작업은 병렬로 실행되고, 성공적으로 완료되면 패키징 작업이 실행돼요.
자세한 내용은 워크플로가 수행할 작업 선택하기를 참고하세요.
액션
액션(action) 은 워크플로 안에서 특정 작업을 수행하는 사전 정의된 재사용 가능한 작업 또는 코드 집합이에요. 워크플로 파일에 작성하는 반복 코드의 양을 줄여줘요. 액션은 다음과 같은 작업을 수행할 수 있어요:
- GitHub에서 Git 리포지토리 가져오기
- 빌드 환경에 올바른 툴체인 설정
- 클라우드 제공자에 인증 설정
자체 액션을 작성하거나 GitHub Marketplace에서 워크플로에 사용할 액션을 찾을 수 있어요.
액션에 대한 자세한 내용은 자동화 재사용하기를 참고하세요.
러너
러너(runner) 는 트리거될 때 워크플로를 실행하는 서버예요. 각 러너는 한 번에 단일 작업 을 실행할 수 있어요. GitHub은 워크플로 를 실행할 Ubuntu Linux, Microsoft Windows, macOS 러너를 제공해요. 각 워크플로 실행은 새로 프로비저닝된 깨끗한 가상 머신에서 실행돼요.
GitHub은 더 큰 구성으로 제공되는 더 큰 러너(larger runners)도 제공해요. 자세한 내용은 더 큰 러너 사용하기를 참고하세요.
다른 운영 체제가 필요하거나 특정 하드웨어 구성이 필요하다면 자체 러너를 호스팅할 수 있어요.
자체 호스팅 러너에 대한 자세한 내용은 자체 호스팅 러너 관리하기를 참고하세요.
다음 단계
GitHub Actions는 애플리케이션 개발 프로세스의 거의 모든 측면을 자동화하는 데 도움이 될 수 있어요. 시작할 준비가 되셨나요? GitHub Actions로 다음 단계를 밟는 데 도움이 되는 유용한 리소스는 다음과 같아요:
- GitHub Actions 워크플로를 만들려면 워크플로 템플릿 사용하기를 참고하세요.
- 지속적 통합(CI) 워크플로는 코드 빌드 및 테스트를 참고하세요.
- 패키지 빌드 및 게시는 패키지 게시를 참고하세요.
- 프로젝트 배포는 서드 파티 플랫폼에 배포하기를 참고하세요.
- GitHub에서 작업과 프로세스를 자동화하려면 GitHub Actions로 작업 관리하기를 참고하세요.
- GitHub Actions의 더 복잡한 기능을 보여주는 예시는 워크플로가 수행할 작업 선택하기를 참고하세요. 이 상세 예시들은 러너에서 코드를 테스트하고, GitHub CLI에 접근하고, 동시성과 테스트 매트릭스 같은 고급 기능을 사용하는 방법을 설명해요.
- 워크플로 자동화와 GitHub Actions로 개발 가속화에 대한 숙련도를 인증받으려면 GitHub Certifications로 GitHub Actions 인증서를 취득하세요. 자세한 내용은 GitHub Certifications 소개를 참고하세요.
[!NOTE] 리포지토리 내용에 대한 맥락적 판단이 필요한 자동화에는 전통적인 GitHub Actions 워크플로 대신 자연어로 에이전틱 워크플로를 작성할 수도 있어요. 자세한 내용은 첫 번째 에이전틱 워크플로와 GitHub Agentic Workflows 만들기를 참고하세요.