GitHub Actions 시작하기

GitHub Actions 시작하기

Web
GitHub Actions 시작하기
Author

gabriel yang

Published

July 24, 2024

GitHub Actions 시작하기: CI/CD 파이프라인 구축 가이드

GitHub Actions는 GitHub 저장소에서 CI/CD(Continuous Integration/Continuous Deployment) 파이프라인을 쉽게 설정하고 관리할 수 있는 강력한 도구입니다. 이 블로그 글에서는 GitHub Actions를 사용하여 CI/CD 파이프라인을 구축하는 방법을 단계별로 설명하겠습니다.

1. GitHub Actions 소개

GitHub Actions는 코드를 빌드, 테스트, 배포하는 워크플로우를 자동화할 수 있는 기능을 제공합니다. GitHub 저장소에 push, pull request, issue 등 이벤트가 발생할 때마다 워크플로우를 트리거할 수 있습니다.

2. 기본 용어 이해하기

  • 워크플로우(Workflow): 하나 이상의 작업으로 구성된 자동화 프로세스.
  • 잡(Job): 워크플로우 내에서 실행되는 개별 단위 작업.
  • 스텝(Step): 잡 내에서 실행되는 명령어 또는 액션.
  • 액션(Action): 재사용 가능한 커뮤니티 또는 사용자 정의 스크립트.

3. 워크플로우 파일 생성

워크플로우 파일은 .github/workflows 디렉토리에 YAML 형식으로 저장됩니다. 예를 들어, ci.yml 파일을 생성하여 기본적인 CI 설정을 할 수 있습니다.

예제: 간단한 Node.js 프로젝트 CI 설정

name: Node.js CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

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

설명:

  • name: 워크플로우의 이름. 이 이름은 GitHub Actions 인터페이스에서 워크플로우를 식별하는 데 사용됩니다.
  • on: 워크플로우가 트리거되는 이벤트. 워크플로우를 트리거하는 이벤트를 정의합니다. 이 예제에서는 push와 pull_request 이벤트를 사용하여 워크플로우를 트리거합니다.
  • jobs: 워크플로우 내에서 실행되는 작업들.
  • runs-on: 작업이 실행될 환경(예: ubuntu-latest). 작업이 실행될 환경을 지정합니다. 이 예제에서는 ubuntu-latest를 사용하여 최신 버전의 우분투에서 작업이 실행됩니다.
  • steps: 작업 내에서 실행되는 단계들. 작업 내에서 실행될 단계(Step)들을 정의합니다. 단계는 순차적으로 실행됩니다.
    • uses: 특정 액션을 사용하는 단계. GitHub에서 제공하는 액션을 사용합니다.
      • actions/checkout@v2는 GitHub 저장소를 체크아웃하는 액션입니다.
      • actions/setup-node@v2는 Node.js를 설정하는 액션입니다.
    • with: 액션에 전달할 매개변수를 정의합니다. 여기서는 node-version: ’14’를 사용하여 Node.js 버전 14를 설정합니다.
    • run: 명령어를 실행하는 단계.

4. 고급 설정

캐싱 사용

반복적인 의존성 설치를 빠르게 하기 위해 캐싱을 사용할 수 있습니다.

    - name: Cache dependencies
      uses: actions/cache@v2
      with:
        path: ~/.npm
        key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
        restore-keys: |
          ${{ runner.os }}-node-

매트릭스 전략

여러 환경에서 테스트를 실행하기 위해 매트릭스 전략을 사용할 수 있습니다.

매트릭스 전략은 CI/CD 워크플로우에서 여러 가지 설정 조합을 테스트할 때 유용한 기능입니다. 이를 통해 코드가 다양한 환경에서 제대로 작동하는지 확인할 수 있습니다. 매트릭스 전략을 사용하면 여러 버전의 언어, 운영 체제, 그리고 기타 종속성 조합에서 빌드와 테스트를 자동화할 수 있습니다.

매트릭스 전략은 jobs..strategy.matrix 속성을 사용하여 설정합니다. 매트릭스의 각 키는 여러 값을 가질 수 있으며, GitHub Actions는 각 조합에 대해 잡을 실행합니다.

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12, 14, 16]

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

    - name: Set up Node.js
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

배포 설정

CI 파이프라인이 성공하면 자동으로 배포할 수 있습니다.

jobs:
  deploy:
    runs-on: ubuntu-latest
    needs: build

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

    - name: Deploy to server
      run: |
        ssh user@your-server 'bash -s' < deploy-script.sh
      env:
        SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}

5. GitHub Secrets 사용

배포 시 민감한 정보(예: API 키, 서버 비밀번호)는 GitHub Secrets를 통해 관리할 수 있습니다.

  1. 저장소 페이지로 이동.
  2. Settings 탭 선택.
  3. Secrets 메뉴에서 New repository secret 버튼 클릭.
  4. 이름과 값을 입력하고 저장.

마무리

이제 GitHub Actions를 사용하여 간단한 CI/CD 파이프라인을 구축할 수 있게 되었습니다. GitHub Actions는 매우 유연하고 강력한 도구로, 다양한 요구사항에 맞게 확장할 수 있습니다. 더 많은 정보를 원하시면 GitHub Actions 공식 문서를 참고하세요.