GitHub Actions 이해하기

GitHub Actions 이해하기

GitHub Actions의 핵심 개념과 필수 용어의 기초를 함께 알아볼게요.

출처: Understanding GitHub Actions

본문

개요

GitHub Actions는 빌드, 테스트, 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 전달(CI/CD) 플랫폼이에요. 리포지토리의 모든 풀 리퀘스트를 빌드·테스트하는 워크플로를 만들거나, 병합된 풀 리퀘스트를 프로덕션에 배포하는 워크플로를 만들 수 있어요.

GitHub Actions는 DevOps를 넘어, 리포지토리에서 다른 이벤트가 발생할 때 워크플로를 실행할 수 있게 해줘요. 예를 들어 누군가 리포지토리에 새 이슈를 만들 때마다 적절한 라벨을 자동으로 추가하는 워크플로를 실행할 수 있어요.

GitHub은 워크플로를 실행할 Linux, Windows, macOS 가상 머신을 제공하고, 자체 데이터 센터나 클라우드 인프라에서 자체 호스팅 러너를 호스팅할 수도 있어요.

GitHub Actions의 구성 요소

리포지토리에서 풀 리퀘스트가 열리거나 이슈가 생성되는 것 같은 이벤트(event) 가 발생할 때 GitHub Actions 워크플로(workflow) 가 트리거되도록 구성할 수 있어요. 워크플로는 순차적으로 또는 병렬로 실행될 수 있는 하나 이상의 작업(job) 을 포함해요. 각 작업은 자체 가상 머신 러너(runner) 나 컨테이너 안에서 실행되며, 정의한 스크립트를 실행하거나 워크플로를 단순화할 수 있는 재사용 가능한 확장인 액션(action) 을 실행하는 하나 이상의 단계(step) 를 가져요.

이벤트가 러너 1을 트리거해 작업 1을 실행하고, 작업 1이 러너 2를 트리거해 작업 2를 실행하는 다이어그램. 각 작업은 여러 단계로 나뉘어 있음.

워크플로

워크플로(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로 다음 단계를 밟는 데 도움이 되는 유용한 리소스는 다음과 같아요:

[!NOTE] 리포지토리 내용에 대한 맥락적 판단이 필요한 자동화에는 전통적인 GitHub Actions 워크플로 대신 자연어로 에이전틱 워크플로를 작성할 수도 있어요. 자세한 내용은 첫 번째 에이전틱 워크플로GitHub Agentic Workflows 만들기를 참고하세요.

더 알아보기 (Learn more)