본문 바로가기
DevOps

GitHub Actions: 소개 및 가이드

by Yoon_estar 2024. 5. 25.
728x90
반응형

GitHub Actions는 GitHub에 통합된 강력한 CI/CD 도구로, GitHub 저장소에서 직접 워크플로를 자동화할 수 있습니다. 코드를 빌드, 테스트 또는 배포하는 경우 GitHub Actions는 이러한 프로세스를 효율적으로 자동화할 수 있습니다. 이 가이드에서는 GitHub Actions 사용에 대한 기본 사항, 주요 개념 및 실제 예를 다룹니다.

GitHub 액션이란 무엇인가요?

GitHub Actions를 사용하면 GitHub 저장소의 이벤트를 기반으로 워크플로를 자동화할 수 있습니다. 푸시, 풀 요청 또는 일정 기반 크론 작업과 같은 다양한 이벤트에 의해 트리거될 수 있습니다. 다음은 몇 가지 일반적인 사용 사례입니다.

  • 코드 테스트: 풀 요청이 생성되면 자동으로 테스트를 실행합니다.
  • CI/CD: 변경 사항이 기본 분기에 푸시되면 코드를 빌드하고 배포합니다.
  • 예약된 작업: 특정 간격으로 일상적인 유지 관리 작업을 수행합니다.

GitHub Actions의 주요 개념

작업 흐름

워크플로는 저장소의 '.github/workflows' 디렉터리에 있는 YAML 파일에 의해 정의된 자동화된 프로세스입니다. 특정 작업을 실행하는 하나 이상의 작업으로 구성됩니다.

키 포인트:

  • 이벤트 기반: 워크플로는 특정 이벤트(예: on: push, on: pull_request)에 의해 트리거됩니다.
  • YAML 구성: 워크플로는 가독성과 구성 용이성을 위해 YAML 형식으로 정의됩니다.
  • 일정: 크론 구문(예: 'on: Schedule')을 사용하여 워크플로를 예약할 수 있습니다.

Job

작업은 GitHub Actions 실행자가 실행하는 작업 단위입니다. 각 작업은 가상 환경에서 실행되며 다른 작업에 종속될 수 있습니다.

키 포인트:

  • 독립 실행: 작업은 기본적으로 독립적으로 실행되지만 다른 작업의 결과에 따라 달라지도록 구성할 수 있습니다.
  • 병렬 실행: 여러 작업을 병렬로 실행할 수 있어 워크플로 프로세스 속도가 빨라집니다.

Steps

단계는 작업 내에서 순차적으로 실행되는 개별 작업입니다. 각 단계에서는 명령을 실행하거나 미리 정의된 작업을 사용할 수 있습니다.

키 포인트:

  • 명령 및 스크립트: 단계에서는 run 키워드를 사용하여 셸 명령이나 스크립트를 실행할 수 있습니다.
  • 작업: 단계에서는 마켓플레이스에 정의된 작업이나 'uses' 키워드를 사용하는 사용자 지정 작업을 사용할 수 있습니다.

Actions

액션은 특정 작업을 수행하는 재사용 가능한 코드 단위입니다. 누구든지 만들고 GitHub Marketplace를 통해 공유할 수 있습니다.

키 포인트:

  • 재사용성: 여러 작업 흐름에서 작업을 재사용할 수 있습니다.
  • 커뮤니티 및 사용자 정의 작업: 커뮤니티에서 만든 작업을 사용하거나 직접 만들 수 있습니다.

Runners

러너는 워크플로를 실행하는 서버입니다. GitHub는 호스팅 실행기를 제공하지만 자체 호스팅 실행기를 구성할 수도 있습니다.

키 포인트:

  • GitHub 호스팅 실행기: GitHub에서 관리되며 다양한 환경을 제공합니다.
  • 자체 호스팅 실행기: 사용자가 관리하며 환경에 대한 더 많은 제어 기능을 제공합니다.

작업 흐름 예시

다음은 코드가 저장소에 푸시될 때마다 Node.js 프로젝트에서 테스트를 실행하는 GitHub Actions 워크플로의 간단한 예입니다.

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

CI/CD에 GitHub 작업 사용

GitHub Actions는 CI/CD 파이프라인 자동화에 탁월합니다. 지속적인 통합 및 배포에 이를 사용하는 방법은 다음과 같습니다.

지속적 통합(CI)

CI에는 변경 사항이 있을 때마다 코드베이스를 자동으로 테스트하여 새로운 변경 사항이 기존 코드를 손상시키지 않도록 보장합니다.

예:

name: Node.js CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'
    - run: npm install
    - run: npm test

지속적 배포(CD)

CD에는 모든 테스트를 통과한 후 애플리케이션을 자동으로 배포하는 작업이 포함됩니다.

예:

name: CD

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Deploy to server
      run: |
        scp -r . user@server:/path/to/deploy
        ssh user@server 'pm2 restart all'

결론

GitHub Actions는 GitHub 저장소에서 직접 워크플로를 자동화하기 위한 다재다능하고 강력한 도구입니다. 핵심 개념을 이해하고 실제 사례를 활용함으로써 CI/CD 프로세스를 간소화하고 코드 품질을 향상하며 팀 생산성을 높일 수 있습니다.

반응형