GitHub Actions

handa·2025년 7월 29일
post-thumbnail

GitHub Actions는 GitHub 저장소 안에서 직접 코드 빌드, 테스트, 배포 등 각종 자동화 작엄(CI/CD)을 수행할 수 있는 워크플로우 자동화 도구입니다. 코딩, 협업, 배포 등 모든 개발 프로세스를 한 번에 자동화할 수 있는 DevOps 서비스입니다.

GitHub Actions란?

  • GitHub 저장소에서 코드 변경 이벤트(push, PR, Release 생성 등) 발생 시, 자동으로 빌드/테스트/배포 등 지정한 작업을 실행합니다.
  • YAML 파일로 워크플로우를 정의합니다.
  • 별도의 외부 서비스를 사용하지 않아도 GitHub만으로 쉽고 강력한 CI/CD 구축이 가능합니다.

핵심 구성요소(Actions 핵심 개념)

용어설명
Workflow하나 이상의 작업(Job)으로 구성된 자동화 프로세스. 이벤트에 의해 트리거됨.
YAML 파일로 .github/workflows/ 폴더에 위치.
Event워크플로우를 실행하는 조건/트리거. (예: push, pull_request, schedule 등)
Job한 번에 실행되는 작업 단위. 여러 Step을 포함.
다른 Job과 병렬 또는 순차 실행 가능.
StepJob 내의 실행 명령/단계. 직접 커맨드 실행하거나 Action(재사용 코드) 호출.
Action워크플로우에서 재사용 가능한 작은 작업 코드 묶음.
공식/서드파티 마켓플레이스에서 활용 가능.
Runner워크플로우(Job)를 실행시키는 머신.
GitHub가 관리하는 호스팅(ubuntu, windows), 직접 설치(Self-hosted) 모두 지원.

기본 동작 프로세스

  1. 저장소에 .github/workflows/ 폴더 생성, 내부에 .yml 파일 생성

  2. 각종 이벤트(on)에 따라 Workflow가 자동 트리거됨 (예: Push될 때마다, 혹은 일정마다 등)

  3. Job과 Step 단위로 명령을 순서대로 실행

  4. 성공/실패 로그 및 결과 Action 탭에서 실시간 확인

실제 Workflow 코드 예제

name: CI/CD Pipeline

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

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

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

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

  deploy:
    runs-on: ubuntu-latest
    needs: build
    if: github.ref == 'refs/heads/main'
    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Deploy
        run: ./deploy.sh # 실제 배포 스크립트 실행
  • 설명
    • push & pull_request 이벤트 발생 시 워크플로우 시작
    • build Job에서 코드 체크아웃 → 노드 환경 세팅 → 패키지 설치 → 테스트
    • deploy Job에서 테스트가 성공하면 main 브랜치에만 배포 스크립트 실행

다양한 활용 사례

  • CI/CD 파이프라인: 소스코드 변경 시 자동 테스트/배포

  • 정적 분석/린트: 코딩 스타일, 보안, 품질 체크 자동화

  • 정기 작업: 일일/주간 빌드, 문서 자동 생성, 의존성 업데이트

  • 외부 서비스 연동: Slack/Discord 알림, AWS/GCP 배포, Docker 이미지 빌드 등

  • PR 리뷰 자동화: PR 생성 시 자동 코드 체크, 리뷰, 태그, 머지 등 자동화 작업

주요 설정/운영 팁

  • Secrets 관리: API Key, 비밀번호 등 민감 정보는 반드시 repository > Settings > Secrets에서 관리 후 워크플로우 내에서 secrets.XXX로 사용

  • 실행환경: 필요한 OS/언어 버전(runs-on: ubuntu-latest, windows-latest 등) 명시

  • 조건문 if: Job, Step 조건부 실행(if: 구문)

  • 디버깅/로그: 실패한 작업은 Actions 탭에서 상세 로그 확인

  • Marketplace 탐색: 공식/서드파티 액션을 마켓플레이스(https://github.com/marketplace/actions)에서 바로 사용

실전 예시: Slack 알림, Docker 배포 등

아래와 같이 다양한 액션을 추가하여 손쉽게 배포, 알림, 자동 태스크를 설정 가능!

- name: Slack Notification
  uses: 8398a7/action-slack@v3
  with:
    status: ${{ job.status }}
  env:
    SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
- name: Build Docker image
  run: docker build -t my-image:latest .

작성시 유의사항

  • 이벤트와 브랜치 정확히 지정: 불필요한 트리거 방지

  • Secrets는 반드시 암호관리로, 코드에 노출 금지

  • 실행 환경의 일관성(OS, 언어 버전)

  • 에러 로그 적극 활용해서 디버깅

profile
진짜 해보자

0개의 댓글