DevOps 환경에서 CI/CD(지속적 통합 및 지속적 배포) 파이프라인은 소프트웨어 개발 및 배포 프로세스를 자동화하여 효율성을 극대화하는 중요한 요소입니다. 이번 포스트에서는 GitHub Actions를 활용하여 CI/CD 파이프라인을 구축하는 방법에 대해 알아보겠습니다.

GitHub Actions 소개

GitHub Actions는 GitHub에서 제공하는 CI/CD 솔루션으로, 코드가 변경될 때마다 자동으로 빌드, 테스트, 배포 등의 작업을 수행할 수 있습니다. 이 기능을 사용하면 다양한 워크플로를 정의하고, 이를 통해 코드 품질을 높이며 배포 시간을 단축할 수 있습니다.

GitHub Actions 설정하기

  1. 레포지토리 생성
  2. GitHub에 로그인 후 새로운 레포지토리를 생성합니다.

  3. 워크플로 파일 생성
  4. 레포지토리의 .github/workflows 디렉토리 내에 ci.yml 파일을 생성합니다. 이 파일에서 CI/CD 프로세스를 정의할 것입니다.

  5. 기본적인 워크플로 작성
다음은 Node.js 애플리케이션을 빌드하고 테스트하는 기본적인 워크플로의 예입니다.
   name: CI Pipeline

   on:
     push:
       branches:
         - main
     pull_request:
       branches:
         - main

   jobs:
     build:
       runs-on: ubuntu-latest

       steps:
         - name: Checkout code
           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

위의 구성에서, 워크플로는 main 브랜치에 푸시되거나 풀 리퀘스트가 생성될 때 실행됩니다. 각각의 단계는 코드 체크아웃, Node.js 설정, 의존성 설치 및 테스트 실행으로 구성되어 있습니다.

배포 단계 추가하기

CI 프로세스가 완료된 후, 배포 단계도 추가할 수 있습니다. 예를 들어, AWS에 배포하는 경우 다음과 같은 코드를 추가할 수 있습니다.

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

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

         - name: Deploy to AWS
           uses: einaregilsson/ecs-deploy@v1
           with:
             cluster: your-cluster-name
             service: your-service-name
             task-definition: your-task-definition
             region: your-aws-region
             wait-for-service-stability: true
           env:
             AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
             AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

여기서 needs: build는 배포 작업이 빌드 작업이 완료된 후에만 실행되도록 합니다. AWS에 배포하기 위해서는 IAM 사용자 생성 후 액세스 키를 Secrets에 추가해야 합니다.

GitHub Secrets 활용하기

AWS 자격 증명과 같은 민감한 정보는 GitHub Secrets에 저장해야 합니다. 레포지토리의 Settings > Secrets and variables > Actions에서 새로운 시크릿을 추가할 수 있습니다. AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY를 추가하여 위에서 사용한 환경 변수로 참조합니다.

테스트 및 모니터링

워크플로를 설정한 후, 커밋을 푸시하거나 풀 리퀘스트를 생성하면 CI/CD 파이프라인이 자동으로 실행됩니다. GitHub의 "Actions" 탭에서 실행 결과를 확인할 수 있으며, 각 단계의 로그를 통해 오류를 디버깅할 수 있습니다.

마무리

GitHub Actions를 사용하여 간단하게 CI/CD 파이프라인을 구축하는 방법을 살펴보았습니다. 이 튜토리얼을 통해 기본적인 워크플로를 설정하고, 배포 단계까지 포함한 자동화된 프로세스를 구축할 수 있었습니다. CI/CD 파이프라인을 통해 소프트웨어 배포의 효율성을 높이고, 개발 팀의 생산성을 향상시킬 수 있습니다. 다양한 기능과 설정을 활용하여 자신만의 맞춤형 파이프라인을 구축해 보세요!