GitHub Actions?

전준연·2025년 9월 27일
4
post-thumbnail

목적

오늘은 최근 관심이 생긴 CI/CD 공부를 겸해, 개발자라면 알아두면 좋은 GitHub Actions와 CI/CD에 대해 알아보려고 한다.

CI/CD?

CI/CD는 지속적 통합(Continuous Integration)지속적 제공(Continuous Delivery) 또는 지속적 배포(Continuous Deployment)의 약자로, 소프트웨어 개발과 배포 과정을 자동화하여 개발 주기를 단축하고 효율성을 높이며 오류를 줄이는 것을 목표로 한다.

개발자가 변경한 코드를 자주 통합하고, 자동화된 테스트를 거쳐 신속하고 안정적으로 배포함으로써 고품질 소프트웨어를 사용자에게 빠르게 제공할 수 있다.

GitHub Actions?

그렇다면 오늘의 주인공, GitHub Actions는 뭘까?

간단히 설명하면, GitHub Actions는 GitHub에서 제공하는 워크플로 자동화 플랫폼이다. 코드 push, Pull Request 등 특정 이벤트가 발생했을 때 빌드, 테스트, 배포와 같은 소프트웨어 개발 작업을 자동으로 처리해준다.

주요 개념 및 구성 요소

GitHub Actions는 크게 6가지 요소로 이루어져 있다.

  • 워크플로 (Workflow)
    GitHub Actions의 기본 단위로, 특정 이벤트에 의해 트리거되어 하나 이상의 작업(Job)을 수행하는 자동화된 프로세스이다. 일반적으로 .github/workflows 폴더에 YAML 파일로 정의된다.

  • 이벤트 (Event)
    워크플로를 실행시키는 트리거다. 예를 들어 push, pull_request 같은 이벤트가 발생하면 워크플로가 실행된다.

  • 작업 (Job)
    워크플로 내의 실행 단위로, 하나 이상의 스텝(Step)으로 구성된다. 여러 작업을 동시에 또는 순차적으로 실행할 수 있다.

  • 스텝 (Step)
    작업 내에서 실행되는 명령 단위다. 셸 명령을 실행하거나 액션을 호출할 수 있으며, 동일한 러너 환경에서 실행된다.

  • 액션 (Action)
    워크플로에서 재사용할 수 있는 개별 작업 단위다. 미리 정의된 액션을 사용할 수도 있고 직접 만들 수도 있으며, GitHub Marketplace에서 다양한 액션을 찾아 활용할 수 있다.

  • 러너 (Runner)
    GitHub Actions가 작업을 실행하는 환경(가상 머신)이다. 워크플로 내의 작업은 러너에서 수행된다.

작동 방식

  1. 이벤트 발생
    사용자가 저장소에 코드를 푸시하거나 풀 리퀘스트를 생성하는 등, 정의된 이벤트가 발생한다.

  2. 워크플로 트리거
    해당 이벤트와 연결된 워크플로가 실행된다.

  3. 작업 실행
    워크플로 내에서 정의된 Job이 순서대로 또는 병렬로 실행된다.

  4. 액션 수행
    각 Job의 Step에서 셸 명령을 실행하거나, 미리 정의된 액션을 호출해 특정 기능을 수행한다.

  5. 결과 확인
    실행 결과는 GitHub 저장소에서 확인할 수 있으며, 이를 통해 피드백을 받을 수 있다.

직접 해보자

아래 코드는 GPT에게 "현재 내 프로젝트 환경에 맞게, 코드가 push되거나 PR(Pull Request)이 열릴 때 자동으로 실행되어 Node.js 프로젝트를 빌드하고 테스트하는 워크플로우를 만들어줘"라고 요청해서 생성한 코드다.

# .github/workflows/ci.yml
# GitHub Actions CI 파이프라인 정의
name: CI Pipeline  # 워크플로우 이름

# 워크플로우가 실행될 이벤트 정의
on:
  push:             # main 브랜치에 코드가 push될 때 실행
    branches: [main]
  pull_request:     # main 브랜치로 PR(Pull Request)이 생성/업데이트될 때 실행
    branches: [main]

# 워크플로우에서 수행할 job 정의
jobs:
  build-and-test:                  # job 이름
    runs-on: ubuntu-latest         # 실행 환경: GitHub가 제공하는 최신 Ubuntu VM

    steps:                         # job 내 단계(step) 정의
      - name: Checkout repository  # 단계 이름: 저장소 코드 가져오기
        uses: actions/checkout@v4 # GitHub 공식 액션: 현재 저장소 코드를 VM에 체크아웃

      - name: Set up Node.js        # 단계 이름: Node.js 설치 및 환경 설정
        uses: actions/setup-node@v4 # GitHub 공식 액션: Node.js 환경 세팅
        with:
          node-version: 18          # 설치할 Node.js 버전 지정

      - name: Install dependencies  # 단계 이름: 의존성 패키지 설치
        run: npm install            # package.json에 정의된 npm 패키지 설치

      - name: Run linting           # 단계 이름: 코드 스타일/문법 검사
        run: npm run lint           # npm script로 lint 실행 (ESLint 등 설정 필요)

      - name: Run build             # 단계 이름: 프로젝트 빌드
        run: npm run build          # npm script로 빌드 실행 (예: Webpack, Vite 등)

위 파일을 .github/workflows/ 경로에 넣고 main 브랜치에 push하면, 앞으로 main 브랜치로 push 이벤트가 발생하거나 PR이 열릴 때마다 CI 워크플로우가 자동으로 실행된다.

실제 실행 결과는 여기에서 확인할 수 있다.

마무리

오늘은 그동안 개념만 간단히 알고 있던 CI/CD와 GitHub Actions에 대해 알아보았다. 글이 다소 짧았지만, 프론트엔드 개발자라도 CI/CD 개념과 간단한 CI 워크플로우 작성 정도는 익혀두면 큰 도움이 될 것 같다.

0개의 댓글